Saya mencoba mendapatkan pembacaan akurat dari CPU bekas saya (dalam persen) dari top
. Ini adalah perintah yang saya jalankan untuk pengujian:
top -n1 | awk '/Cpu\(s\):/ {print $2}'
Ini mengembalikan:
10.7%us,
Yang merupakan bagian data yang tepat yang saya inginkan. Namun, setiap kali saya menjalankan perintah saya mendapatkan output yang sama, meskipun saya menerapkan beban yang berbeda pada sistem saya (dan belum lagi htop
memberitahu saya bahwa penggunaan saya berbeda). Tampaknya setiap kali saya memulai top
, penggunaan CPU saya sama. Hanya setelah beberapa bingkai yang memberi saya nilai yang tepat.
Sepertinya saya tidak dapat mengurai output top dengan cara ini, jadi saya mencari aplikasi andal lainnya yang akan memberi saya pembacaan yang akurat dari shell. Saya sangat suka bagaimana htop
bisa memberi saya bacaan inti.
Saya sudah mencoba iostat
dan mpstat
tetapi mereka tampaknya memberikan nilai-nilai yang tidak akurat dan "lambat untuk berubah".
sumber
Jawaban:
Saya menggunakan skrip ini (dari utas ini di papan Lengkungan ):
sumber
Lihat sar , juga. Implementasi dapat sangat bervariasi dari nix ke nix, tetapi harus memberi Anda statistik sistem dasar, pada snapshot yang diberikan. Saya tidak yakin seberapa akurat nilai-nilai berada di titik di mana perintah pertama diinisialisasi, tetapi Anda mungkin bermain-main untuk melihat bagaimana membandingkan
top
,iostat
, dllOutputnya berbasis kolom, seperti top, jadi Anda harus bisa menyalurkan output ke
awk
ataucut
memanipulasi hasilnya.sumber
sar
sebelumnya dengan hasil yang beragam. Aku akan pergi dengan jawaban @ jasonwryan di sini karena saya dapat dengan mudah memodifikasinya untuk mewakili penggunaan dengan kedua core CPU saya.Sudahkah Anda melihat
collectl
? Ini berguna karena Anda dapat menyesuaikan output dengan kebutuhan Anda. Lihat: http://collectl.sourceforge.net/sumber
Apa yang saya temukan mirip dengan orang yang mengajukan pertanyaan di atas, setidaknya pada CentOS 6. Jika saya menjalankan teratas dalam mode batch untuk hanya satu iterasi, tampaknya mengumpulkan angka yang sama, hampir seolah-olah kecenderungannya adalah memulai dengan apa itu terakhir ingat menampilkan. Top tampaknya perlu mengakumulasikan setidaknya beberapa angka untuk mendapatkan delta yang memberi Anda persentase yang benar. Setelah menguji lebih dari 10 iterasi, saya menemukan bahwa angka kedua yang muncul menunjukkan diferensiasi yang cukup pada setiap proses. Jadi, cukup mudah untuk mendapatkan jalur ini melalui
Saya suka menggabungkan ini dengan uptime untuk memuat dan filter grep dari proses pilih dari ps, seperti pertanyaan postgres. Monitor yang sangat sederhana dapat diekspresikan dengan alias:
sumber