web-dev-qa-db-ja.com

LinuxでのCPU I / O待機の評価

IOの待機を確認するためにtopを実行すると、次の数値が得られます。

Cpu(s):  6.7%us,  1.4%sy,  1.2%ni, 85.5%id,  5.0%wa,  0.0%hi,  0.3%si,  0.0%st

これらの数値(%us〜=%wa)を見ると、次のことを意味していますか?

  1. 動作しているCPUプロセスとほぼ同じ数のCPUプロセスが待機していますか? (=>悪い)
  2. 作業プロセスは実行計画の5.0%を待っていますか? (=>この場合は大丈夫です)
  3. 他の何か
6
Toto

これらの数値を評価するときは注意が必要です。

  1. IOWaitは関連していますが、必ずしもディスクアクティビティと直線的に相関しているわけではありません。
  2. CPUの数は、割合に影響します。
  3. 高いIOWait(アプリケーションによって異なります)は必要に応じては問題を示していません。あるいは、小さなIOWaitが問題を引き起こすかもしれません。基本的には、どのタスクが待機しているかに要約されます。

このコンテキストでのIOWaitは、すべての実行可能なタスクがIO操作の実行を待機していたために、CPU(またはすべてのCPUS)がアイドル状態であった一定期間の時間の測定値です。

この例では、20個のCPUがあり、1つのタスクが実際にディスクを処理している場合、このタスクは(実質的に)IOWaitで100%の時間を費やしています。その後、このタスクが実行されるCPUは、ほぼ100%の時間を費やしていますIOWait。ただし、他の19個のCPUが実質的にアイドル状態でこのディスクを使用していない場合、それらは0%IOWaitを報告します。これにより、平均IOWaitパーセンテージは5%になりますが、実際にディスク使用率を確認すると、100%と報告されます。ディスクで待機するアプリケーションが重要である場合、ボトルネックのタスクは5%の速度低下よりもはるかに高いパフォーマンスの問題が発生する可能性が高いため、この5%は多少誤解を招きます。

動作しているCPUプロセスとほぼ同じ数のCPUプロセスが待機していますか? (=>悪い)

おそらく、大部分のCPUはタスクを実行し、タスクはIOを要求するものであることを覚えておいてください。 2つの別個のタスクが2つの別個のCPU上の同じディスクのクエリでビジー状態の場合、これにより両方のCPUが100%のIOWait(および20 CPUの例では10%の全体的な平均IOWait)になります。

基本的に、特に同じディスクからIOを要求する多くのタスクがあり、さらにそのディスクが100%使用されている場合(iostat -mtx)それからこれは悪いです。

作業プロセスは実行計画の5.0%を待っていますか? (=>この場合はOK)

いいえ。作業プロセスはほぼ確実にIOをフルタイムで待機しています。これは単なる平均的なレポートケース(「他のCPUはビジーではない」)であり、CPUには実行するタスクが多く、その多くはIOを実行する必要がないという事実をファッジします。

原則として、マルチCPUシステムでは、CPUの数を100で割った値に等しいIOWaitの割合は、おそらく調査する必要があります。

他の何か

上記を参照。ただし、書き込みが非常に多いアプリケーションは抑制されます(ライトバックの使用を停止し、ディスクへの直接書き込みを開始します)。これにより、これらのタスクは高いIOWaitを生成しますが、同じCPU上の他のタスクは同じディスクに書き込みを行いません。したがって、例外が存在します。

また、2つのタスクの実行に専用のCPUが1つある場合、1つは重いIO読み取り/書き込みであり、もう1つは重いCPUユーザーである場合、CPUはこの場合50%のIOWaitを報告します。 、このような10個のタスクがある場合、10%のIOWait(および恐ろしい負荷)になるため、実際に問題になる可能性のある数値よりもはるかに少ない数値で報告される可能性があります。

あなたは本当にiostat -mtxを使用してディスク使用率のメトリックを取得し、pidstat -dプロセスごとのメトリックを取得するには、その方法でこれらのディスクにアクセスするアプリケーションが問題を引き起こす可能性が高いかどうか、またはこれらのディスクにアクセスする他の潜在的なアプリケーションが問題を引き起こす可能性があるかどうかを検討します。

CPUメトリックは実際には根本的な問題のインジケータとして機能します。それらは一般的なものであるため、どこにあるかを理解することはtoo一般的なことです。

19
Matthew Ife

これは、CPU時間の5%がディスクの待機に費やされていることを意味しますIO=終了し、6.7%のCPU時間はユーザーランドプロセスで必要な処理を実際に行うために費やされます。

Vmstatの出力を確認します。例えばvmstat 1 30bのプロセス数が増えない限り、問題ありません。列bは、ディスクIO操作が完了するまでブロックされる、中断できない状態(D状態)のプロセスの数を示します。

だからあなたの質問に答えて

  1. 動作しているCPUプロセスとほぼ同じ数のCPUプロセスが待機していますか? (=>悪い)

ほぼ同じ時間はありませんが、これは必ずしも問題ではありません。プロセスがD状態で積み重なり始める問題がない限り、問題はありません。改善には、ディスクリードの数を減らすためにページキャッシュ(ディスクキャッシュ)のための領域を増やすために、さらにRAMを追加して、メモリキャッシュからの読み取り、ディスクスケジューラの調整が含まれます。

  1. 作業プロセスは実行計画の5.0%を待っていますか? (=>この場合はOK)

これは、ユーザーランドプロセスの処理に費やされたCPU時間の一部です。特にここでアイドルが多い場合、心配することは何もありません85.5%id CPU時間

0
Hrvoje Špoljar

待機状態は、通常は実行可能なプロセスがIOの待機を停止したときです。これは、通常はディスクリソースの競合の兆候です。

これは、一部のプロセスが可能な限り速く実行されていないことを意味しますが、それはごく普通のことです。

0
Sobrique