A Linux laptop with the terminal open, several penguins looking at the screen, and a performance graph in the background.
Agence web » Actualités du digital » Comment trouver des processus monopolisant les ressources à l'aide de la ligne de commande Linux

Comment trouver des processus monopolisant les ressources à l'aide de la ligne de commande Linux

Points clés à retenir

  • Tous les processus sous Linux nécessitent des cycles de RAM et de CPU, ce qui peut conduire à une concurrence pour ces ressources.
  • Des outils tels que free, top et htop aident à identifier les surcharges de mémoire et l'utilisation élevée du processeur.
  • Utilisez des commandes telles que ps et top pour identifier et supprimer les processus incriminés et retrouver les performances du système.

Chaque morceau de code exécuté sur votre ordinateur Linux a besoin de cycles de RAM et de CPU. Un processus qui prend plus que sa juste part ralentit les autres processus. Voici comment trouver les coupables.

L’équilibre des processus et des ressources

Les cycles de RAM et de CPU sont des ressources limitées. Lorsque le code d'un programme est exécuté, un processus est formé. Outre les processus du système d'exploitation, il existe les processus qui exécutent votre environnement de bureau et toutes les commandes ou applications que vous lancez. Ils nécessitent tous du temps CPU et de la RAM.

Linux et le processeur doivent gérer l'allocation de RAM, équilibrer et planifier la charge de travail du processeur entre les cœurs et les threads, pour garantir que tous les processus soient partagés.

Les applications sont censées être écrites pour s'assurer qu'elles ne monopolisent pas votre machine, mais parfois les choses tournent mal et les processus peuvent tenter de réquisitionner toute votre RAM et monopoliser votre CPU.

C'est à ce moment-là que vous devez être capable d'identifier le processus de piste.

Enquête sur l'utilisation élevée du bélier

Linux utilise la RAM libre comme cache. Même s’il semble que toute votre RAM soit utilisée, c’est probablement une fausse impression. Si nécessaire, les éléments sont supprimés du cache pour allouer de la RAM aux processus réguliers.

La commande gratuite

La commande free vous donne un aperçu instantané de l’utilisation de la mémoire. L'option -h (humain) rend la sortie plus facile à lire.

J'ai exécuté la commande trois fois dans une fenêtre de terminal. Dans une autre fenêtre de terminal, j'ai exécuté un programme qui demandait de grandes quantités de RAM.

free -h
free -h
free -h

La RAM disponible chute à un rythme alarmant. Nous devons identifier le ou les processus derrière cela.

Lecture de /proc/meminfo

Des outils comme top et htop extraient leurs informations de mémoire du pseudo-fichier /proc/meminfo. Parce que /proc/meminfo se comporte comme un fichier, nous pouvons utiliser des utilitaires courants comme cat et moins pour examiner son contenu.

less /proc/meminfo 

Le résultat diffère selon le noyau que vous exécutez et l'architecture de votre processeur, mais les champs standard sont toujours là. C'est un bon moyen d'avoir un affichage plus granulaire du type d'utilisation de la mémoire qui occupe la plus grande partie de votre RAM, mais cela n'identifie pas les processus individuels.

Utilisation de la commande vmstat pour rechercher des volumes de mémoire

La commande vmstat peut nous donner une vue de l'utilisation de la mémoire virtuelle au fil du temps.

Pour voir quatre ensembles de résultats, espacés de cinq secondes, avec les valeurs affichées en MiB, nous pouvons utiliser cette commande :

vmstat 5 4 -S M 

Utilisation de top et htop pour trouver des porcs de mémoire

top et htop fournissent tous deux un tableau de bord dynamique des informations système, avec un tableau de processus affichant une ligne d'informations par processus.

Pour trier la table de processus par utilisation de la RAM, appuyez sur Shift+M.

Un programme appelé gobble a été lancé à deux reprises. Il utilise les deux tiers de la RAM. Nous allons tuer ces deux processus.

Appuyez sur k pour démarrer la fonction kill.

En haut, nous devons fournir l’ID du processus que nous souhaitons tuer. Par défaut, la fonction kill utilisera l'ID du processus sur la ligne supérieure. Parce que nous avons trié le tableau par utilisation de la RAM, c'est l'ID que nous voulons utiliser, nous pouvons donc simplement appuyer sur Entrée.

On nous demande quel signal nous devrions envoyer au processus. SIGKILL est le signal numéro neuf. Nous devons entrer le chiffre neuf, puis appuyer à nouveau sur Entrée.

