Abstract
Native Command Queueing is a technology to maximize throughput of disk system by reordering requests in its command queue. Recent S-ATA 2 standard specifies a protocol for the purpose of dealing with NCQ feature, making most vendors implementing it in their disk devices. However, the new feature, NCQ, may lead to information gap between OS and disk drive. 05 considers that disk will service I/O requests in the order as OS has dispatched. Unfortunately, it isn't true any more since NCQ would simply ignore the policy of OS and reorder the sequence OS has expected. Let us define the term as expectation-discord. Due to the discord, serious performance anomalies or starvation of requests may occur in I/O subsystem. In this paper, we confirm that the expectation-discord actually brings about starvation of requests. We propose a solution to settle it. Our solution is very simple, effective, cheap(not requiring any hardware modification) and portable across various OS. Experimental results show that our solution can balance throughput and response time very well.
Native Command Queueing(이하 NCQ)는 디스크 드라이브 내의 명령어 큐에 존재하는 요청들의 순서를 재조정하여 throughput을 최대화하는 기술이다. NCQ는 최신 S-ATA 2의 표준 스펙에 포함되었고, 다수의 디스크 벤더들이 자사의 디스크 모델에 이를 구현하고 있다. 하지만 이 새로운 기술이 운영체제와 디스크 드라이브간의 정보 차이를 유발할 가능성이 있다. 운영체제는 자신이 지시한 순서대로 디스크가 입출력 요청을 서비스할 것이라 생각하지만, NCQ가 지원되는 디스크는 이를 무시하고 throughput을 최대화할 목적으로만 요청을 처리할 것이다. 이것을 기대 불일치라 부를 수 있다. 이로 인해 성능에 이상한 현상이 발생하거나, 입출력 요청이 심각하게 굶주릴 가능성이 있다. 본 논문에서는 기대 불일치로 인한 입출력 요청의 굶주림 현상을 실제로 확인하고, 이를 해결하기 위한 해결책을 제시한다. 이 해결책은 간단하고, 특별한 하드웨어의 추가나 변경을 요구하지 않으며, 이식성이 좋다. 이를 실험 결과를 통해 확인하도록 한다.