Recherche de site Web

Cpustat - Surveille l'utilisation du processeur en exécutant des processus sous Linux


Cpustat est un puissant programme de mesure des performances du système pour Linux, écrit à l'aide du langage de programmation Go. Il tente de révéler l'utilisation et la saturation du processeur de manière efficace, en utilisant la méthode d'utilisation de saturation et d'erreurs (USE) (une méthodologie d'analyse des performances de n'importe quel système).

Il extrait des échantillons à plus haute fréquence de chaque processus exécuté sur le système, puis résume ces échantillons à une fréquence plus basse. Par exemple, il peut mesurer chaque processus toutes les 200 ms et résumer ces échantillons toutes les 5 secondes, y compris les valeurs min/moyenne/max pour certaines métriques.

Lecture suggérée : 20 outils de ligne de commande pour surveiller les performances de Linux

Cpustat génère les données de deux manières possibles : une liste de texte pur de l'intervalle récapitulatif et un tableau de bord défilant coloré de chaque échantillon.

Comment installer Cpustat sous Linux

Vous devez avoir Go (GoLang) installé sur votre système Linux pour pouvoir utiliser cpustat, cliquez sur le lien ci-dessous pour suivre les étapes d'installation de GoLang, c'est-à-dire si vous n'avez pas il a installé :

  1. Installer GoLang (Go Programming Language) sous Linux

Une fois que vous avez installé Go, tapez la commande go get ci-dessous pour l'installer, cette commande installera le binaire cpustat dans votre GOBIN variable :

go get github.com/uber-common/cpustat

Comment utiliser Cpustat sous Linux

