Dans cet article, un certain nombre d'outils de profilage de base inclus par défaut dans la plupart des systèmes Linux seront abordés. Les outils présentés dans cet article, vmstat, sar, iostat et mpstat, sont relativement simples mais fournissent des données de base qui peuvent être très utiles lors de l'analyse des performances d'un système. Pour la plupart des exemples, nous utiliserons une machine CentOS 8.
vmstat :statistiques de la mémoire virtuelle
vmstat est l'un des outils les plus utiles pour résoudre les problèmes de performances liés à la mémoire. La commande vmstat fait partie du procps-ng package, qui inclut d'autres commandes utiles d'analyse des performances telles que free et top.
La commande vmstat, si aucun argument n'est fourni, affichera les moyennes de diverses statistiques système depuis le démarrage. La commande vmstat accepte deux arguments. Le premier est le retard , et le second est le compte . Le délai est une valeur en secondes entre les sorties. Le décompte correspond au nombre d'itérations de statistiques à signaler. Si aucun compte n'est donné, vmstat rapportera en permanence des statistiques.
Les statistiques de mémoire sont rapportées en Kio par défaut. L'option -S permet de changer cela pour rapporter en Ko, Mo ou Mio avec -S k , -S m , et -S M , respectivement.
La première ligne de la sortie vmstat est toujours une moyenne depuis le démarrage, donc lors de la collecte des métriques, supprimez la première ligne et utilisez les lignes suivantes. Les deux premières lignes de sortie sont des informations d'en-tête et la troisième est la moyenne du temps de disponibilité. L'exemple suivant montre la sortie de vmstat à partir de la quatrième ligne de sortie :
# vmstat 10 | tail -n +4 1 0 0 479748 1044 570784 0 0 0 5 90 132 0 0 100 0 0 0 0 0 475952 1044 570912 0 0 0 0 81 130 0 0 100 0 0 0 0 0 479456 1044 570856 0 0 0 52 87 137 0 0 100 0 0 ...
Présentation des colonnes vmstat
exemples vmstat
1. La commande vmstat, si aucun argument n'est fourni, affichera les moyennes de diverses statistiques système depuis le démarrage :
# vmstat 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 0 424444 1044 615940 0 0 89 14 58 78 1 0 98 1 0
2. Voici un exemple où vmstat affichera des statistiques toutes les 10 secondes jusqu'à ce qu'il soit interrompu :
# vmstat 10 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 0 426440 1044 615872 0 0 88 14 58 78 1 0 98 1 0 0 0 0 426072 1044 615872 0 0 0 1 92 137 0 0 100 0 0 0 0 0 426072 1044 615872 0 0 0 5 74 116 0 0 100 0 0 ...
3. Si vous vouliez que vmstat se ferme après l'impression de quatre rapports, ajoutez un argument count :
# vmstat 10 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 425236 1044 616252 0 0 86 13 58 78 1 0 98 1 0 0 0 0 424936 1044 616252 0 0 0 1 85 129 0 0 100 0 0 0 0 0 424876 1044 616252 0 0 0 15 70 111 0 0 100 0 0 0 0 0 423360 1044 616252 0 0 0 1 89 130 0 0 100 0 0
sar :le rapport d'activité du système
La commande sar est un outil d'analyse polyvalent qui fait partie du package sysstat. Il fonctionne en deux modes. Il peut lire les données collectées par une tâche cron toutes les 10 minutes, ou il peut être utilisé pour collecter des données instantanées sur l'état du système.
Remarque :La tâche cron est installée en tant que /etc/cron.d/sysstat , qui exécute les commandes /usr/lib64/sa/sa1 et /usr/lib64/sa/sa2 qui collectent des données à l'aide de /usr/lib64/sa/sadc et sar. Ces données sont stockées dans /var/log/sa/sadd, où jj est le jour du mois à deux chiffres.Remarque :Comme la commande vmstat, sar peut être exécuté avec des arguments delay et count pour rapporter des statistiques pour un certain nombre d'itérations et avec un délai spécifié entre chaque itération.Assurez-vous que sar est installé avant de commencer. S'il n'est pas installé, installez-le en utilisant yum :
# yum install sysstat
Une fois installé, configurez sar pour collecter des données à intervalle de 5 minutes :
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib64/sa/sa1 1 1
Pour de meilleurs résultats lors de l'utilisation de sar, assurez-vous de définir un paramètre régional avec une LANG variable d'environnement qui fournit un support 24 heures sur 24. Par exemple, si vous triez les données sar par la première colonne (la colonne de temps), le en_US.UTF-8 locale placera 13:00:00 avant 02:00:00. Cela est susceptible de fausser les points de données et de rendre un graphique sans valeur. La locale c est celle qui répond à cette exigence de tri. Lorsque vous traitez des données sar, remplacez les paramètres régionaux comme ceci :
# LANG=C sar -q Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/21 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
En fait, un alias peut simplement être créé pour sar. Ajoutez la ligne suivante à /etc/bashrc ou ~/.bashrc :
alias sar='LANG=C sar'
sar peut être utilisé pour lire l'un des fichiers journaux (ou n'importe quel fichier de données sar en général) en utilisant l'option -f.
# sar -q -f /var/log/sa/sa09 Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/2021 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
Certaines configurations peuvent être effectuées dans /etc/sysconfig/sysstat dossier. Par exemple, modifiez l'HISTORIQUE variable pour définir le nombre de jours de conservation des archives pour sar.
exemples sar
1. Créez un alias à l'échelle du système pour sar qui oblige sar à signaler au format 24 heures. Source ceci dans le shell actuel.
# echo "alias sar='LANG=c sar'" >> /etc/bashrc # source /etc/bashrc
2. Conservez 60 jours d'archives au lieu de 28. Modifiez la variable HISTORY dans /etc/sysconfig/sysstat.
# vim /etc/sysconfig/sysstat HISTORY=60
3. Rapportez les statistiques d'E/S et de taux de transfert :
# sar -b Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM tps rtps wtps bread/s bwrtn/s 12:10:01 AM 38.16 31.03 7.14 1655.33 390.20 12:20:01 AM 12.11 5.81 6.30 280.99 239.08 12:30:01 AM 8.40 2.34 6.06 105.99 229.95 12:40:01 AM 7.38 1.62 5.76 23.48 211.41 12:50:01 AM 8.69 2.64 6.04 125.33 230.58 01:00:01 AM 8.09 2.26 5.83 77.72 227.70 01:10:02 AM 12.25 6.10 6.15 215.14 235.73 ... Average: 12.81 6.41 6.40 343.31 255.49
4. Signalez l'utilisation de CPU0 :
# sar -P 0 Linux 5.4.10-x86_64-linode132 (web.thegeekdiary.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM 0 11.69 0.00 2.96 0.28 0.06 85.01 12:20:01 AM 0 9.87 0.00 2.53 0.12 0.04 87.44 12:30:01 AM 0 9.96 0.00 2.48 0.09 0.04 87.43 12:40:01 AM 0 9.59 0.00 2.43 0.06 0.04 87.88 12:50:01 AM 0 9.80 0.00 2.46 0.09 0.05 87.59 ... Average: 0 10.00 0.02 2.60 0.14 0.15 87.08
5. Rapportez les statistiques du périphérique réseau à partir du fichier journal actuel.
# sar -n DEV Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:10:01 AM dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... Average: dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ...
6. Configurez une tâche cron supplémentaire pour collecter des données d'utilisation de l'alimentation en plus des données du disque. Modifiez les éléments suivants dans le fichier /etc/sysconfig/sysstat :
SADC_OPTIONS="-S POWER"
iostat et mpstat
Comme sar, iostat et mpstat font également partie du package sysstat. iostat et mpstat prennent en charge les arguments delay et count, tout comme la commande vmstat. iostat rapporte les statistiques de CPU et d'E/S pour les périphériques. partitions et systèmes de fichiers réseau (NFS).
La commande mpstat rapporte les statistiques liées au processeur. Comme sar, il peut être nécessaire de configurer le LANG pour une heure de 24 heures.
exemples iostat et mpstat
1. Afficher la sortie étendue pour /dev/sda.
# iostat -x sda Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.12 0.08 2.85 0.09 0.24 88.63 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 1.76 7.13 3.55 4.17 122.57 93.88 56.07 0.00 0.83 0.71 0.93 0.88 0.68
2. Afficher les statistiques du processeur pour CPU0 :
# LANG=C mpstat -P 0 Linux 5.4.10-x86_64-linode132 (mywebserver.com) 02/09/21 _x86_64_ (1 CPU) 06:32:13 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 06:32:13 0 8.12 0.08 2.37 0.09 0.22 0.25 0.24 0.00 0.00 88.63