vmstat : Surveillance système en temps réel
Table des matières
La commande vmstat permet de générer des rapports sur les statistiques de mémoire virtuelle et sur les informations sur les événements système telles que la charge CPU, la pagination, le nombre de changements de contexte, les interruptions de périphérique et les appels système. La commande vmstat permet également d'afficher les statistiques sur la permutation, la purge du cache et les interruptions.
Elle s'utilise simplement :
Il est possible de passer des nombres en paramètres, de telle façon que
Voici un exemple concret de relevés toutes les 2 secondes, 5 fois :
Apportons quelques explications sur les différentes parties :
Il est possible de collecter périodiquement en tâche de fond ces mesures via un script que voici :
Et placer la ligne suivante dans crontab pour l'exécuter tous les jours à minuit avec un relevé toute les 5 secondes :
Si on souhaite avoir l'heure de chaque relevé, sous AIX, on peut utiliser l'option -t.
Sous Linux, elle n'est pas disponible.
On peut alors bricoler :
Un script perl qui retourne l'heure :
Et on appelle vmstat que l'on pipe dans le script :
vmstat
La commande vmstat permet de générer des rapports sur les statistiques de mémoire virtuelle et sur les informations sur les événements système telles que la charge CPU, la pagination, le nombre de changements de contexte, les interruptions de périphérique et les appels système. La commande vmstat permet également d'afficher les statistiques sur la permutation, la purge du cache et les interruptions.
Elle s'utilise simplement :
Code BASH :
adrien@oxygen ~ $ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 450860 148752 79152 881524 0 0 0 1 0 1 9 7 83 1 0
Il est possible de passer des nombres en paramètres, de telle façon que
Code BASH :
vmstat $INTERVAL $NOMBRE
Voici un exemple concret de relevés toutes les 2 secondes, 5 fois :
Code BASH :
adrien@oxygen ~ $ vmstat 2 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 450860 148752 79152 881524 0 0 0 1 0 1 9 7 83 1 0 0 0 450860 148744 79152 881528 0 0 0 8 974 1995 12 5 83 0 0 0 0 450860 148712 79152 881528 0 0 0 0 947 1884 9 8 83 0 0 0 0 450860 148712 79152 881528 0 0 0 6 961 1985 9 7 84 0 0 0 0 450860 148712 79152 881528 0 0 0 316 938 1899 11 6 82 1 0
Apportons quelques explications sur les différentes parties :
Il est possible de collecter périodiquement en tâche de fond ces mesures via un script que voici :
Code BASH :
#!/bin/bash DATE=`date +"%Y-%m-%d"`​ if [ ! –d /var/log/vmstat ] ; then mkdir /var/log/vmstat ; fi /usr/bin/vmstat $1 $2 > /var/log/vmstat/vmstat.$DATE
Et placer la ligne suivante dans crontab pour l'exécuter tous les jours à minuit avec un relevé toute les 5 secondes :
Code BASH :
00 00 * * * /root/batch/vmstat_recolte.sh 5 17280
Si on souhaite avoir l'heure de chaque relevé, sous AIX, on peut utiliser l'option -t.
Sous Linux, elle n'est pas disponible.
On peut alors bricoler :
Un script perl qui retourne l'heure :
Code PERL :
Et on appelle vmstat que l'on pipe dans le script :
Code BASH :
adrien@oxygen ~ $ vmstat 1 5 | ./timestamp.pl 11:21:19: procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 11:21:19: r b swpd free buff cache si so bi bo in cs us sy id wa st 11:21:19: 2 0 450860 142508 79864 888100 0 0 0 1 0 1 9 7 83 1 0 11:21:20: 0 0 450860 142828 79864 888100 0 0 0 0 982 1965 13 8 80 0 0 11:21:21: 0 0 450860 142852 79864 888096 0 0 0 8 962 1894 10 8 82 0 0 11:21:22: 0 0 450860 142852 79864 888096 0 0 0 0 906 1908 11 7 82 0 0 11:21:23: 0 0 450860 143100 79864 888096 0 0 0 0 982 1915 9 7 84 0 0