Smem
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Rapport mémoire avancé (PSS/USS) |
| Commande | smem
|
| Contexte | Mesurer la vraie consommation mémoire d'un ensemble de process |
| Voir aussi | Pmap · Mémoire |
smem affiche des rapports mémoire plus précis que top/ps, en particulier via la métrique PSS — indispensable pour additionner correctement la consommation de plusieurs process qui partagent des bibliothèques.
Installation
apt install smem # Debian/Ubuntu
yum install smem # RHEL/CentOS
VSS, RSS, PSS, USS : la différence essentielle
- VSS (Virtual Set Size) — mémoire virtuelle totale adressée par le process. Souvent trompeur : inclut de la mémoire jamais réellement utilisée (réservations, mappings paresseux).
- RSS (Resident Set Size) — mémoire physique réellement en RAM pour ce process. Plus parlant que VSS, mais compte plusieurs fois la mémoire partagée (une bibliothèque chargée par 10 process apparaît 10 fois en RSS cumulé).
- PSS (Proportional Set Size) — comme RSS, mais la mémoire partagée est divisée équitablement entre les process qui la partagent. C'est la métrique à utiliser pour additionner correctement la consommation de plusieurs process sans double-compter.
- USS (Unique Set Size) — mémoire propre à ce process uniquement, non partagée. C'est ce qui serait effectivement libéré si on tuait ce process précis.
Conséquence pratique : additionner les RSS de 10 workers Apache/PHP-FPM surestime largement leur consommation réelle (chaque bibliothèque partagée est comptée 10 fois) — additionner leurs PSS donne un chiffre correct.
Usage
smem -ntkP httpd # tri, unités lisibles, tous les process "httpd"
smem -ktP httpd -c "vss uss pss rss" -r rss # colonnes personnalisées, triées par rss
# visualiser les mappings mémoire détaillés (y compris "anonymous")
smem -m -ktP httpd -c "map uss pss rss" -r rss
# diagramme camembert par nom de process, basé sur rss
smem --pie name -s rss