Saya ingin membaca statistik pemanfaatan CPU dari program C, saya tertarik pada persentase penggunaan CPU, mencuri waktu dll. Statistik ini ditampilkan di baris ke-3 dari top
perintah.
Saya mencoba mengurai top
output dengan awk
( top -n 1 -b | awk '{print $0}'
), tetapi tampaknya top
memberikan nilai 'fiksi' yang sama sebelum mulai menampilkan statistik yang benar.
Apakah ada cara dari kode, atau dengan mengurai output perintah untuk mendapatkan statistik penggunaan CPU?
Edit:
Platformnya adalah Linux
Terima kasih.
monitoring
cpu
c
top
0xFF
sumber
sumber
Jawaban:
Anda ingin membaca beberapa baris pertama
/proc/stat
. Anda harus membacanya dua kali, jarak waktu yang terukur, dan kurangi set angka pertama dari yang kedua. Garis-garisnya terlihat seperti ini:Baris pertama adalah agregat untuk semua core. Baris berikutnya menunjukkan setiap inti. Saat Anda melihat garis yang dimulai dengan
intr
, Anda tahu untuk berhenti parsing.Setiap angka adalah jumlah waktu yang dihabiskan CPU dalam kondisi tertentu. Unit-unit biasanya seperseratus detik. Bidang yang
user
,nice
,system
,idle
,iowait
,irq
,softirq
,steal
,guest
, danguest_nice
.Dokumentasi otoritatif, tentu saja, adalah kode sumber. Jika Anda memiliki salinan sumber kernel Linux, lihat
fs/proc/stat.c
, khususnyashow_stat
fungsinya.sumber
Ada beberapa contoh di web yang menunjukkan cara membaca
/proc/pid/stat
dalam C.Anda dapat membaca
utime
ataustime
menilai pada dua momen berbeda dan menghitung statistik pemanfaatan cpu yang diinginkan. (Saya kiratop
menggunakan data mentah ini juga.)(Saya lupa: ini spesifik linux.)
sumber