GNU/Linux >> Belajar Linux >  >> Linux

10 Contoh pidstat untuk Debug Masalah Kinerja Proses Linux

pidstat adalah singkatan dari PID Statistics.

Alat ini dapat memantau proses individual yang dikelola oleh kernel dan menghasilkan laporan. Itu dapat memantau PID tertentu (id proses), atau semua proses yang berjalan di sistem.

pidstat adalah bagian dari utilitas sysstat.

Alat ini melaporkan berbagai statistik termasuk CPU yang digunakan oleh suatu proses, statistik penggunaan disk dari suatu proses, statistik untuk utas yang terkait dengan tugas yang dipilih dan proses anak.

Anda harus menginstal paket systat untuk menggunakan perintah ini.

yum install sysstat

1. Tampilkan Statistik untuk SEMUA Proses yang Berjalan (atau Proses Tertentu)

Gunakan opsi -p ALL untuk melihat statistik kinerja dari semua proses yang berjalan seperti yang ditunjukkan di bawah ini.

Secara default ini akan menampilkan penggunaan CPU. Namun, Anda dapat mengubahnya ke statistik kinerja lainnya seperti yang ditunjukkan pada contoh selanjutnya.

# pidstat -p ALL | wc -l
165

# pidstat -p ALL | head
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

05:00:03          PID    %usr %system  %guest    %CPU   CPU  Command
05:00:03            1    0.00    0.00    0.00    0.00     0  init
05:00:03            2    0.00    0.00    0.00    0.00     0  kthreadd
05:00:03            3    0.00    0.00    0.00    0.00     0  ksoftirqd/0
05:00:03            6    0.00    0.00    0.00    0.00     0  migration/0
05:00:03            7    0.00    0.00    0.00    0.00     0  watchdog/0
05:00:03            8    0.00    0.00    0.00    0.00     0  cpuset
05:00:03            9    0.00    0.00    0.00    0.00     0  khelper

Gunakan -p PID untuk memantau statistik kinerja untuk proses tertentu seperti yang ditunjukkan di bawah ini.

# pidstat -p 13203
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

05:04:29          PID    %usr %system  %guest    %CPU   CPU  Command
05:04:29        13203    0.00    0.00    0.00    0.00     0  vim

Jika Anda baru mengenal paket systat, Anda juga harus memahami data statistik kinerja yang disediakan oleh perintah sar.

2. Tampilkan Statistik Kinerja berdasarkan Nama Proses menggunakan -C

Contoh berikut akan menampilkan statistik kinerja untuk semua proses yang cocok dengan kata kunci tertentu (misalnya:mysql).

# pidstat -C "mysql"
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

06:33:14          PID    %usr %system  %guest    %CPU   CPU  Command
06:33:14        23132    0.00    0.00    0.00    0.00     0  mysqld_safe
06:33:14        23493    0.06    0.02    0.00    0.08     0  mysqld

Catatan:Dalam contoh di atas, opsi -C adalah singkatan dari "Nama Perintah". yaitu Ini akan mencari nama perintah proses dengan kata kunci yang diberikan.

3. Ulangi Output pada Interval Tertentu

Secara default, output tidak akan diulang. Misalnya, opsi -u adalah untuk menampilkan statistik penggunaan CPU dari tugas dan ini adalah statistik default yang diberikan oleh perintah pidstat. Ini akan menampilkan output hanya satu kali.

# pidstat -p 23493
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

06:52:35          PID    %usr %system  %guest    %CPU   CPU  Command
06:52:36        23493    1.00    0.00    0.00    1.00     0  mysqld

Untuk mengulang output, tentukan interval dalam detik sebagai parameter terakhir. Misalnya, contoh berikut akan mengulangi output setiap 1 detik (sampai Anda menekan Ctrl-C).

# pidstat -p 23493 1
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

06:52:35          PID    %usr %system  %guest    %CPU   CPU  Command
06:52:36        23493    1.00    0.00    0.00    1.00     0  mysqld
06:52:37        23493    0.00    0.00    0.00    0.00     0  mysqld
06:52:38        23493    0.00    0.00    0.00    0.00     0  mysqld
06:52:39        23493    0.00    0.00    0.00    0.00     0  mysqld
06:52:40        23493    0.00    0.00    0.00    0.00     0  mysqld
06:52:41        23493    0.00    0.00    0.00    0.00     0  mysqld
..

Berikut ini akan mengulangi output setiap 5 detik (sampai Anda menekan Ctrl-C).

# pidstat -p 23493 5

4. Tampilkan Statistik I/O untuk Proses Tertentu menggunakan -d

Gunakan opsi -d untuk melaporkan statistik proses I/O. Outputnya menampilkan atribut yang berbeda seperti PID, kecepatan baca dan tulis disk dalam kB/s seperti yang ditunjukkan di bawah ini.

Contoh berikut menampilkan penggunaan disk untuk PID 23493 setiap 1 detik.

