CPU負荷を計算する方法は?

CPU負荷を計算する方法は?

top -b -n2 -d 1 | grep Cpu私はこれをループで実行しており、繰り返しごとに2つの項目を返すことがわかりました...

1)各ループには2つの結果行があります。最初の行を使用する必要がありますか、それとも2番目の行を使用する必要がありますか?2つの違いは何ですか?

2)CPU使用率を計算するには、%us、%sy、%ni、%hi、および%si?を追加します。

Cpu(s):  1.6%us,  1.7%sy,  0.0%ni, 96.6%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Cpu(s):  8.7%us,  9.4%sy,  0.0%ni, 81.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st


Cpu(s):  1.6%us,  1.7%sy,  0.0%ni, 96.6%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Cpu(s):  9.7%us,  8.9%sy,  0.0%ni, 81.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

ベストアンサー1

  1. @garethTheRedが正しいです。 2回の出力繰り返しを要求しました。

  2. 「CPU使用率」の意味によって異なります。行の各項目は異なる内容を表します。

    • %usユーザーモードで 0 以上の nice 値として処理するのにかかる時間。これには、ほとんどのユーザーアプリケーションが実行するほとんどの操作が含まれます。
    • %syカーネルモードで費やされた時間であり、他の領域に属していません。これは主にシステムコールにかかる時間です。
    • %ni0未満のnice値を持つプロセスがユーザーモードで費やした時間。本質的にこれはバックグラウンドタスクです。
    • %id何もしない時間だ。 100から他の値の合計を引いたものと等しくなければなりません。
    • %wa他の操作を行わずに入出力が完了するのを待つのに要した時間。これには、ディスクへのデータの読み取りまたは書き込みを待機するのにかかる時間が含まれます。
    • %hiハードウェア割り込みの処理にカーネルモードがかかる時間です。ほとんどの優れたシステムでは、この値はゼロに近くなければなりません。
    • %siカーネルモードと遅延割り込み(ほとんどのシステムではこれは主にネットワーク割り込み)でソフトウェアを処理するのに費やされた時間です。
    • %stシステムで何かを実行している可能性がありますが、他の仮想マシンが使用されています。仮想マシンを直接実行する場合、またはEC2、GCE、DigitalOcean、またはLinodeなどのクラウドホスティングプラットフォームで実行しない限り、この値はゼロでなければなりません。これは、一部のシステム、特に古いシステムやLinux以外のシステムでは表示されない場合があります。

プログラマではないほとんどの定義によると、システムのCPU使用率は、、、および%us%sy合計と同じです%ni(実際、以前のUNIXシステムではこれらの値のみを表示しました)。より正確には、%id、 を除くすべての値の合計と同じです%wa( %stCPU は実際にこのような状態で何もしないからです)。

提供された例の行を使用すると、2番目の定義による使用率は3.4%、18.1%、3.4%、18.6%になります。

おすすめ記事