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はアイドル状態になります)。
これはすべて正しいですか?どうやって進めますか?