![IO는 재할당된 작업의 성격에 따라 우선순위를 정합니까?](https://linux55.com/image/48331/IO%EB%8A%94%20%EC%9E%AC%ED%95%A0%EB%8B%B9%EB%90%9C%20%EC%9E%91%EC%97%85%EC%9D%98%20%EC%84%B1%EA%B2%A9%EC%97%90%20%EB%94%B0%EB%9D%BC%20%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84%EB%A5%BC%20%EC%A0%95%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
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 발생을 유발한 시간 조각을 계속 가져옵니다.