GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples pidstat pour déboguer les problèmes de performances du processus Linux

pidstat signifie Statistiques PID.

Cet outil peut surveiller un processus individuel géré par le noyau et générer un rapport. Il peut surveiller soit un PID spécifique (ID de processus), soit tous les processus en cours d'exécution sur le système.

pidstat fait partie de l'utilitaire sysstat.

Cet outil rapporte diverses statistiques, y compris le processeur utilisé par un processus, les statistiques d'utilisation du disque d'un processus, les statistiques des threads associés aux tâches sélectionnées et aux processus enfants.

Vous devez installer le package systat pour utiliser cette commande.

yum install sysstat

1. Afficher les statistiques pour TOUS les processus en cours d'exécution (ou un processus spécifique)

Utilisez l'option -p ALL pour afficher les statistiques de performances de tous les processus en cours d'exécution, comme indiqué ci-dessous.

Par défaut, cela affichera l'utilisation du processeur. Mais, vous pouvez le remplacer par n'importe quelle autre statistique de performance, comme indiqué dans les exemples ultérieurs.

# 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

Utilisez -p PID pour surveiller les statistiques de performances d'un processus particulier, comme indiqué ci-dessous.

# 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

Si vous débutez avec le package systat, vous devez également comprendre les données statistiques de performances fournies par la commande sar.

2. Afficher les statistiques de performances basées sur le nom du processus à l'aide de -C

L'exemple suivant affichera des statistiques de performances pour tous les processus correspondant à un mot-clé spécifique (par exemple :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

Remarque :Dans l'exemple ci-dessus, l'option -C signifie « Nom de la commande ». c'est-à-dire qu'il recherchera le nom de commande du processus avec le mot-clé donné.

3. Répéter la sortie à certain intervalle

Par défaut, la sortie ne sera pas répétée. Par exemple, l'option -u permet d'afficher les statistiques d'utilisation du processeur des tâches et il s'agit des statistiques par défaut fournies par la commande pidstat. Ceci n'affichera la sortie qu'une seule fois.

# 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

Pour répéter la sortie, spécifiez l'intervalle en secondes comme dernier paramètre. Par exemple, l'exemple suivant répétera la sortie toutes les 1 seconde (jusqu'à ce que vous appuyiez sur 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
..

Ce qui suit répétera la sortie toutes les 5 secondes (jusqu'à ce que vous appuyiez sur Ctrl-C).

# pidstat -p 23493 5

4. Afficher les statistiques d'E/S pour un processus spécifique à l'aide de -d

Utilisez l'option -d pour rapporter les statistiques d'E/S du processus. La sortie affiche différents attributs tels que le PID, la vitesse de lecture et d'écriture du disque en Ko/s, comme indiqué ci-dessous.

L'exemple suivant affiche l'utilisation du disque pour le PID 23493 toutes les 1 seconde.

# 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. Afficher l'activité de pagination pour un processus spécifique à l'aide de -r

Utilisez l'option -r pour afficher les défauts de page et l'utilisation de la mémoire pour une tâche donnée (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. Afficher le nom de la commande et ses arguments à l'aide de l'option -l

Par défaut, pidstat affiche uniquement le nom de la commande. c'est-à-dire sans le chemin complet de la commande et de son argument. Par exemple, dans la colonne de commande, vous ne verrez que "java" (qui n'est que le nom du programme).

$ 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

Cependant, lorsque vous utilisez l'option -l, elle affiche le chemin complet de la commande et tous ses arguments, comme indiqué ci-dessous.

$ 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

Afin d'obtenir les statistiques à intervalles réguliers pour les tâches, il suffit de passer le nombre de secondes auxquelles vous souhaitez voir les statistiques,

# 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

Comme vu ci-dessus, regarder les statistiques du processus mysqld toutes les 1 secondes.

Vous pouvez également récupérer quelques identifiants de processus à partir de la sortie de la commande supérieure et la regarder ici pour comprendre son utilisation des ressources système à intervalles réguliers.

7. Afficher la sortie à intervalles réguliers pendant X nombre de fois

Il est également possible d'obtenir des rapports pour un certain nombre de fois à des intervalles donnés pour la liste des processus comme indiqué ci-dessous.

Ajoutez le nombre de fois comme dernier paramètre (après les intervalles en secondes).

Par exemple, ce qui suit affichera la sortie 5 fois (à un intervalle régulier de 2 secondes). À la fin du rapport, il affichera également les valeurs "Moyennes".

# 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. Afficher les statistiques du processus sélectionné et de son enfant à l'aide de -T

Utilisez l'option -T pour spécifier CHILD ou TASKS. Dans ce cas, les statistiques seront rapportées pour TASKS, ou les tâches et tous leurs enfants. Vous pouvez également spécifier TOUT.

Valeurs possibles pour -T :ENFANT, ou TÂCHES, ou TOUS.

# 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. Afficher les statistiques du processus dépendant au format arborescent à l'aide de -t

En utilisant l'option -t, vous pouvez afficher la sortie dans un format arborescent comme indiqué ci-dessous.

# 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. Afficher toutes les statistiques horizontalement sur une seule ligne en utilisant -h

Si vous demandez à pidstat de rapporter plus d'une statistique, il affiche une statistique après une autre statistique. Dans l'exemple suivant, il affichera d'abord les statistiques de performances pour l'option "r", puis l'option "u", et enfin l'option "d".

# pidstat -rud

Toutefois, si vous souhaitez que toutes ces statistiques soient affichées sur une seule ligne pour le processus individuel, utilisez l'option -h comme indiqué ci-dessous.

# 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+ exemples pour tuer un processus sous Linux

  2. 7 Exemples de commandes Linux df

  3. 8 Exemples de commandes Linux TR

  4. Exemples de commande rm sous Linux

  5. kill Exemples de commandes sous Linux

La commande Wait sous Linux expliquée avec des exemples

UNIX / Linux :7 exemples pratiques de commandes PS pour la surveillance des processus

Utilisation de vmstat pour résoudre les problèmes de performances sous Linux

htop (visualiseur de processus interactif) Outil de surveillance des performances Linux

Exemples de commandes id sous Linux

Exemples de commandes pidstat sous Linux