Connaître la mémoire utilisée à l'instant t au cours de l’exécution

  • regarder le fichier /proc/pid/status où pid est l'identificateur du process (le répertoire /proc/pid existe et est tenu à jour par Linux seulement pendant l'exécution de ce process).

Il y a ici les diverses mémoires utilisées par le process dont VmPeak (virtuelle), VmHWM (physique), VmRSS (résiduelle). La résiduelle devrait suffire dans ton analyse.

Avoir une évolution (une courbe) au cours du temps

  • soit on se fait notre propre script pour lire régulièrement les infos de /proc/pid/status
  • soit on appelle top en background (et éventuellement on redirige la sortie vers un fichier d'output)
top -b -n 100 -d 1 -p pid > output

pid est à remplacer par le numéro du process qu'on veut suivre (qui est obtenu avec top ou ps, mais on peut automatiser) (ou -n 100 est le nombre de fois et -d 1 le pas en secondes)

  • soit on appelle la fonction C ci-dessus à certains points du programme (là où on sait qu'il y a eu des allocations/desalocations mémoire importantes)
  • soit on utilise des paquets déjà faits, comme ceux-ci (psutil ou ressource) en Python :

http://fa.bianp.net/blog/tag/memory_profiler.html

  • soit on utilise des outils d'analyse plus puissants (mais plus difficiles à apprendre), p.ex. Valgrind (avec son module “massif”)
faq/consommation_memoire.txt · Dernière modification: 2020/08/25 17:58 (modification externe)