Bonjour,
Est-ce qu'il existe une commande comme time mais qui calcule la mémoire maximale utilisée ?
De sorte que je puisse faire :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "mémoire" g++ hello.cpp
Bonjour,
Est-ce qu'il existe une commande comme time mais qui calcule la mémoire maximale utilisée ?
De sorte que je puisse faire :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "mémoire" g++ hello.cpp
Bonjour
Quelle mémoire?
- Mémoire physique?
- Mémoire virtuelle?
- Mémoire partagée?
- Mémoire swap?
- Pourcentage de la mémoire totale?
Tu peux faire une photo à un moment donné d'un processus par la commande ps (man ps pour les options et personnalisations):
Si tu veux tracer le processus, tu peux utiliser top puis filtrer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ ps -p 1736 -o pid,ucmd,rss,vsize,%mem PID CMD RSS VSZ %MEM 1736 links2 10656 18256 3.3
Ici, une ligne toute les dixièmes de seconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $ top -b -n 5 -d 0.1 -p 1736 |sed '/^ /!d'|sed '3~2d' PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1736 florian 20 0 18256 10m 2884 S 0.0 3.3 0:10.48 links2 1736 florian 20 0 18256 10m 2884 S 0.0 3.3 0:10.48 links2 1736 florian 20 0 18256 10m 2884 S 0.0 3.3 0:10.48 links2 1736 florian 20 0 18256 10m 2884 S 0.0 3.3 0:10.48 links2 1736 florian 20 0 18256 10m 2884 S 0.0 3.3 0:10.48 links2
Au fait, si tu veux récupérer le pid du processus, tu peux faire
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ g++ moncode & $ jobs -p %% 1736
Sinon, tu peux installer, à partir des dépots, memstat ou smem, comme décrit dans cet article
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ g++ moncode & $ echo $! 1736
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $ memstat -wp 1302 416k: PID 1302 (/bin/bash) 232k( 220k): /lib/libncurses.so.5.7 1302 40k( 32k): /lib/libnss_nis-2.11.3.so 1302 16k( 8k): /lib/libdl-2.11.3.so 1302 84k( 76k): /lib/libnsl-2.11.3.so 1302 48k( 40k): /lib/libnss_files-2.11.3.so 1302 116k( 108k): /lib/ld-2.11.3.so 1302 1288k( 1272k): /lib/libc-2.11.3.so 1302 32k( 24k): /lib/libnss_compat-2.11.3.so 1302 28k( 0k): /usr/share/locale/fr/LC_MESSAGES/bash.mo 1302 28k( 28k): /usr/lib/gconv/gconv-modules.cache 1302 140k( 0k): /usr/share/locale/fr/LC_MESSAGES/libc.mo 1302 1492k( 0k): /usr/lib/locale/locale-archive 1302 796k( 776k): /bin/bash 1302 -------- 4756k ( 2584k)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ smem -kntP [b]ash PID User Command Swap USS PSS RSS 1302 1000 bash 0 1.1M 1.2M 2.0M ------------------------------------------------------------------------------- 39 1 0 1.1M 1.2M 2.0M
Boujour,
Merci beaucoup pour cette réponse.
Que veut dire le pid du processus?
(Est-ce la mémoire maximale utilisé par mon programme lors de la compilation de mon code?)
Merci.
Le pid est le Process identifier, c'est-à-dire le numéro alloué à chaque prcessus pour l'identifier (le nom n'étant pas forcément unique).
Lorsque linux démarre, le processus s'appelle 'init' et porte le numéro 1. Quand il se termine, l'ordi est probablement en train de s'éteindre.
Un pid de 2000 signifie qu'au moins 2000 processus ont été lancés, qu'ils soient encore vivants ou non.
Tu as commencé la discussion en parlant de 'time'. Mais 'time' ne fait que la différence entre la fin et le début. Il n'y a pas de système qui trace ton processus de bout en bout.
Si tu veux 'le max de mémoire', il faudra prendre autant de mesures que nécessaires. Voilà pourquoi j'ai proposé une solution avec 'ps', mais aussi avec 'top'. Tu remarqueras dans mon exemple, que la mémoire ne change pas. Mais ce n'est qu'un exemple.
À toi d'adapter à tes besoins.
Est-ce que les 2000 processus lancés sont tous de la meme taille?
Combien de processus prend l'allocation d'une variable?
Pourquoi le résultat n"est-t'il pas en byte?
Bonjour,
En fait, j'ai relu la réponse de floralab et c'est le pourcentage de la mémoire totale qui m'intéresse. (comme ca je peutx avoir le nombre de Go utiliisé.)
Si j'ai bien compris, j'identifie le pid avec jobs puis je fais ps.
Merci pour vos réponses.
Partager