IO는 재할당된 작업의 성격에 따라 우선순위를 정합니까?

IO는 재할당된 작업의 성격에 따라 우선순위를 정합니까?

CFQ IO 스케줄러는 우선 순위를 지원하지만 Deadline이 지원하는지 확실하지 않습니다(그렇지 않다고 생각합니다). 전제는 작업을 다시 실행할 때 완전히 공정한 스케줄러에서 CPU의 더 큰 부분을 차지한다는 것입니다. 이 작업은 아마도 더 자주 실행될 것이기 때문에 필요할 때 IO도 더 자주 호출될 것입니다. 그렇죠?

IO 스케줄러가 우선 순위를 지원하지 않는 경우에도 작업을 재할당할 때 작업이 더 많거나 적은 IO를 얻게 되는지 궁금합니다. 아니면 디스크/메모리 관리가 완전히 별개인가요?

답변1

디스크와 메모리 스케줄링은 완전히 다릅니다. IO 우선순위 스케줄러가 없으면 IO는 선착순으로 처리됩니다. 시스템이 IO 바인딩된 경우 모든 프로세스는 모든 프로세스가 I/O를 대기할 때까지 어느 정도 라운드 로빈 방식으로 실행됩니다. 프로세스의 좋은 우선순위는 스케줄링 빈도에 거의 영향을 미치지 않습니다.

최신 버전의 Linux에는 ionice기능이 추가되었습니다. 유휴 우선 순위는 헤드가 디스크의 다른 영역으로 이동할 때 발생할 수 있는 IO 저하를 방지하고 다른 프로세스의 쓰기를 지연시키도록 설계되었습니다.

I/O 바인딩 프로세스를 재할당해도 평균 로드가 CPU 수를 초과하지 않는 한 I/O 속도가 크게 줄어들 가능성은 없습니다. 사용되지 않은 CPU 주기를 사용할 수 있는 경우 I/O 속도를 일반 우선 순위 수준에 가깝게 만들 수 있을 만큼 프로세스를 자주 예약할 수 있습니다.

최신 Linux 커널은 아직 IO 우선 순위가 설정되지 않은 프로세스의 IO 우선 순위를 수정합니다. 40개의 CPU 우선순위는 8개의 IO 우선순위에 매핑되므로 IO 우선순위를 변경하려면 상당한 변경이 필요할 수 있습니다.

I/O 집약적 프로세스 우선순위 이상으로 실행되는 CPU 집약적 프로세스가 많으면 I/O 속도가 느려질 수 있습니다. 프로세스는 I/O 발생을 유발한 시간 조각을 계속 가져옵니다.

관련 정보