Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
faq:memoire [2016/04/25 07:41] cicalugafaq:memoire [2018/01/24 10:30] (Version actuelle) – [Avoir une évolution (une courbe) au cours du temps] ltaulell
Ligne 1: Ligne 1:
-===== Connaître le pic mémoire d'un programme ===== 
- 
-  * time 
-Pour connaître le pic mémoire du programme on peut utiliser la commande "time" (qui fournit aussi le temps...) :  
- 
-<code bash> 
- 
-/usr/bin/time -v mon_programme 
- 
-</code> 
- 
-en regardant le champ "Maximum resident set size" 
- 
-Par exemple, pour mon_programme :  
- 
-<code bash> 
- 
-/usr/bin/time -v /home/mon_login/mon_programme.exe IMAGE/p194-t4-v2.inr 
- 
-...  
-Maximum resident set size (kbytes): 12465200  
-...  
- 
-</code> 
- 
-Ici le pic est donc ~12.4 Go. 
- 
-* qstat (job en cours d'exécution) 
- 
-<code> 
-qstat -j <JOB_ID> | grep usage  
-</code> 
- 
-  * qacct (accouting SGE) - lorsque le job aura fini 
- 
-<code> 
-qacct -j <JOB_ID> 
-</code> 
- 
-Renvoie les statistiques du job, dont ''maxvmem'' qui indique le pic de consommation mémoire. 
-===== 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.  
-  * 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, depuis 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 100 est le nombre de fois et 1 c'est 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 à les apprendre), p.ex. Valgrind (avec son module "massif" 
  
faq/memoire.1461570077.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)