CPU使用率が高くない場合に、どのプロセスが高負荷を引き起こしているのかを知るにはどうすればよいですか?


12

サーバーが「トッ​​プ」プログラムで高い負荷平均を示す場合があります(4コアマシンの負荷が10程度など)が、実際のCPU使用率はそれほど高くありません。

問題は、I / Oを集中的に使用するジョブが多数実行されていることだと思います。上部の「%CPU」値がそれほど高くない場合、負荷の原因となっているこれらのジョブを識別する簡単な方法はありますか?


topコマンドを実行したときに表示される要約領域を貼り付けていただけますか?
mfriedman 2009

回答:


7

iostatそのような統計を報告できます。通常、ディストリビューションのパッケージsysstatに含まれています。

dstatも一見の価値があるかもしれませんが、これは最新の代替品です。


+1 iostat私の答えになるからです。
アーニー


4

高負荷の原因を見つけるには、いくつかのことを確認できます。

  • vmstat -w ovierwiem(プロセス、スワップ、メモリ、CPU、IO、システム)を表示します
  • pmstat -P ALL CPUコアごとに統計(%iowaitを使用)を提供します
  • iostat -x 高い%utilまたはlong awaitまたは大きな平均キューサイズを探します
    • 深く掘り下げる iotop
  • ps -ax 割り込み不可能なスリープ(通常はIO)である状態Dを探し、それをもう一度実行して、まだD状態にあるかどうかを確認します。
    • straceでさらに掘り下げる
    • lsofおよびnetstatを使用して、それらのプロセスのファイルと接続を確認します
  • sar / sysstat-このツールを使用すると、「現在」の統計だけでなく、昨日の真夜中に何が起こっていたかを確認することもできます
    • sar -b -全体的なIOアクティビティ
    • sar -d -個々のブロックデバイスioアクティビティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.