Cpustat - Memantau Pemanfaatan CPU dengan Menjalankan Proses di Linux


Cpustat adalah program pengukur kinerja sistem yang kuat untuk Linux, ditulis menggunakan bahasa pemrograman Go. Ini mencoba untuk mengungkap pemanfaatan dan saturasi CPU dengan cara yang efektif, menggunakan Metode Saturasi dan Kesalahan Pemanfaatan (USE) (metodologi untuk menganalisis kinerja sistem apa pun).

Ini mengekstrak sampel frekuensi lebih tinggi dari setiap proses yang dijalankan pada sistem dan kemudian merangkum sampel ini pada frekuensi lebih rendah. Misalnya, ia dapat mengukur setiap proses setiap 200 md dan merangkum sampel ini setiap 5 detik, termasuk nilai min/rata-rata/maks untuk metrik tertentu.

Bacaan yang Disarankan: 20 Alat Baris Perintah untuk Memantau Kinerja Linux

Cpustat mengeluarkan data dalam dua cara yang mungkin: daftar teks murni dari interval ringkasan dan dasbor gulir berwarna-warni dari setiap sampel.

Cara Install CPUstat di Linux

Anda harus menginstal Go (GoLang) di sistem Linux Anda untuk menggunakan cpustat, klik tautan di bawah untuk mengikuti langkah-langkah instalasi GoLang jika Anda belum punya itu diinstal:

  1. Instal GoLang (Bahasa Pemrograman Go) di Linux

Setelah Anda menginstal Go, ketik perintah go get di bawah untuk menginstalnya, perintah ini akan menginstal biner cpustat di GOBIN Anda variabel :

go get github.com/uber-common/cpustat

Cara Menggunakan CPUstat di Linux

