Surveiller l’utilisation de la mémoire

modifié le : 13 septembre 2022,
par Guillaume Chéramy
 

Les commandes top et htop ne permettent pas toujours de voir toute la mémoire utilisée par une application, je dis bien une application et non pas un processus. Il est intéressant de pouvoir voir la mémoire utilisée par une application.

Le script ps_mem permet d'avoir une estimation assez proche de cette utilisation.

Utilisation classique :

# ./ps_mem.py
 Private  +   Shared  =  RAM used    Program

100.0 KiB + 232.0 KiB = 332.0 KiB    mdadm
 68.0 KiB + 508.0 KiB = 576.0 KiB    logger
136.0 KiB + 472.0 KiB = 608.0 KiB    smartd
 80.0 KiB + 548.0 KiB = 628.0 KiB    init
152.0 KiB + 488.0 KiB = 640.0 KiB    dbus-daemon
264.0 KiB + 484.0 KiB = 748.0 KiB    udevd
448.0 KiB + 404.0 KiB = 852.0 KiB    getty (7)
140.0 KiB + 820.0 KiB = 960.0 KiB    unlinkd
188.0 KiB + 792.0 KiB = 980.0 KiB    cron
544.0 KiB + 580.0 KiB =   1.1 MiB    proftpd
460.0 KiB + 720.0 KiB =   1.2 MiB    screen
200.0 KiB +   1.0 MiB =   1.2 MiB    mysqld_safe
720.0 KiB + 960.0 KiB =   1.6 MiB    rsyslogd
312.0 KiB +   1.4 MiB =   1.7 MiB    pickup
336.0 KiB +   1.4 MiB =   1.8 MiB    master
372.0 KiB +   1.5 MiB =   1.9 MiB    qmgr
836.0 KiB +   1.3 MiB =   2.2 MiB    bash (2)
  1.8 MiB + 388.0 KiB =   2.2 MiB    cronolog (33)
824.0 KiB +   2.5 MiB =   3.3 MiB    sshd (2)
 12.1 MiB +   1.7 MiB =  13.8 MiB    named
 18.2 MiB +   2.6 MiB =  20.8 MiB    squid3 (2)
 46.3 MiB +   5.6 MiB =  51.9 MiB    mysqld
140.9 MiB +  36.7 MiB = 177.6 MiB    apache2 (12)

 Private  +   Shared  =  RAM used    Program

Warning: Shared memory is not reported accurately by this system.
Values reported could be too large, and totals are not reported

 

Ce qui peut nous intéresser c'est de récupérer seulement les applications qui utilisent plus d'1 MiB et de trier tout ceci dans l'ordre du plus consomateur au moins consomateur :

./ps_mem.py | grep -v Private | awk '{ print $7 " " $8 " " $9}' | grep -v KiB 
| sort -nr
Warning: Shared memory is not reported accurately by this system.
Values reported could be too large, and totals are not reported
183.1 MiB apache2
51.9 MiB mysqld
20.8 MiB squid3
13.8 MiB named
3.3 MiB sshd
2.2 MiB cronolog
2.2 MiB bash
1.9 MiB qmgr
1.8 MiB master
1.7 MiB pickup
1.6 MiB rsyslogd
1.2 MiB screen
1.2 MiB mysqld_safe
1.1 MiB proftpd