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