IO 스케줄러에서 scsi 하위 수준 드라이버로 IO를 제한하는 방법

IO 스케줄러에서 scsi 하위 수준 드라이버로 IO를 제한하는 방법

IO 스케줄러의 기본 대기열 깊이는 128입니다. 블록 장치의 대기열 깊이는 기본적으로 32입니다. IO가 버퍼링되는 곳. IO 스케줄러가 모든 IO를 scsi 하위 수준 드라이버로 보내고 드라이버가 IO를 버퍼링하는지 여부입니다. 아니면 다른 곳에서 제한이 있습니다.

답변1

IO 스케줄러할 수 있는"작업을 절약하지 않음"입니다. 즉, IO를 즉시 보내지 않도록 선택할 수 있습니다. "idling"이라는 IO 스케줄링 기술이 있습니다. 이는 회전 디스크(예: SSD가 아닌)에 특히 유용합니다. CFQ 및 BFQ 스케줄러는 모두 유휴 상태를 사용합니다.


또한 write() 호출은 페이지 캐시에 버퍼링된 다음 IO 요청으로 다시 기록될 수 있다는 점을 명심하세요. 블록 디바이스 큐 아래에는 디바이스 쓰기 캐시가 있을 수 있습니다. 그것은 모두 매우 복잡하고 모든 종류의 이상한 동작으로 이어집니다. :-).

모든 블록 장치의 기본 대기열 깊이가 32인 것은 아닙니다. 이는 SATA NCQ의 일반적인 대기열 깊이일 뿐입니다. SCSI TCQ 장치는 더 많은 것을 허용합니다. 적어도 이것이 표준입니다. (NVMe 장치는 확실히 더 많은 것을 허용할 수 있으며 여러 병렬 대기열을 가질 수도 있습니다).

관련 정보