CプログラムからCPU使用率統計を読みたいです。 CPU使用率に興味があります。時間を盗むなど。これらの統計はtop
コマンドの3行目に表示されます。
()を使用して出力を解析してみましたが、top
正しい統計を表示する前に常に同じ「偽」値を提供しているようです。awk
top -n 1 -b | awk '{print $0}'
top
コード内または一部のコマンドの出力を解析してCPU使用率統計を取得する方法はありますか?
編集する:
プラットフォームはLinux
ありがとうございます。
ベストアンサー1
読みたい最初の数行/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
関数を見てください。