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 USE (une méthodologie d’analyse des performances de n’importe quel système).

Il extrait des échantillons à 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.

Suggéré pour : 20 outils en ligne de commande pour surveiller les performances de Linux

Cpustat génère des données de deux manières possibles : une liste de texte pur de l’intervalle de synthèse 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 ne l’avez pas 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 variable GOBIN :

# 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 comme indiqué :

$ $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 la variable 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 taskstats, calculer la différence par rapport à l’échantillon précédent.
  • fetch /proc/stat pour obtenir les statistiques globales du système.

Encore une fois, chaque intervalle de sommeil est ajusté pour tenir compte du temps consacré à la récupération de 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 par défaut les éléments suivants : intervalle d’échantillonnage : 200 ms, intervalle récapitulatif : 2 s (10 échantillons), affichage des 10 meilleurs déclenchements, filtre utilisateur : tous, filtre pid : tous comme indiqué dans la capture d’écran ci-dessous :

$ sudo $GOBIN/cpustat 

À partir de la sortie ci-dessus, voici la signification des mesures récapitulatives à l’échelle du système affichées avant les champs :

  • usr : temps d’exécution en mode utilisateur min/moyenne/max en pourcentage d’un processeur.
  • sys : temps d’exécution min/moyenne/max du mode système en pourcentage d’un processeur.
  • nice – mode utilisateur min/avg/max temps d’exécution de faible priorité en pourcentage d’un processeur.
  • idle : temps d’exécution en mode utilisateur min/moyenne/max en pourcentage d’un processeur.
  • iowait : délai min/moyen/max d’attente des E/S du disque.
  • prun : nombre min/moyen/max de processus exécutables (identique à la moyenne de charge).
  • pblock : nombre min/moyen/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 de la sortie ci-dessus, pour un processus donné, les différentes colonnes signifient :

  • name : nom de processus commun à partir de /proc/pid/stat ou /proc/pid/cmdline.
  • PID : ID de 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 au cours de la période récapitulative, mesuré à partir de /proc/pid/stat.
  • sys : temps système moyen pour le PID au cours de la période récapitulative, mesuré à partir de /proc/pid/stat.
  • nice – indique la valeur « nice » actuelle du processus, mesurée à partir de /proc/pid/stat. Plus élevé signifie « plus agréable ».
  • runq – chronométrage du processus et de tous ses threads exécutables mais en attente d’exécution, mesuré à partir de taskstats via netlink. L’échelle est un pourcentage d’un processeur.
  • iow : chronométrage du processus et de tous ses threads bloqués par les E/S du disque, mesuré à partir des stats de tâches via netlink. L’échelle est un pourcentage d’un processeur, dont la moyenne est calculée sur l’intervalle récapitulatif.
  • swap – temps pendant lequel le processus et tous ses threads ont attendu d’être échangés, mesurés à partir de taskstats via netlink. L’échelle est un pourcentage d’un processeur, dont la moyenne est calculée 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 synthèse, mesuré à partir de Taskstats via NetLink.
  • rss : valeur RSS actuelle récupérée à partir de /proc/pid/stat. Il s’agit de la quantité de mémoire utilisée par ce processus.
  • ctime : somme du temps CPU utilisateur+sys consommé par les enfants attendus qui ont quitté 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 le temps n’est signalé que lorsque le processus fils se termine. Cependant, cela est utile pour mesurer l’impact des tâches cron fréquentes et des vérifications de l’état où le temps processeur est souvent consommé par de nombreux processus enfants.

  • thrd : nombre de threads à la fin de l’intervalle de synthèse, mesuré à partir de /proc/pid/stat.
  • SAM – nombre d’échantillons pour ce processus inclus dans l’intervalle récapitulatif. Les processus qui ont récemment démarré ou qui se sont terminés peuvent avoir été visibles pour moins d’échantillons que l’intervalle récapitulatif.

La commande suivante affiche les 10 principaux processus de l’utilisateur racine 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 top x des processus (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 dépôt Github de 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. Faites-nous part de vos réflexions via la section des commentaires ci-dessous.

Articles connexes: