GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur

Présentation

Linux est très populaire pour ses utilitaires de ligne de commande, qui non seulement facilitent toutes les tâches à accomplir, mais permettent également de gagner beaucoup de temps, qui serait autrement perdu dans les utilitaires basés sur l'interface utilisateur graphique.

C'est l'une des raisons pour lesquelles Linux est un système d'exploitation préféré pour les serveurs et les machines administratives. Combinez la connaissance des commandes Linux et des scripts shell et vous disposez d'une boîte à outils appropriée d'administration système.

Vous avez peut-être remarqué que parfois votre système consomme trop de mémoire, ce qui rend votre application lente ou ne répond pas.

Selon vous, quelle serait la meilleure approche pour identifier les processus qui consomment le plus de mémoire sur une machine Linux ?

Cela peut donc être facilement identifié à l'aide de la commande top et la commande ps et nous vous expliquerons comment utiliser ces deux commandes pour identifier les processus qui consomment toutes les ressources de votre système.

Aujourd'hui, nous verrons comment voir les processus les plus gourmands en mémoire et en ressources CPU sous Linux.

Répertorier tous les processus en cours d'exécution sous Linux

Nous allons vous expliquer trois méthodes pour y parvenir

1-Répertorier les principaux processus Linux par utilisation de la mémoire et du processeur en utilisant "ps"

Donc la commande ps a beaucoup d'options et d'arguments disponibles pour afficher la sortie dans différents formats. Cependant, il peut être simplement exécuté avec l'argument ‘aux’ pour obtenir un aperçu général des processus en cours d'exécution.

# ps aux

Nous utiliserons l'argument '–sort' pour trier la sortie par utilisation de la mémoire et du processeur.

La syntaxe pour utiliser l'argument de tri est :

# ps aux --sort <column_name>

De même, pour inverser le tri de la sortie, les éléments suivants peuvent être utilisés :

# ps aux --sort -<column_name>

Puisque nous voulons les meilleurs processus par utilisation de la mémoire et du processeur, nous allons trier la sortie par ordre inverse et placer ces colonnes comme argument de nom de colonne.

Rechercher les principaux processus en cours d'exécution par utilisation de la mémoire

$ ps aux --sort -%mem

Rechercher les principaux processus en cours d'exécution par utilisation du processeur

$ ps aux --sort -%cpu

Enfin, pour limiter le nombre de processus affichés à 10, nous dirigeons la sortie vers la commande head .

Pour %mem

[root@unixcop ~]# ps aux --sort -%mem | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         935  0.0  2.2 305600 42468 ?        Ssl  08:40   0:01 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
root         936  0.0  2.1 229132 40776 ?        S    08:40   0:00 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
root         964  0.0  1.5 416596 28384 ?        Ssl  08:40   0:00 /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P
apache      1056  0.0  1.4 1959764 27272 ?       Sl   08:40   0:00 /usr/sbin/httpd -DFOREGROUND
polkitd      867  0.0  1.3 1631160 25108 ?       Ssl  08:40   0:00 /usr/lib/polkit-1/polkitd --no-debug
postgres     985  0.0  1.3 287128 24564 ?        Ss   08:40   0:00 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
apache      1055  0.0  1.2 1828628 23344 ?       Sl   08:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache      1054  0.0  1.2 1828628 23152 ?       Sl   08:40   0:00 /usr/sbin/httpd -DFOREGROUND
root         949  0.0  1.0 391680 19140 ?        Ssl  08:40   0:00 /usr/sbin/NetworkManager --no-daemon
[root@unixcop ~]# 

Pour %cpu

[root@unixcop ~]# ps aux --sort -%cpu | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.7 186172 14128 ?        Ss   08:39   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root        1839  0.1  0.0      0     0 ?        I    08:53   0:02 [kworker/1:1-events]
root           2  0.0  0.0      0     0 ?        S    08:39   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   08:39   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   08:39   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   08:39   0:00 [kworker/0:0H-events_highpri]
root           9  0.0  0.0      0     0 ?        I<   08:39   0:00 [mm_percpu_wq]
root          10  0.0  0.0      0     0 ?        S    08:39   0:00 [ksoftirqd/0]
root          11  0.0  0.0      0     0 ?        I    08:39   0:01 [rcu_sched]
[root@unixcop ~]# 

