10개의 I/O 바인딩 작업과 1개의 CPU 바인딩 작업을 실행하는 시스템을 생각해 보세요. I/O 집약적 작업이 CPU 컴퓨팅에서 밀리초마다 I/O 작업을 실행하고 각 I/O 작업을 완료하는 데 10밀리초가 걸린다고 가정합니다. 또한 컨텍스트 전환 오버헤드가 0.1밀리초이고 모든 프로세스가 장기 실행 작업이라고 가정합니다.
라운드 로빈 스케줄러를 사용하고 시간 분할이 1밀리초인 경우 CPU 사용률을 어떻게 계산합니까?
이미 망쳤기 때문에 CPU 사용률을 계산하는 방법을 모르겠습니다. 나는 올바른 방향으로 나아가기를 바라면서 아래에서 실행과 타이밍에 대해 추론하려고 노력하고 있습니다.
CPU 집약적인 작업이 시작된다고 가정하면 다음과 같은 작업을 수행합니다.
[CPUB] -> [CS] -> [IO1] -> [CS] -> [IO2] -> ... -> [IO10] -> [CS] -> [CPUB]
1 0.1 1 0.1 1 1 0.1 1
CPU 집약적인 작업이 한 번 완료된 후 다시 실행을 시작할 때까지 필요한 시간은 1 ms for CPU-bound task
+ 10 CS, each 0.1 ms
+ 10 I/O-bound tasks, each 1 ms
= 입니다 1 + 10*0.1 + 10*1 = 12 ms
. 이 12밀리초 중 11밀리초는 유휴 상태로 소비됩니다(각 CS 및 I/O 집약적 작업 실행 중에 작업을 실행하는 스레드는 IO를 기다리며 차단되므로 CPU는 유휴 상태가 됩니다).
이게 다 맞나요? 어떻게 진행하나요?