Memstat

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Diagnostic mémoire par process
Commande memstat · /proc/PID/smaps
Contexte Repérer une fuite mémoire progressive
Voir aussi Smem · Pmap

Pour diagnostiquer une fuite mémoire d'une application (croissance continue de la consommation dans le temps), plusieurs approches complémentaires, du plus bas niveau au plus synthétique.

Détail brut via /proc

cat /proc/PID/smaps | grep Size     # taille de chaque mapping mémoire du process
pstree -Ap                          # arborescence des process avec PID, pour identifier le bon PID

`smaps` donne le détail mapping par mapping (heap, stack, bibliothèques, anonymous) — très verbeux mais exhaustif.

memstat

memstat -wp PID | sort -k1 -nr

`memstat` résume l'usage mémoire d'un process de façon plus lisible que `smaps` brut. Selon la distribution, l'outil peut ne pas être empaqueté nativement — dans ce cas, Smem couvre le même besoin avec une distribution plus large et une métrique PSS plus fiable pour comparer plusieurs process entre eux.

Méthode pour confirmer une fuite

Une seule mesure ne prouve rien — une fuite se confirme par une tendance :

while true; do
  date; grep VmRSS /proc/PID/status
  sleep 300
done

Une croissance de `VmRSS` continue et non bornée dans le temps (sans corrélation avec une charge qui augmenterait elle aussi) est le signe d'une fuite plutôt que d'un usage normal de cache applicatif.

Voir aussi

  • Smem — rapport mémoire avancé (PSS/USS), alternative moderne à memstat
  • Pmap — cartographie mémoire détaillée d'un process unique