# pidstat -p 23493 -d 1
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

06:48:33          PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
06:48:34        23493      0.00      0.00      0.00  mysqld
06:48:35        23493      0.00      0.00      0.00  mysqld
06:48:36        23493      0.00      0.00      0.00  mysqld
06:48:37        23493      0.00      0.00      0.00  mysqld
06:48:38        23493      0.00      0.00      0.00  mysqld
06:48:39        23493      0.00      0.00      0.00  mysqld
06:48:40        23493      0.00      0.00      0.00  mysqld
06:48:41        23493      0.00      0.00      0.00  mysqld

5. Tampilkan Aktivitas Paging untuk Proses Tertentu menggunakan -r

Gunakan opsi -r untuk menampilkan kesalahan halaman dan penggunaan memori untuk tugas tertentu (PID).

# pidstat -p 23493 -r 1
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

06:58:48          PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
06:58:49        23493      0.00      0.00  398876  33468   3.28  mysqld
06:58:50        23493      0.00      0.00  398876  33468   3.28  mysqld
06:58:51        23493      0.00      0.00  398876  33468   3.28  mysqld
06:58:52        23493      0.00      0.00  398876  33468   3.28  mysqld
06:58:53        23493      0.00      0.00  398876  33468   3.28  mysqld
06:58:54        23493      0.00      0.00  398876  33468   3.28  mysqld
06:58:55        23493      0.00      0.00  398876  33468   3.28  mysqld

6. Tampilkan Nama Perintah dan Argumennya menggunakan opsi -l

Secara default, pidstat hanya menampilkan nama perintah. yaitu Tanpa path lengkap dari perintah dan argumennya. Misalnya, di kolom perintah Anda hanya akan melihat “java” (yang merupakan nama program saja).

$ pidstat -C java
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

11:00:25       PID    %usr %system  %guest    %CPU   CPU  Command
11:00:25      3288    0.04    0.03    0.00    0.07     0  java
11:00:25     17861    0.03    0.02    0.00    0.05     6  java

Namun ketika Anda menggunakan opsi -l, itu akan menampilkan path lengkap dari perintah, dan semua argumennya seperti yang ditunjukkan di bawah ini.

$ pidstat -C java -l
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

11:00:31       PID    %usr %system  %guest    %CPU   CPU  Command
11:00:31      3288    0.04    0.03    0.00    0.07     0  /usr/bin/java -Djava.util.logging.config.file=/home/tomcat/apache-tomcat-7.0.56/conf/logging.properties
11:00:31     17861    0.03    0.02    0.00    0.05     6  java -jar /home/rabbit/myapp.jar /home/app/conf/myapp.conf

Untuk mendapatkan statistik pada interval reguler untuk tugas, cukup lewati jumlah detik di mana Anda ingin melihat statistiknya,

# pidstat -p 23493 1
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

06:25:50          PID    %usr %system  %guest    %CPU   CPU  Command
06:25:51        23493    0.00    0.00    0.00    0.00     0  mysqld
06:25:52        23493    0.00    0.00    0.00    0.00     0  mysqld

Seperti yang terlihat di atas, melihat statistik proses mysqld setiap 1 detik.

Anda juga dapat mengambil beberapa id proses dari keluaran perintah teratas dan melihatnya di sini untuk memahami penggunaan sumber daya sistemnya secara berkala.

7. Tampilkan Output pada Interval Reguler untuk X Jumlah Kali

Dimungkinkan juga untuk mendapatkan laporan untuk beberapa kali pada interval tertentu untuk daftar proses seperti yang ditunjukkan di bawah ini.

Tambahkan berapa kali sebagai parameter terakhir (setelah interval dalam detik).

Misalnya, berikut ini akan menampilkan output 5 kali (dengan interval reguler 2 detik). Di akhir laporan, itu juga akan menampilkan nilai “Rata-rata”.

# pidstat 2 5
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

07:14:11          PID    %usr %system  %guest    %CPU   CPU  Command
07:14:13         1445    0.00    0.50    0.00    0.50     0  pidstat
07:14:13        28222    0.50    0.00    0.00    0.50     0  cma

07:14:13          PID    %usr %system  %guest    %CPU   CPU  Command
07:14:15         1445    0.00    0.50    0.00    0.50     0  pidstat
07:14:15        28222    0.00    0.50    0.00    0.50     0  cma

07:14:15          PID    %usr %system  %guest    %CPU   CPU  Command
07:14:17         1445    0.50    0.00    0.00    0.50     0  pidstat
07:14:17        19614    0.00    0.50    0.00    0.50     0  nailswebd

07:14:17          PID    %usr %system  %guest    %CPU   CPU  Command
07:14:19         1445    0.50    0.50    0.00    1.00     0  pidstat

07:14:19          PID    %usr %system  %guest    %CPU   CPU  Command
07:14:21         1445    0.00    0.51    0.00    0.51     0  pidstat
07:14:21        28222    0.00    0.51    0.00    0.51     0  cma

