Prochaine révision | Révision précédente |
faq:consommation_memoire [2018/01/24 10:19] – créée ltaulell | faq:consommation_memoire [2023/12/13 15:11] (Version actuelle) – ltaulell |
---|
===== Connaître la mémoire utilisée à l'instant t au cours de l’exécution ===== | ====== 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). | * 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. | 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 l'analyse. |
* regarder "top" - on peut rajouter des colonnes en tapant "f" (fields) ; "top" se base sur les informations contenues dans /proc/pid/status | * regarder "top" - on peut rajouter des colonnes en tapant "f" (fields) ; "top" se base sur les informations contenues dans /proc/pid/status |
* on peut aussi accéder aux informations contenues dans /proc/pid/status depuis le programme lui même. Par exemple, en C : | * on peut aussi accéder aux informations contenues dans /proc/pid/status depuis le programme lui même. Par exemple, en C : https://bitbucket.org/code_aster/codeaster-src/src/tip/bibc/utilitai/mempid.c |
| |
| |
| ===== 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) |
| <code bash> |
| |
| top -b -n 100 -d 1 -p pid > output |
| |
| </code> |
| |
| où |
| ''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") |
| |
| ====== À la fin d'un job ====== |
| |
| man ''sacct'', rechercher "ReqMem, MaxRss" |
| |
| Voir aussi [[https://www.ens-lyon.fr/PSMN/Documentation/clusters_usage/accounting.html|Accounting]] |
| |
https://bitbucket.org/code_aster/codeaster-src/src/tip/bibc/utilitai/mempid.c | |
| |
{{tag> faq:consommation faq:execution faq:mémoire}} | {{tag> faq:consommation faq:execution faq:mémoire}} |