일반 하드 디스크의 I/O 스케줄러

일반 하드 디스크의 I/O 스케줄러

커널에서 I/O 스케줄러의 최선의 선택을 찾는 것은 나에게 어려운 일이었습니다. 처음에는 그것이 주관적이며 사용하는 파일 시스템에 따라 다르다는 것을 배웠습니다.

No-opSSD(Solid State Drive)를 반드시 사용해야 하는 것으로 알고 있습니다 .

제가 알고 싶은 것은 Ext4 및 NTFS 파일 시스템(MBR 스타일)을 포함하는 일반(회전) HDD에 대한 최선의 선택입니다.

GPT 또는 MBR이 선택에 영향을 미치나요?

답변1

솔리드 스테이트 드라이브나 SSD에 대해서는 어떤 조치도 취하지 않아야 한다는 것을 알고 있습니다.

불필요한. 사람들이 왜 SSD를 다른 스케줄러의 장점이 필요하지 않은 특수한 사례로 계속 취급하는지 모르겠습니다. 회전하는 디스크가 있다는 것은 병합 요청이 더 중요하다는 것을 의미합니다. 병합 요청은 스케줄러가 수행하는 작업 중 하나일 뿐입니다.

CFQ, 마감일 등은 그 이상의 역할을 합니다. 예를 들어 CFQ를 사용하면 ionice다른 프로세스보다 특정 프로세스에 우선순위(pass)를 부여할 수 있고 Deadline을 사용하면 대기 시간을 보장할 수 있습니다. 이들 중 하나는 여전히 SSD와 관련이 있습니다.

회전하는 디스크를 제거한다는 것은 스케줄러 결정이 단순히 요청을 병합하는 것이 아니라 디스크와 대역폭을 나누는 방법에 대해 더 많이 결정할 수 있음을 의미합니다.

편집하다:/sys/block/sdXX/queue/nomerges또한 내 시스템에서는 (스케줄러와 상관없이) 조정 가능한 매개변수를 사용하여 병합을 끌 수 있다는 점도 지적하겠습니다 . Deadline은 프런트엔드 병합을 비활성화하기 위한 조정 가능한 매개변수도 제공합니다.

제가 알고 싶은 것은 ext4 및 NTFS 파일 시스템이 포함된 일반(회전) 하드 드라이브에 대한 최선의 선택입니다. (MBR 스타일).

스케줄러 선택은 사용 중인 파일 시스템에 전적으로 의존하지 않을 수도 있습니다. 어쨌든 디렉토리와 자주 사용되는 파일은 파일 시스템 캐시에 저장됩니다. 어느 쪽이든, 어떤 스케줄러도 하나의 파일 시스템(XFS, ext3, ext4+extents, reiserfs 등)을 다른 것보다 더 좋게 만드는 기능을 갖고 있지 않은 것 같습니다.

NTFS는 조각화되는 경향이 있으므로 더 작은 파일 시스템이 read_ahead_kb더 유리할 수 있습니다. 자신에게 적합한 시스템을 찾으려면 여러 가지 실험을 해봐야 합니다. 기본적으로 볼륨이 심하게 조각난 경우 인접한 데이터를 추출하면 합법적인 요청에 사용할 수 있는 대역폭이 차단될 수 있습니다.

GPT/MBR은 이 결정에 전혀 영향을 미치지 않습니다.

관련 정보