CプログラムからCPU使用率の統計情報を読みたい、CPUの使用率、スチール時間などに興味があります。これらの統計情報が表示されますtop
コマンドの3行目。
top
の出力をawk
(top -n 1 -b | awk '{print $0}'
)ですが、top
は正しい統計を表示し始める前に、常に同じ「架空の」値を与えるようです。
コードから、またはいくつかのコマンドの出力を解析してCPU使用率の統計を取得する方法はありますか?
編集:
プラットフォームはLinuxです
ありがとうございました。
/proc/stat
の最初の数行を読みたい。これを2回読み取り、測定時間を空けて、最初の数値セットを2番目の数値セットから減算する必要があります。行は次のようになります。
cpu 1526724 408013 600675 541100340 2861417 528 14531 0 0 0
cpu0 344507 77818 251244 134816146 1119991 324 13283 0 0 0
cpu1 502614 324065 179301 133991407 1631824 136 906 0 0 0
cpu2 299080 3527 79456 136144067 103208 59 255 0 0 0
cpu3 380521 2602 90672 136148719 6393 7 86 0 0 0
intr 2111239193 344878476 16943 ...
最初の行は、すべてのコアの集計です。次の行は各コアを示しています。 intr
で始まる行を見ると、解析を停止していることがわかります。
各数値は、CPUが特定の状態で費やした時間です。単位は通常100分の1秒です。フィールドは、user
、Nice
、system
、idle
、iowait
、irq
、softirq
、steal
、guest
、guest_Nice
です。
もちろん、信頼できるドキュメントはソースコードです。 Linuxカーネルソースのコピーが手元にある場合は、fs/proc/stat.c
、特にshow_stat
関数を確認してください。
ウェブ上に いくつかの例 があり、読み方を示しています/proc/pid/stat
C.
2つの異なる瞬間にutime
またはstime
の値を読み取り、目的のCPU使用率の統計を計算できます。 (top
もこの生データを使用すると思います。)
(忘れました:これはLinux固有です。)