Aussi

Utilisez le format de commande "ps" ci-dessous pour inclure des informations spécifiques sur ces processus dans la sortie :

[qadry@rhel-pc ~]$ ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head
    PID    PPID %MEM %CPU CMD
   4187       1 15.0  7.1 /usr/lib/vmware/bin/vmware-vmx -s vmx.stdio.keep=TRUE -# product=1;name=VMware Workstation;version=16.1.2;buildnumber=17966106;licensename=VMware Workstation;licenseversion=16.0; -@ duplex=3;msgs=ui /run/media/qadry/New Volume/VMs/CentOS 8 64-bit/CentOS 8 64-bit.vmx
   3128    2307  7.2  9.0 /usr/lib64/firefox/firefox
   3200    3128  7.0  8.0 /usr/lib64/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   1927       1  5.3  0.9 /usr/libexec/packagekitd
   5814    3128  4.4  3.3 /usr/lib64/firefox/firefox -contentproc -childID 23 -isForBrowser -prefsLen 10019 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   5438    3128  3.7  1.3 /usr/lib64/firefox/firefox -contentproc -childID 21 -isForBrowser -prefsLen 10019 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   2794    2191  3.2  0.4 /usr/bin/gnome-software --gapplication-service
   5047    3128  3.2  1.3 /usr/lib64/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10019 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   2307    2191  2.7  3.0 /usr/bin/gnome-shell
[qadry@rhel-pc ~]$ 

Si vous souhaitez voir uniquement le nom de la commande au lieu du chemin absolu de la commande, utilisez le format de commande « ps » suivant :

[qadry@rhel-pc ~]$ ps -eo pid,ppid,%mem,%cpu,comm --sort=-%mem | head
    PID    PPID %MEM %CPU COMMAND
   4187       1 15.0  7.1 vmware-vmx
   3128    2307  7.1  9.0 firefox
   3200    3128  6.9  7.9 file:// Content
   1927       1  5.3  0.9 packagekitd
   5814    3128  4.4  3.3 Web Content
   5438    3128  3.7  1.3 Web Content
   2794    2191  3.2  0.4 gnome-software
   5047    3128  3.2  1.3 Web Content
   2307    2191  2.7  3.0 gnome-shell
[qadry@rhel-pc ~]$ 

Pour moi, je vous ai recommandé d'utiliser cette commande pour obtenir le meilleur processus.

[qadry@rhel-pc ~]$ ps -eo pid,ppid,cmd,comm,%mem,%cpu --sort=-%mem | head
    PID    PPID CMD                         COMMAND         %MEM %CPU
   4187       1 /usr/lib/vmware/bin/vmware- vmware-vmx      15.0  7.9
   3128    2307 /usr/lib64/firefox/firefox  firefox          7.1  9.3
   3200    3128 /usr/lib64/firefox/firefox  file:// Content  6.3  6.4
   1927       1 /usr/libexec/packagekitd    packagekitd      5.3  1.0
   5814    3128 /usr/lib64/firefox/firefox  Web Content      4.1  2.8
   5438    3128 /usr/lib64/firefox/firefox  Web Content      3.7  1.5
   2794    2191 /usr/bin/gnome-software --g gnome-software   3.2  0.4
   5047    3128 /usr/lib64/firefox/firefox  Web Content      3.2  1.5
   4515    2307 /snap/spotify/46/usr/share/ spotify          2.6  3.2
[qadry@rhel-pc ~]$ 

2-Répertorier les principaux processus Linux par mémoire et utilisation du processeur en utilisant "top"

La commande Linux "top" est la meilleure commande largement utilisée que tout le monde utilise pour surveiller les performances du système Linux.

