NVMe SSD를 위한 멀티-큐 블록 레이어 기반 입출력 자원 분배 기법
요약
다수의 사용자가 존재하는 클라우드 컴퓨팅 서비스에서 각 사용자의 요구사항에 맞게 시스템 자원을 효율적이고 공정하게 분배하는 것은 중요하다. 특히, 최근 NVMe SSD와 같은 고성능 멀티-큐 SSD가 클라우드 컴퓨팅에 적용되면서 다수의 사용자에게 입출력 대역폭을 낭비하지 않으면서도 정확하게 분배할 필요가 있다. 하지만, 기존 싱글-큐 구조에서 제안된 입출력 대역폭 분배 기법들은 멀티-큐의 병렬성을 고려하지 않기 때문에 NVMe SSD의 고성능을 충분히 활용할 수 없다. 대표적으로 BFQ 스케줄러의 스케줄링은 한 번에 하나의 프로세스 그룹을 선택하는 방식이기 때문에 멀티-큐의 이점을 활용하지 못한다. 이 문제를 해결하기 위해 본 논문에서는 프로세스 그룹마다 전용 입출력 요청 큐를 할당하고 입출력 요청을 처리할 때 토큰을 소모하는 방식으로 입출력 대역폭을 분배하는 스케줄러를 제안한다. 이 스케줄러는 전역적 동기화가 필요하지 않기 때문에 멀티-큐의 병렬성을 최대로 보장할 수 있다. 성능평가 결과, 입출력 가중치에 따라 대역폭을 정확하게 분배하면서도 NVMe SSD의 대역폭을 낭비없이 사용하여 기존 BFQ 스케줄러에 비해 최대 3.6 배 향상된 성능을 보였다. 두번째로 제안하는 기법은 다수의 SSD를 LVM을 통해 소프트웨어 RAID로 관리할 때, 입출력 가중치가 높은 프로세스 그룹이 상대적으로 빠른 SSD를 사용할 수 있도록 DM드라이버에서 리다이렉팅함으로써 전체 입출력 성능을 향상시키는 기법이다. 이 기법은 기존 DM 드라이버에 비해 최대 1.3배 이상 향상된 성능을 보였다.