web-dev-qa-db-ja.com

CPUが過負荷ですが、1%を超えるプロセスを使用していません

2コアCPU(4仮想CPUコア)を備えたCpanel(centos)サーバーを監視していますが、topを使用してこの値を取得したため、過負荷になっているようです:

load average: 11.80, 13.30, 13.02
Cpu(s): 42.2%us, 11.7%sy,  0.0%ni, 35.6%id, 10.1%wa,  0.1%hi,  0.3%si,  0.0%st

しかし、(topまたはpsを使用して)プロセスリストを見ると、1%を超えるプロセスは使用されていません。

また、プロセスのCPU使用率(%)の合計は4であり、0%の値が丸められた数値であると仮定して0.04に変更した場合(10進数の1桁を使用して丸められた場合は0)、合計は11(まだ未満100%)。

このデータを正しく解釈するにはどうすればよいですか?CPUに過負荷をかけている隠れたプロセスがいくつかありますか?.

6
Pablo

Linuxでは、ブロックされたプロセスも負荷平均に影響します。コマンド ps -Alはすべてのプロセスをリストします。出力の2番目の列(状態を表すS)には、プロセスの状態が表示されます。ほとんどの場合、プロセスはディスク「D」を待機しています。これは、平均負荷にカウントされます。

Psのmanページからの状態の完全なリストは次のとおりです。

   D    Uninterruptible sleep (usually IO)
   R    Running or runnable (on run queue)
   S    Interruptible sleep (waiting for an event to complete)
   T    Stopped, either by a job control signal or because it is being
        traced.
   W    paging (not valid since the 2.6.xx kernel)
   X    dead (should never be seen)
   Z    Defunct ("zombie") process, terminated but not reaped by its
        parent.

サンプル出力

 FS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 
 4 S 0 1 0 0 80 0-4906 poll_s?00:00:23 init 
 1 S 0 2 0 0 80 0-0 kthrea?00:00:02 kthreadd 
 1 R 0 3 0 99 80 0-0?01:00:02ランナー
 1 D 0 4 0 1 80 0-0?01:00:02ローダー

これらが唯一のプロセスである場合、CPUホグ「ランナー」用に約2の負荷、ディスクを待機しているローダー用にもう1つの負荷が表示されます。

ウィキペディア で入手できる情報は非常に正確です

アイドル状態のコンピューターのロード番号は0です。CPU(レディキューまたは実行キュー)を使用または待機している各プロセスは、ロード数を1ずつ増やします。ほとんどのUNIXシステムは、実行中(CPU上)または実行可能(待機中)のプロセスのみをカウントします。 CPU)の状態。ただし、Linuxには、中断できないスリープ状態(通常はディスクアクティビティを待機している)のプロセスも含まれているため、I/Oシステムがビジーまたはストールしているために多くのプロセスがI/Oでブロックされたままの場合、結果が著しく異なる可能性があります。 1 これには、たとえば、NFSサーバーの障害やメディアの速度低下(USB 1.xストレージデバイスなど)によるブロックプロセスが含まれます。このような状況では、負荷平均が高くなる可能性があります。これは、CPU使用率の実際の増加を反映していません(ただし、ユーザーが待機する必要がある時間についてはわかります)。

8
Peter G.

あなたが提供した上位の情報は、必ずしも過負荷を意味するものではありません。

  • cPUは35%アイドルです
  • 負荷の平均は必ずしも大きすぎるとは限りません(サーバーの使用目的によって異なります)
  • RAMおよびスワップ情報がありません

むしろ、過負荷によって何らかの制限に達することを意味する場合、CPU制限、ネットワークおよび/またはディスクI/O制限、メモリ使用制限など、さまざまな側面がある可能性があります。

さまざまなCPU負荷/使用状況のビューを一致させようとしないでください。これらは通常、異なる意味であり、ビューも異なるタイムスタンプで収集されます(統計収集はアトミックではありません)。

  • 負荷平均とは、CPU使用率ではなく、実行中のキュー内のジョブの数を意味します: https://stackoverflow.com/questions/21617500/understanding-load-average-vs-cpu-usage
  • プロセスコンテキストのCPU%使用率の数値は、さまざまな理由で100%になる必要はありません。以下にその一部を示します。
    • cPUはすべてのサイクルをプロセススペースに費やしません
    • プロセスコンテキストで費やされたさまざまなサイクルは、CPU使用率ライン全体で異なる方法でカウントされます(同じプロセスが、アカウンティング間隔中にI/O状態の実行中または待機中の両方であった可能性があるため、全体的なCPU使用率ライン)
    • cPUは、実行時間の長いプロセスにサイクルを費やす可能性があります。これらは、CPU使用率ライン全体でカウントされますが、どのプロセスラインにも存在しません。
1
Dan Cornilescu