GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 pidstat-Beispiele zum Debuggen von Leistungsproblemen des Linux-Prozesses

pidstat steht für PID-Statistik.

Dieses Tool kann einen einzelnen Prozess überwachen, der vom Kernel verwaltet wird, und einen Bericht erstellen. Es kann entweder eine bestimmte PID (Prozess-ID) oder alle auf dem System laufenden Prozesse überwachen.

pidstat ist ein Teil des Dienstprogramms sysstat.

Dieses Tool meldet verschiedene Statistiken, einschließlich CPU-Nutzung durch einen Prozess, Festplattennutzungsstatistiken eines Prozesses, Statistiken für Threads, die mit ausgewählten Aufgaben und untergeordneten Prozessen verbunden sind.

Sie sollten das systat-Paket installieren, um diesen Befehl zu verwenden.

yum install sysstat

1. Statistiken für ALLE laufenden Prozesse (oder einen bestimmten Prozess) anzeigen

Verwenden Sie die Option -p ALL, um Leistungsstatistiken aller laufenden Prozesse anzuzeigen, wie unten gezeigt.

Standardmäßig wird die CPU-Auslastung angezeigt. Sie können dies jedoch in andere Leistungsstatistiken ändern, wie in späteren Beispielen gezeigt.

# 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

Verwenden Sie -p PID, um Leistungsstatistiken für einen bestimmten Prozess wie unten gezeigt zu überwachen.

# 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

Wenn Sie neu im Systat-Paket sind, sollten Sie auch die vom Befehl sar bereitgestellten Leistungsstatistikdaten verstehen.

2. Zeigen Sie Leistungsstatistiken basierend auf dem Prozessnamen mit -C

an

Das folgende Beispiel zeigt Leistungsstatistiken für alle Prozesse, die mit einem bestimmten Schlüsselwort übereinstimmen (zum Beispiel: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

Hinweis:Im obigen Beispiel steht die Option -C für „Command Name“. d.h. Es wird der Befehlsname des Prozesses mit dem angegebenen Schlüsselwort gesucht.

3. Wiederholen Sie die Ausgabe in einem bestimmten Intervall

Standardmäßig wird die Ausgabe nicht wiederholt. Beispielsweise zeigt die Option -u die CPU-Auslastungsstatistiken von Aufgaben an, und dies ist die Standardstatistik, die vom Befehl pidstat angegeben wird. Dadurch wird die Ausgabe nur einmal angezeigt.

# 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

Um die Ausgabe zu wiederholen, geben Sie als letzten Parameter das Intervall in Sekunden an. Im folgenden Beispiel wird die Ausgabe beispielsweise alle 1 Sekunde wiederholt (bis Sie Strg-C drücken).

# 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
..

Im Folgenden wird die Ausgabe alle 5 Sekunden wiederholt (bis Sie Strg-C drücken).

# pidstat -p 23493 5

4. Zeigen Sie E/A-Statistiken für einen bestimmten Prozess mit -d

an

Verwenden Sie die Option -d, um E/A-Statistiken des Prozesses zu melden. Die Ausgabe zeigt verschiedene Attribute wie PID, Lese- und Schreibgeschwindigkeit der Festplatte in kB/s an, wie unten gezeigt.

Das folgende Beispiel zeigt die Festplattennutzung für PID 23493 alle 1 Sekunde an.

# 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. Zeigen Sie die Paging-Aktivität für einen bestimmten Prozess mit -r

an

Verwenden Sie die Option -r, um Seitenfehler und Speicherauslastung für eine bestimmte Aufgabe (PID) anzuzeigen.

# 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. Zeigen Sie den Befehlsnamen und seine Argumente mit der Option -l

an

Standardmäßig zeigt pidstat nur den Befehlsnamen an. d.h. Ohne den vollständigen Pfad des Befehls und seines Arguments. Beispielsweise sehen Sie in der Befehlsspalte nur „java“ (was nur der Name des Programms ist).

$ 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

Wenn Sie jedoch die Option -l verwenden, wird der vollständige Pfad des Befehls und alle seine Argumente wie unten gezeigt angezeigt.

$ 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

Um die Statistiken in regelmäßigen Abständen für Aufgaben zu erhalten, übergeben Sie einfach die Anzahl der Sekunden, in denen Sie die Statistiken sehen möchten,

# 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

Wie oben gesehen, beobachten Sie die Statistiken des mysqld-Prozesses alle 1 Sekunde.

Sie können auch einige Prozess-IDs aus der Ausgabe des oberen Befehls abrufen und hier ansehen, um die Nutzung der Systemressourcen in regelmäßigen Abständen zu verstehen.

7. Anzeige der Ausgabe in regelmäßigen Abständen für X Mal

Es ist auch möglich, Berichte für eine bestimmte Anzahl von Malen in bestimmten Intervallen für die Liste der Prozesse zu erhalten, wie unten gezeigt.

Fügen Sie die Anzahl als letzten Parameter hinzu (nach den Intervallen in Sekunden).

Im Folgenden wird beispielsweise die Ausgabe 5 Mal angezeigt (in einem regelmäßigen Intervall von 2 Sekunden). Am Ende des Berichts werden auch die „Durchschnittswerte“ angezeigt.

# 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. Zeigen Sie Statistiken des ausgewählten Prozesses und seines untergeordneten Prozesses mit -T

an

Verwenden Sie die Option -T, um entweder CHILD oder TASKS anzugeben. In diesem Fall werden die Statistiken für TASKS oder Tasks und alle ihre Kinder ausgegeben. Sie können auch ALLE angeben.

Mögliche Werte für -T:CHILD oder TASKS oder 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. Zeigen Sie Statistiken abhängiger Prozesse im Baumformat mit -t

an

Mit der Option -t können Sie die Ausgabe wie unten gezeigt in einem Baumformat anzeigen.

# 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. Zeigen Sie alle Statistiken horizontal in einer einzelnen Zeile mit -h

an

Wenn Sie pidstat auffordern, mehr als eine Statistik zu melden, zeigt es eine Statistik nach der anderen Statistik an. Im folgenden Beispiel werden zuerst die Leistungsstatistiken für Option „r“, dann Option „u“ und schließlich Option „d“ angezeigt.

# pidstat -rud

Wenn Sie jedoch möchten, dass alle diese Statistiken für den einzelnen Prozess in einer einzigen Zeile angezeigt werden, verwenden Sie die Option -h wie unten gezeigt.

# 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+ Beispiele für das Beenden eines Prozesses in Linux

  2. 7 Strace-Beispiele zum Debuggen der Ausführung eines Programms unter Linux

  3. rm-Befehlsbeispiele unter Linux

  4. kill-Befehlsbeispiele in Linux

  5. ps-Befehlsbeispiele in Linux

Wait-Befehl in Linux anhand von Beispielen erklärt

UNIX / Linux:7 praktische Beispiele für PS-Befehle zur Prozessüberwachung

Verwenden von vmstat zum Beheben von Leistungsproblemen unter Linux

htop (interaktiver Prozessbetrachter) Linux-Leistungsüberwachungstool

id-Befehlsbeispiele in Linux

pidstat-Befehlsbeispiele in Linux