GNU/Linux >> Znalost Linux >  >> Linux

10 příkladů pidstat pro ladění výkonnostních problémů procesu Linux

pidstat je zkratka pro PID Statistics.

Tento nástroj dokáže monitorovat jednotlivý proces, který je řízen jádrem, a generovat zprávu. Může monitorovat buď konkrétní PID (process id), nebo celý proces běžící v systému.

pidstat je součástí nástroje sysstat.

Tento nástroj hlásí různé statistiky včetně CPU používaného procesem, statistik využití disku procesem, statistik pro vlákna spojená s vybranými úlohami a podřízenými procesy.

Abyste mohli tento příkaz používat, měli byste nainstalovat balíček systat.

yum install sysstat

1. Zobrazit statistiky pro VŠECHNY běžící proces (nebo konkrétní proces)

Použijte volbu -p VŠE pro zobrazení statistik výkonu všech běžících procesů, jak je uvedeno níže.

Ve výchozím nastavení se zobrazí využití CPU. Toto však můžete změnit na jakoukoli jinou statistiku výkonu, jak je uvedeno v dalších příkladech.

# 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

Použijte -p PID ke sledování statistik výkonu pro konkrétní proces, jak je uvedeno níže.

# 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

Pokud s balíčkem systat začínáte, měli byste také porozumět datům statistik výkonu poskytovaných příkazem sar.

2. Zobrazte statistiku výkonu na základě názvu procesu pomocí -C

Následující příklad zobrazí statistiky výkonu pro všechny procesy, které odpovídají konkrétnímu klíčovému slovu (například: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

Poznámka:Ve výše uvedeném příkladu volba -C znamená „Název příkazu“. tj. vyhledá název příkazu procesu s daným klíčovým slovem.

3. Opakujte výstup v určitém intervalu

Ve výchozím nastavení se výstup nebude opakovat. Například volba -u slouží k zobrazení statistiky využití CPU úloh a toto je výchozí statistika zadaná příkazem pidstat. Toto zobrazí výstup pouze jednou.

# 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

Pro opakování výstupu zadejte jako poslední parametr interval v sekundách. Například následující příklad bude opakovat výstup každou 1 sekundu (dokud nestisknete 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
..

Následující text bude opakovat výstup každých 5 sekund (dokud nestisknete Ctrl-C).

# pidstat -p 23493 5

4. Zobrazte statistiku I/O pro konkrétní proces pomocí -d

Použijte volbu -d k nahlášení I/O statistiky procesu. Jeho výstup zobrazuje různé atributy, jako je PID, rychlost čtení a zápisu disku v kB/s, jak je uvedeno níže.

Následující příklad zobrazuje využití disku pro PID 23493 každou 1 sekundu.

# 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. Zobrazte aktivitu stránkování pro konkrétní proces pomocí -r

Použijte volbu -r k zobrazení chyb stránek a využití paměti pro danou úlohu (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. Zobrazte název příkazu a jeho argumenty pomocí volby -l

Ve výchozím nastavení pidstat zobrazuje pouze název příkazu. tj. Bez úplné cesty příkazu a jeho argumentu. Například ve sloupci příkazů uvidíte pouze „java“ (což je pouze název programu).

$ 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

Když však použijete volbu -l, zobrazí se úplná cesta příkazu a všechny jeho argumenty, jak je uvedeno níže.

$ 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

Chcete-li získat statistiky v pravidelných intervalech pro úkoly, stačí zadat počet sekund, ve kterých chcete statistiky vidět,

# 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

Jak je vidět výše, sledování statistik procesu mysqld každou 1 sekundu.

Můžete také načíst několik ID procesů z hlavního výstupu příkazu a sledovat je zde, abyste pochopili, jak v pravidelných intervalech využívá systémové prostředky.

7. Zobrazte výstup v pravidelných intervalech po X kolikrát

Je také možné získat zprávy pro určitý počet opakování v daných intervalech pro seznam procesů, jak je uvedeno níže.

Jako poslední parametr přidejte počet opakování (po intervalech v sekundách).

Například následující zobrazí výstup 5krát (v pravidelném intervalu 2 sekund). Na konci zprávy se také zobrazí hodnoty „Průměr“.

# 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. Zobrazte statistiku vybraného procesu a jeho potomka pomocí -T

Použijte volbu -T k zadání CHILD nebo TASKS. V tomto případě budou statistiky hlášeny pro ÚKOLY nebo úkoly a všechny jejich děti. Můžete také zadat VŠECHNY.

Možné hodnoty pro -T:CHILD, TASKS nebo 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. Zobrazte statistiku závislého procesu ve stromovém formátu pomocí -t

Pomocí volby -t můžete zobrazit výstup ve stromovém formátu, jak je uvedeno níže.

# 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. Zobrazit všechny statistiky vodorovně na jednom řádku pomocí -h

Pokud požádáte pidstat o nahlášení více než jedné statistiky, zobrazí jednu statistiku za druhou. V následujícím příkladu nejprve zobrazí statistiku výkonu pro možnost „r“, poté možnost „u“ a nakonec možnost „d“.

# pidstat -rud

Pokud však chcete, aby byly všechny tyto statistiky zobrazeny na jednom řádku pro jednotlivý proces, použijte volbu -h, jak je uvedeno níže.

# 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. 10+ příkladů pro zabití procesu v Linuxu

  2. 7 Vzorové příklady pro ladění spouštění programu v Linuxu

  3. 7 Příklady příkazů Linux df

  1. 8 Příklady příkazů Linux TR

  2. Příklady příkazů rm v Linuxu

  3. Příklady příkazů kill v Linuxu

  1. Příklady příkazů ps v Linuxu

  2. Příklady příkazů renice v Linuxu

  3. Příklady příkazů pkill v Linuxu