Une fois le processus d'installation terminé, exécutez cpustat comme suit avec les privilèges root à l'aide de la commande sudo, c'est-à-dire si vous contrôlez le système en tant qu'utilisateur non root, sinon vous obtiendrez l'erreur suivante :

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Remarque : Pour exécuter cpustat ainsi que tous les autres programmes Go que vous avez installés sur votre système comme n'importe quelle autre commande, incluez GOBIN dans votre variable d'environnement PATH. Ouvrez le lien ci-dessous pour savoir comment définir la variable PATH sous Linux.

  1. Apprenez à définir vos variables ` PATH de manière permanente sous Linux

C'est ainsi que fonctionne cpustat ; le répertoire /proc est interrogé pour obtenir la liste actuelle des ID de processus pour chaque intervalle, et :

  • pour chaque PID, lisez /proc/pid/stat, puis calculez la différence par rapport à l'échantillon précédent.
  • s'il s'agit d'un nouveau PID, lisez /proc/pid/cmdline.
  • pour chaque PID, envoyez un message netlink pour récupérer les statistiques de tâches, calculez la différence par rapport à l'échantillon précédent.
  • récupérez /proc/stat pour obtenir les statistiques globales du système.

Encore une fois, chaque intervalle de sommeil est ajusté pour tenir compte du temps passé à récupérer toutes ces statistiques. De plus, chaque échantillon enregistre également le temps nécessaire pour mettre à l'échelle chaque mesure en fonction du temps réel écoulé entre les échantillons. Cela tente de tenir compte des retards dans cpustat lui-même.

Lorsqu'il est exécuté sans aucun argument, cpustat affichera les éléments suivants par défaut : intervalle d'échantillonnage : 200 ms, intervalle récapitulatif : 2 s (10 échantillons), affichant les 10 procédures principales, filtre utilisateur : tous, filtre pid : tous comme montré dans la capture d'écran ci-dessous :

sudo $GOBIN/cpustat 

D'après le résultat ci-dessus, voici la signification des mesures récapitulatives à l'échelle du système affichées avant les champs :

  • usr – durée d'exécution min/avg/max en mode utilisateur en pourcentage du processeur.
  • sys – durée d'exécution min/avg/max en mode système en pourcentage d'un processeur.
  • nice – temps d'exécution min/moy/max en mode utilisateur à faible priorité en pourcentage du processeur.
  • inactif – temps d'exécution min/moy/max en mode utilisateur en pourcentage du processeur.
  • iowait – délai d'attente min/moy/max pour les E/S du disque.
  • prun – nombre min/moy/max de processus dans un état exécutable (identique à la charge moyenne).
  • pblock – nombre min/moy/max de processus bloqués sur les E/S du disque.
  • pstart – nombre de processus/threads démarrés dans cet intervalle récapitulatif.

Toujours à partir du résultat ci-dessus, pour un processus donné, les différentes colonnes signifient :

  • nom – nom de processus commun provenant de /proc/pid/stat ou /proc/pid/cmdline.
  • pid – identifiant du processus, également appelé « tgid ».
  • min – échantillon le plus bas du temps utilisateur + système pour le pid, mesuré à partir de /proc/pid/stat. L'échelle est un pourcentage d'un processeur.
  • max – échantillon le plus élevé de temps utilisateur + système pour ce pid, également mesuré à partir de /proc/pid/stat.
  • usr – temps d'utilisation moyen du pid sur la période récapitulative, mesuré à partir de /proc/pid/stat.
  • sys – temps système moyen pour le pid sur la période récapitulative, mesuré à partir de /proc/pid/stat.
  • nice – indique la valeur « nice » actuelle pour le processus, mesurée à partir de /proc/pid/stat. Plus haut signifie « plus agréable ».
  • runq – temps passé par le processus et tous ses threads à être exécutables mais en attente d'exécution, mesuré à partir des statistiques de tâches via netlink. L'échelle est un pourcentage d'un processeur.
  • iow – temps pendant lequel le processus et tous ses threads sont bloqués par les E/S du disque, mesuré à partir des statistiques de tâches via netlink. L'échelle est un pourcentage d'un processeur, moyenné sur l'intervalle récapitulatif.
  • swap : temps passé par le processus et tous ses threads à attendre d'être échangés, mesuré à partir des statistiques de tâches via netlink. L'échelle est un pourcentage d'un processeur, moyenné sur l'intervalle récapitulatif.
  • vcx et icx : nombre total de changements de contexte volontaires par le processus et tous ses threads au cours de l'intervalle de résumé, mesuré à partir des statistiques de tâches via netlink.
  • rss – valeur RSS actuelle extraite de /proc/pid/stat. C'est la quantité de mémoire utilisée par ce processus.
  • ctime – somme du temps CPU utilisateur + système consommé par les enfants attendus qui se sont terminés pendant cet intervalle récapitulatif, mesurée à partir de /proc/pid/stat.

Notez que les processus enfants de longue durée peuvent souvent confondre cette mesure, car l'heure n'est signalée qu'à la fin du processus enfant. Cependant, cela est utile pour mesurer l'impact des tâches cron fréquentes et des contrôles de santé où le temps CPU est souvent consommé par de nombreux processus enfants.

  • thrd – nombre de threads à la fin de l'intervalle de résumé, mesuré à partir de /proc/pid/stat.
  • sam : nombre d'échantillons pour ce processus inclus dans l'intervalle de résumé. Les processus récemment démarrés ou terminés peuvent avoir été visibles pour moins d'échantillons que l'intervalle de résumé.

La commande suivante affiche les 10 principaux processus utilisateur root en cours d'exécution sur le système :

sudo $GOBIN/cpustat -u root

Pour afficher la sortie dans un mode terminal sophistiqué, utilisez l'indicateur -t comme suit :

sudo $GOBIN/cpustat -u roo -t

Pour afficher le nombre x de processus principaux (la valeur par défaut est 10), vous pouvez utiliser l'indicateur -n, la commande suivante affiche les 20 principaux processus Linux en cours d'exécution sur le système :

sudo $GOBIN/cpustat -n 20 

Vous pouvez également écrire le profil CPU dans un fichier à l'aide de l'option -cpuprofile comme suit, puis utiliser la commande cat pour afficher le fichier :

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Pour afficher les informations d'aide, utilisez l'indicateur -h comme suit :

sudo $GOBIN/cpustat -h

Trouvez des informations supplémentaires dans le référentiel Github cpustat : https://github.com/uber-common/cpustat

C'est tout! Dans cet article, nous vous avons montré comment installer et utiliser cpustat, un outil utile de mesure des performances du système pour Linux. Partagez vos réflexions avec nous via la section commentaires ci-dessous.