これらの数字を評価するときは注意が必要です.
<オール>このコンテキストでの IOWait は、すべての実行可能なタスクが IO 操作が完了するのを待っていたために、CPU (またはすべての CPU) がアイドル状態で過ごした特定の期間の時間の尺度です。
あなたの例では、20 個の CPU があり、1 つのタスクが実際にディスクを叩いている場合、このタスクは (事実上) IOWait で 100% の時間を費やしており、その後、このタスクが実行される CPU はその時間のほぼ 100% を待って。ただし、他の 19 個の CPU が実質的にアイドル状態で、このディスクを使用していない場合、それらは 0% IOWait を報告します。これにより、IOWait の平均パーセンテージは 5% になりますが、実際にディスク使用率を確認すると、100% と報告される可能性があります。ディスクで待機しているアプリケーションが重要な場合 -- この 5% はやや誤解を招く可能性があります。なぜなら、ボトルネック内のタスクは、5% 遅くなるよりもはるかに高いパフォーマンスの問題を経験している可能性が高いからです。
<ブロック引用>動作中の CPU プロセスとほぼ同じ数の CPU プロセスが待機していますか? (=>悪い)
おそらく、ほとんどの場合、CPU がタスクを実行し、タスクが IO を要求するものであることを思い出してください。 2 つの別々のタスクが 2 つの別々の CPU で同じディスクをクエリしている場合、両方の CPU の IOWait は 100% になります (20 CPU の例では、全体の平均 IOWait は 10% になります)。
基本的に、特に同じディスクから IO を要求するタスクが多数あり、さらにそのディスクが 100% 使用されている場合 (iostat -mtx
を参照) ) それでは、これは悪いことです。
作業プロセスは実行計画の 5.0% を待機していますか? (=>この場合はOK)
いいえ。ほぼ確実に、作業プロセスはフルタイムで IO を待っています。これは、平均的なレポート ケース (「他の CPU がビジーではない」) が、CPU に実行するタスクが多くあり、そのうちの多くは IO を実行する必要がないという割合または事実をごまかすだけです。
原則として、マルチ CPU システムでは、使用している CPU の数を 100 で割った値に等しい IOWait のパーセンテージは、おそらく調査すべきものです。
<ブロック引用>他の何か
上記を参照。ただし、非常に大量の書き込みを行うアプリケーションは抑制されることに注意してください (ライトバックの使用を停止し、ディスクへの直接書き込みを開始します)。これにより、これらのタスクは高い IOWait を生成しますが、同じディスクに書き込みを行う同じ CPU 上の他のタスクは生成しません。したがって、例外は存在します。
また、2 つのタスクの実行専用の 1 つの CPU がある場合、1 つは重い IO 読み取り/ライターであり、もう 1 つは重い CPU ユーザーである場合、この場合、CPU は 50% の IOWait を報告します。このような 10 のタスクがある場合、 10% の IOWait (そして恐ろしい負荷) になるため、実際の問題よりもはるかに低い数値が報告される可能性があります。
iostat -mtx
を見る必要があると思います ディスク使用率の指標を取得し、pidstat -d
プロセスごとのメトリックを取得するには、その方法でそれらのディスクにヒットするアプリケーションが問題を引き起こす可能性があるかどうか、またはそれらのディスクにヒットする他の潜在的なアプリケーションが問題を引き起こす可能性があるかどうかを検討してください。
CPU メトリクスは根本的な問題の指標として実際に機能します。これらは一般的なものであるため、どこにあるのかを理解することも 一般的なことは良いことです.