Average:          PID    %usr %system  %guest    %CPU   CPU  Command
Average:         1445    0.20    0.40    0.00    0.60     -  pidstat
Average:        19614    0.00    0.10    0.00    0.10     -  nailswebd
Average:        28222    0.10    0.20    0.00    0.30     -  cma

8. Tampilkan Statistik Proses Terpilih dan Anaknya menggunakan -T

Gunakan opsi -T untuk menentukan ANAK atau TUGAS. Dalam hal ini statistik akan dilaporkan untuk TUGAS, atau tugas dan semua anak-anaknya. Anda juga dapat menentukan SEMUA.

Kemungkinan nilai untuk -T:CHILD, atau TASKS, atau ALL.

# pidstat -T CHILD | head 
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

10:13:34  IST       PID    usr-ms system-ms  guest-ms  Command
10:13:34  IST         1      7950      3340         0  init
10:13:34  IST         3         0       420         0  ksoftirqd/0
10:13:34  IST         8         0        10         0  migration/0
10:13:34  IST        10         0      1190         0  rcu_sched
10:13:34  IST        11        10         0         0  watchdog/0
10:13:34  IST        12        10         0         0  watchdog/1
10:13:34  IST        13         0       450         0  ksoftirqd/1

9. Tampilkan Statistik Proses Dependen dalam Format Pohon menggunakan -t

Menggunakan opsi -t, Anda dapat menampilkan output dalam format pohon seperti yang ditunjukkan di bawah ini.

# pidstat -t -C "mysql"
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

18:47:54          PID       TID    %usr %system  %guest    %CPU   CPU  Command
18:47:54         1646        -     0.00    0.00    0.00    0.00     0  mysql
18:47:54           -       1646    0.00    0.00    0.00    0.00     0  |__mysql
18:47:54        23132        -     0.00    0.00    0.00    0.00     0  mysqld_safe
18:47:54           -      23132    0.00    0.00    0.00    0.00     0  |__mysqld_safe
18:47:54        23493        -     0.06    0.02    0.00    0.08     0  mysqld
18:47:54           -      23493    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23504    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23509    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23510    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23512    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23515    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23516    0.01    0.00    0.00    0.02     0  |__mysqld
18:47:54           -      23517    0.00    0.00    0.00    0.00     0  |__mysqld
18:47:54           -      23518    0.01    0.01    0.00    0.02     0  |__mysqld
18:47:54           -      23519    0.00    0.00    0.00    0.00     0  |__mysqld
..

10. Tampilkan Semua Statistik Secara Horizontal pada Satu Baris menggunakan -h

Jika Anda meminta pidstat untuk melaporkan lebih dari satu statistik, ini akan menampilkan statistik satu demi satu. Pada contoh berikut, pertama-tama akan ditampilkan statistik performa untuk opsi “r”, lalu opsi “u”, dan terakhir opsi “d”.

# pidstat -rud

Namun jika Anda ingin semua statistik tersebut ditampilkan dalam satu baris untuk proses individual, gunakan opsi -h seperti yang ditunjukkan di bawah ini.

# pidstat -rud -h | head
Linux 3.0.101-0.7.17-default (thegeekstuff)    07/30/14        _x86_64_

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1406823329         1    0.04    0.19    0.00    0.24     2     21.50      0.03   26944   2768   0.07     -1.00     -1.00     -1.00  init
 1406823329         3    0.00    0.03    0.00    0.03     0      0.00      0.00       0      0   0.00     -1.00     -1.00     -1.00  ksoftirqd/0
 1406823329         8    0.00    0.00    0.00    0.00     0      0.00      0.00       0      0   0.00     -1.00     -1.00     -1.00  migration/0
 1406823329        10    0.00    0.08    0.00    0.08     2      0.00      0.00       0      0   0.00     -1.00     -1.00     -1.00  rcu_sched
 1406823329        13    0.00    0.03    0.00    0.03     1      0.00      0.00       0      0   0.00     -1.00     -1.00     -1.00  ksoftirqd/1
 1406823329        14    0.00    0.00    0.00    0.00     1      0.00      0.00       0      0   0.00     -1.00     -1.00     -1.00  migration/1
 1406823329        18    0.00    0.01    0.00    0.01     2      0.00      0.00       0      0   0.00     -1.00     -1.00     -1.00  ksoftirqd/2

Linux
  1. Contoh Perintah rm di Linux

  2. bunuh Contoh Perintah di Linux

  3. Contoh Perintah ps di Linux

  1. 10+ contoh untuk mematikan proses di Linux

  2. 7 Contoh Strace untuk Debug Eksekusi Program di Linux

  3. Contoh Perintah renice di Linux

  1. 7 Contoh Perintah Linux df

  2. 8 Contoh Perintah Linux TR

  3. Contoh Perintah pkill di Linux