Si nous répétons ce processus deux fois, les deux instances du programme gobble sont terminées.

Dans htop, c'est très similaire. Déplacez la barre de surbrillance vers le processus que vous souhaitez arrêter. Appuyez sur k pour démarrer le processus de mise à mort. Une liste de signaux apparaît à gauche de la fenêtre.

Déplacez la petite barre en surbrillance sur l’entrée 9 SIGKILL, puis appuyez sur Entrée.

Utilisation de la commande ps pour rechercher des mémoires

La commande ps nous donne l'ID du processus, et peut également nous donner le mère ID de processus. Si de nombreux processus consommant de la mémoire ont été lancés par le même processus parent, la suppression du processus parent tue également ses processus enfants.

Nous utiliserons l'option -e (chaque processus) et les options -o (format de sortie défini par l'utilisateur). Dans notre résultat, nous demandons :

  • pid: ID de processus.
  • ppid: ID du processus parent.
  • communication: Le nom de la commande.
  • %mémoire: Le pourcentage de RAM utilisé par ce processus.
  • rss: La taille de l'ensemble résident. Il s'agit de la mémoire physique non échangée utilisée par un processus, en kilo-octets. Notez que cela ne compte pas la mémoire réservée qui n’a pas réellement été utilisée, ni la mémoire virtuelle. Cependant, pour la tâche à accomplir, c’est un très bon indicateur.
  • % processeur: Il s'agit du temps CPU dont dispose le processus jusqu'à présent, divisé par le temps d'exécution du processus.

Nous trions par mémoire. Le signe moins signifie le tri inversé. Nous pouvons obtenir les 10 pires contrevenants en transmettant les résultats par la tête.

ps -e -o pid,ppid,comm,%mem,rss,%cpu  

Enquête sur l'utilisation élevée du processeur

La procédure de traque des monopolisateurs de processeur est très similaire à celles dont nous avons parlé pour les monopolisateurs de mémoire. Nous devons identifier le ou les processus incriminés et obtenir leur identifiant de processus.

Utilisation de top et htop pour trouver des porcs CPU

Nous pouvons utiliser top et htop presque exactement comme nous l'avons fait pour traquer les processus gourmands en mémoire. Par défaut, top et htop trient leurs tables de processus par colonne %CPU. Si vous avez modifié la colonne de tri, vous pouvez appuyer sur Shift+P (pour le processeur) pour restaurer le tri par %CPU.

Il existe un processus appelé drain monopolisant presque tout le temps CPU pour lui-même. Après avoir identifié le coupable, nous pouvons appuyer sur k pour invoquer la fonction kill process.

Utilisation de la commande mpstat pour surveiller l'utilisation du processeur

Vous devez faire attention lorsque vous tuez des processus. Certains, en particulier les processus système, doivent être laissés seuls. La commande mpstat vous donne un instantané de l'utilisation du processeur pour les processus utilisateur et système.

Vous devrez installer mpstat sur Fedora et Manjaro, mais il était déjà installé sur notre PC Ubuntu.

Sur Fedora, vous devez taper :

sudo dnf install sysstat 

Sur Manjaro, la commande est :

sudo pacman -S sysstat 

Nous utiliserons l'option -P all (tous les processeurs) et demanderons des rapports toutes les deux secondes, pour un total de cinq rapports.

mpstat -P all 2 5 

Nous pouvons voir que la charge sur le processeur vient du côté utilisateur et non du côté système. La sixième ligne représente la moyenne des cinq rapports que nous avons demandés.

Utiliser ps pour trouver des porcs CPU

Nous pouvons également utiliser ps pour rechercher des processus gourmands en CPU. Avec une légère modification de notre commande précédente, nous pouvons trier par CPU.

ps -e -o pid,ppid,comm,%mem,rss,%cpu  

L'entrée sur ps est un faux drapeau, nous savons qu'elle n'a fonctionné que pendant une fraction de seconde. Sur la deuxième ligne, nous pouvons voir l’ID du processus qui monopolise le processeur. Avec ces informations, nous pouvons utiliser top ou htop, ou la commande kill, pour terminer le processus.

Un peu de ménage

La plupart du temps, votre ordinateur Linux fonctionnera parfaitement, tous les processus fonctionnant dans des tolérances acceptables. Si vous remarquez que votre ordinateur devient lent, étudiez-le avec ces outils. Vous pourriez trouver une mémoire ou un monopolisateur de processeur en cours d'exécution.

★★★★★