Il affiche une vue en temps réel des processus système exécutés sur l'interface interactive.

Vous devez exécuter la commande top en mode batch pour identifier les processus les plus gourmands en mémoire sous Linux.

[root@unixcop ~]# top -c -b -o +%MEM | head -n 20 | tail -15

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    935 root      20   0  305600  42468  18448 S   0.0   2.3   0:01.00 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
    936 root      20   0  229132  40776  39104 S   0.0   2.2   0:00.28 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
    964 root      20   0  416596  28384  15104 S   0.0   1.5   0:00.66 /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P
   1056 apache    20   0 1959764  27272   9976 S   0.0   1.5   0:00.99 /usr/sbin/httpd -DFOREGROUND
    867 polkitd   20   0 1631160  25108  17636 S   0.0   1.3   0:00.23 /usr/lib/polkit-1/polkitd --no-debug
    985 postgres  20   0  287128  24564  23188 S   0.0   1.3   0:00.14 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
   1055 apache    20   0 1828628  23344  10124 S   0.0   1.2   0:01.04 /usr/sbin/httpd -DFOREGROUND
   1054 apache    20   0 1828628  23152   9932 S   0.0   1.2   0:01.04 /usr/sbin/httpd -DFOREGROUND
    949 root      20   0  391680  19140  16660 S   0.0   1.0   0:00.20 /usr/sbin/NetworkManager --no-daemon
   1053 apache    20   0  664748  17780   9564 S   0.0   1.0   0:00.19 /usr/sbin/httpd -DFOREGROUND
    933 root      20   0  227456  15172  12668 S   0.0   0.8   0:00.14 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=fi+
    745 root      20   0  128836  14676   9132 S   0.0   0.8   0:00.73 /usr/lib/systemd/systemd-udevd
    871 root      20   0  218964  14416  12368 S   0.0   0.8   0:00.08 /usr/sbin/sssd -i --logger=files
[root@unixcop ~]# 

Si vous souhaitez uniquement voir le nom de la commande au lieu du chemin absolu de la commande, utilisez le format de commande supérieur ci-dessous :

[root@unixcop ~]# top -b -o +%MEM | head -n 20 | tail -15

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    935 root      20   0  305600  42468  18448 S   0.0   2.3   0:01.00 firewalld
    936 root      20   0  229132  40776  39104 S   0.0   2.2   0:00.28 sssd_nss
    964 root      20   0  416596  28384  15104 S   0.0   1.5   0:00.66 tuned
   1056 apache    20   0 1959764  27272   9976 S   6.7   1.5   0:01.01 httpd
    867 polkitd   20   0 1631160  25108  17636 S   0.0   1.3   0:00.23 polkitd
    985 postgres  20   0  287128  24564  23188 S   0.0   1.3   0:00.14 postmaster
   1055 apache    20   0 1828628  23344  10124 S   0.0   1.2   0:01.06 httpd
   1054 apache    20   0 1828628  23152   9932 S   0.0   1.2   0:01.06 httpd
    949 root      20   0  391680  19140  16660 S   0.0   1.0   0:00.20 NetworkManager
   1053 apache    20   0  664748  17780   9564 S   0.0   1.0   0:00.19 httpd
    933 root      20   0  227456  15172  12668 S   0.0   0.8   0:00.14 sssd_be
    745 root      20   0  128836  14676   9132 S   0.0   0.8   0:00.73 systemd-udevd
    871 root      20   0  218964  14416  12368 S   0.0   0.8   0:00.08 sssd
[root@unixcop ~]# 

3-Vérification des processus gourmands en mémoire sous Linux à l'aide de la commande "ps_mem"

L'utilitaire ps_mem est utilisé pour afficher la mémoire centrale utilisée par programme (et non par processus).

Cet utilitaire vous permet de vérifier la quantité de mémoire utilisée par programme.

Il calcule la quantité de mémoire privée et partagée par rapport à un programme et renvoie la mémoire totale utilisée de la manière la plus appropriée.