Ketika proses instalasi selesai, jalankan cpustat sebagai berikut dengan hak akses root menggunakan perintah sudo yaitu jika Anda mengontrol sistem sebagai pengguna non-root, jika tidak, Anda akan mendapatkan kesalahan seperti yang ditunjukkan:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Catatan: Untuk menjalankan cpustat serta semua program Go lainnya yang telah Anda instal di sistem Anda seperti perintah lainnya, sertakan GOBIN variabel dalam variabel lingkungan PATH Anda. Buka tautan di bawah untuk mempelajari cara mengatur variabel PATH di Linux.

  1. Pelajari Cara Mengatur Variabel ` PATH Anda Secara Permanen di Linux

Beginilah cara kerja cpustat; direktori /proc ditanyakan untuk mendapatkan daftar ID proses saat ini untuk setiap interval, dan:

  • untuk setiap PID, baca /proc/pid/stat, lalu hitung selisihnya dari sampel sebelumnya.
  • jika itu adalah PID baru, baca /proc/pid/cmdline.
  • untuk setiap PID, kirim pesan netlink untuk mengambil statistik tugas, hitung perbedaan dari sampel sebelumnya.
  • ambil /proc/stat untuk mendapatkan statistik sistem secara keseluruhan.

Sekali lagi, setiap interval tidur disesuaikan dengan jumlah waktu yang dihabiskan untuk mengambil semua statistik ini. Selain itu, setiap sampel juga mencatat waktu yang diperlukan untuk menskalakan setiap pengukuran dengan waktu sebenarnya yang berlalu antar sampel. Ini mencoba memperhitungkan penundaan dalam cpustat itu sendiri.

Saat dijalankan tanpa argumen apa pun, cpustat akan menampilkan yang berikut secara default: interval pengambilan sampel: 200 md, interval ringkasan: 2 detik (10 sampel), menampilkan 10 proses teratas, filter pengguna: semua, filter pid: semua sebagai ditunjukkan pada tangkapan layar di bawah ini:

sudo $GOBIN/cpustat 

Dari output di atas, berikut adalah arti dari metrik ringkasan seluruh sistem yang ditampilkan sebelum kolom:

  • usr – waktu berjalan mode pengguna min/rata-rata/maks sebagai persentase CPU.
  • sys – waktu pengoperasian mode sistem min/rata-rata/maks sebagai persentase CPU.
  • bagus – mode pengguna min/rata-rata/maks waktu proses prioritas rendah sebagai persentase CPU.
  • idle – waktu berjalan mode pengguna min/rata-rata/maks sebagai persentase CPU.
  • iowait – waktu tunda min/rata-rata/maks menunggu IO disk.
  • prun – jumlah min/rata-rata/maks proses dalam keadaan dapat dijalankan (sama dengan rata-rata beban).
  • pblock – jumlah min/rata-rata/maks dari proses yang diblokir pada IO disk.
  • pstart – jumlah proses/utas yang dimulai dalam interval ringkasan ini.

Masih dari output di atas, untuk proses tertentu, kolom yang berbeda berarti:

  • nama – nama proses umum dari /proc/pid/stat atau /proc/pid/cmdline.
  • pid – id proses, juga disebut sebagai “tgid”.
  • menit – contoh waktu pengguna+sistem terendah untuk pid, diukur dari /proc/pid/stat. Skala adalah persentase CPU.
  • maks – contoh waktu pengguna+sistem tertinggi untuk pid ini, juga diukur dari /proc/pid/stat.
  • usr – waktu pengguna rata-rata untuk pid selama periode ringkasan, diukur dari /proc/pid/stat.
  • sys – waktu sistem rata-rata untuk pid selama periode ringkasan, diukur dari /proc/pid/stat.
  • bagus – menunjukkan nilai “bagus” saat ini untuk proses tersebut, diukur dari /proc/pid/stat. Lebih tinggi berarti “lebih baik”.
  • runq – waktu proses dan semua thread yang dihabiskan untuk dijalankan tetapi menunggu untuk dijalankan, diukur dari status tugas melalui netlink. Skala adalah persentase CPU.
  • iow – waktu proses dan semua thread yang dihabiskan diblokir oleh IO disk, diukur dari taskstats melalui netlink. Skala adalah persentase CPU, yang dirata-ratakan selama interval ringkasan.
  • swap – waktu yang dihabiskan proses dan semua threadnya untuk menunggu untuk ditukar, diukur dari taskstats melalui netlink. Skala adalah persentase CPU, yang dirata-ratakan selama interval ringkasan.
  • vcx dan icx – jumlah total konteks sukarela yang dialihkan berdasarkan proses dan semua threadnya selama interval ringkasan, diukur dari status tugas melalui netlink.
  • rss – nilai RSS saat ini diambil dari /proc/pid/stat. Ini adalah jumlah memori yang digunakan proses ini.
  • ctime – jumlah waktu CPU pengguna+sistem yang dikonsumsi oleh anak-anak yang menunggu yang keluar selama interval ringkasan ini, diukur dari /proc/pid/stat.

Perhatikan bahwa proses anak yang berjalan lama sering kali membingungkan pengukuran ini, karena waktu dilaporkan hanya ketika proses anak keluar. Namun, hal ini berguna untuk mengukur dampak dari seringnya tugas cron dan pemeriksaan kesehatan di mana waktu CPU sering kali dikonsumsi oleh banyak proses turunan.

  • ketiga – jumlah thread di akhir interval ringkasan, diukur dari /proc/pid/stat.
  • sam – jumlah sampel untuk proses ini termasuk dalam interval ringkasan. Proses yang baru saja dimulai atau keluar mungkin terlihat pada sampel yang lebih sedikit dibandingkan interval ringkasan.

Perintah berikut menampilkan 10 proses pengguna root teratas yang berjalan pada sistem:

sudo $GOBIN/cpustat -u root

Untuk menampilkan keluaran dalam mode terminal mewah, gunakan tanda -t sebagai berikut:

sudo $GOBIN/cpustat -u roo -t

Untuk melihat jumlah x proses teratas (defaultnya adalah 10), Anda dapat menggunakan flag -n, perintah berikut menunjukkan 20 proses Linux teratas yang berjalan pada sistem:

sudo $GOBIN/cpustat -n 20 

Anda juga dapat menulis profil CPU ke file menggunakan opsi -cpuprofile sebagai berikut dan kemudian menggunakan perintah cat untuk melihat file:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Untuk menampilkan info bantuan, gunakan tanda -h sebagai berikut:

sudo $GOBIN/cpustat -h

Temukan info tambahan dari Repositori Github cpustat: https://github.com/uber-common/cpustat

Itu saja! Pada artikel ini, kami menunjukkan cara menginstal dan menggunakan cpustat, alat pengukur kinerja sistem yang berguna untuk Linux. Bagikan pemikiran Anda dengan kami melalui bagian komentar di bawah.