Saya kira pertanyaannya adalah, bisakah saya menghitung persentase utilisasi CPU hanya dengan membaca / proc / stat sekali?
# head -1 /proc/stat
cpu 67891300 39035 6949171 2849641614 118251644 365498 2341854 0
Saya berpikir tentang meringkas kolom kecuali IOWait (saya sedang membaca di suatu tempat yang dihitung dalam idle) dan itu akan memberi saya 100% dan setiap kolom individu dapat diubah menjadi persentase dengan (kolom / 100_percent) * 100.
- pengguna: proses normal yang dijalankan dalam mode pengguna
- nice: proses es yang dijalankan dalam mode pengguna
- sistem: proses yang dijalankan dalam mode kernel
- idle: twiddling thumbs
- iowait: menunggu I / O selesai
- irq: servis interupsi
- softirq: melayani softirqs
- mencuri: menunggu tanpa disengaja
- tamu: menjalankan tamu normal
- guest_nice: menjalankan guest niced
Apakah ini pendekatan yang layak atau saya benar-benar keluar jalur?
Jika Anda ingin oneliner, tampilannya mungkin seperti ini:
Hasil:
97.17000000000000000000
Bagaimana itu bekerja:
menghasilkan
( 1055057784 - 1055058055 )/100
kemudian umpan baris ini ke bc. Akan memiliki sesuatu seperti-7.84000000000000000000
, kemudian hanya membungkusnya100-$(value)
dan memberi makan ke bc lagiAda:
sleep #
- 1 detik keterlambatan, jika Anda mengubah nilai ini maka hasil antara harus dibagi ke jumlah detik.$5
- Bidang ke-5, menurutman proc
dan http://www.linuxhowtos.org/System/procstat.htmTolong beri tahu saya jika ini tidak berhasil untuk Anda.
sumber
Atau jika Anda senang dengan hanya dua digit setelah titik awk dapat melakukan semuanya lebih sederhana dan lebih mudah dibaca:
sumber