Il utilise la logique suivante pour calculer l'utilisation de la RAM. RAM totale =somme (RAM privée pour les processus du programme) + somme (RAM partagée pour les processus du programme)

[root@unixcop ~]# ps_mem
 Private  +   Shared  =  RAM used	Program

912.0 KiB + 122.0 KiB =   1.0 MiB	auditd
696.0 KiB + 340.5 KiB =   1.0 MiB	chronyd
952.0 KiB + 157.0 KiB =   1.1 MiB	crond
844.0 KiB + 425.0 KiB =   1.2 MiB	irqbalance
  1.3 MiB + 478.5 KiB =   1.7 MiB	dbus-daemon
  1.0 MiB + 874.5 KiB =   1.9 MiB	login
  1.2 MiB +   1.3 MiB =   2.5 MiB	bash (2)
  1.8 MiB +   1.2 MiB =   3.1 MiB	systemd-journald
  2.4 MiB +   1.1 MiB =   3.4 MiB	systemd-logind
  1.8 MiB +   1.7 MiB =   3.5 MiB	(sd-pam)
  2.8 MiB + 853.0 KiB =   3.7 MiB	vmtoolsd
  2.2 MiB +   1.8 MiB =   4.0 MiB	sssd
  3.6 MiB + 839.5 KiB =   4.4 MiB	VGAuthService
  3.1 MiB +   1.8 MiB =   4.9 MiB	sssd_be
  1.7 MiB +   3.9 MiB =   5.6 MiB	sshd (3)
  5.6 MiB + 935.0 KiB =   6.5 MiB	rsyslogd
  6.5 MiB +   1.1 MiB =   7.6 MiB	systemd-udevd
  3.5 MiB +   4.6 MiB =   8.1 MiB	systemd (2)
  6.6 MiB +   1.8 MiB =   8.4 MiB	NetworkManager
 13.3 MiB +   2.6 MiB =  15.9 MiB	tuned
 14.9 MiB +   1.6 MiB =  16.5 MiB	polkitd
  8.9 MiB +  12.8 MiB =  21.7 MiB	postmaster (8)
 25.6 MiB +   2.9 MiB =  28.5 MiB	firewalld
 27.6 MiB +   2.0 MiB =  29.6 MiB	sssd_nss
 44.1 MiB +   9.5 MiB =  53.7 MiB	httpd (6)
---------------------------------
                        239.4 MiB
=================================
[root@unixcop ~]# 

Conclusion

Dans cet article, nous avons examiné comment répertorier les processus sur votre système et les trier en fonction de l'utilisation de la RAM et du processeur sous forme descendante à l'aide des utilitaires ps, top et ps_mem.

Nous avons vu comment utiliser la commande ps pour voir les processus les plus gourmands en ressources sous Linux. La commande ps est une commande complexe et sa maîtrise permet d'administrer correctement le système et même d'utiliser la sortie dans un script d'automatisation.

Nous montrons également comment utiliser top commande utilisé pour surveiller les performances du système Linux. et nous l'avons exécuté en mode batch pour identifier les processus les plus gourmands en mémoire sous Linux.

Nous avons également utilisé le ps_mem utilitaire est utilisé pour afficher la mémoire centrale utilisée par programme.


Linux
  1. Trouvez les 15 meilleurs processus par utilisation de la mémoire avec "top" en mode batch

  2. Trouver les processus en cours d'exécution les plus élevés en fonction de la mémoire et de l'utilisation du processeur les plus élevées sous Linux

  3. Comment obtenir l'utilisation du processeur

  4. ps et top donnent une utilisation différente du processeur

  5. Comment trouver quel processus provoque une utilisation élevée du processeur

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire

Comment interpréter l'utilisation de la mémoire Top/htop ?

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur sous Linux

Comment trier la commande supérieure en fonction de l'utilisation de la mémoire

Utilisation de la mémoire de la commande TOP

En quoi le temps CPU et l'utilisation du CPU sont-ils identiques ?