web-dev-qa-db-ja.com

なぜCPUはIO(wa)に時間を費やしたのですか?

watop内)は、I/Oを待機する際のCPU時間を測定します。多くの記事はそれを言っています。

しかし、私は2つの知識ポイントに基づいて混乱しています:

  1. プロセスがシステムコールを使用してディスクを読み取る場合、プロセスはブロックされます。
  2. プロセスがブロックされている場合、CPUで実行するようにスケジュールすることはできません。

正しい?

CPUがI/Oで待機する時間がないようです...どうなりますか?

さらに読むために私にいくつかの本や記事をお勧めするなら、そんなに良いです。

18
HUA Di

CPUアイドルステータスは、iowaitidleの2つの異なる「サブ」状態に分けられます。

CPUがアイドル状態の場合、カーネルは、そのCPUから開始されたローカルディスクまたはリモートマウントディスク(NFS)に対して現在進行中のI/Oが少なくとも1つあるかどうかを判断します。存在する場合、CPUはiowait状態です。そのCPUから開始された進行中のI/Oがない場合、CPUはidle状態です。

したがって、iowaitはCPUがアイドル状態である時間の割合です[〜#〜] and [〜#〜]そのCPUから開始された少なくとも1つのI/Oが進行中です。

iowaitカウンターは、システムがより多くの計算作業を処理できることを示しています。 CPUがiowait状態にあるからといって、そのCPUで他のスレッドやプロセスを実行できないという意味ではありません。

したがって、iowaitは単なるアイドル時間の一種です。

22
chaos