Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déterminer la conso mémoire

8 réponses
Avatar
Zouplaz
Bonjour, j'ai besoin de connaître la conso mémoire des processus qui
tournent sur mon serveur - A part les commandes 'top' et 'free' qu'est
ce qu'il existe ? Est-ce que additionner les quantités mémoires
indiquées par top débouche sur un résultat conforme à la réalité ?

Merci

8 réponses

Avatar
Mtirabo
Bonjour, j'ai besoin de connaître la conso mémoire des processus qui
tournent sur mon serveur - A part les commandes 'top' et 'free' qu'est
ce qu'il existe ? Est-ce que additionner les quantités mémoires
indiquées par top débouche sur un résultat conforme à la réalité ?

Merci
Bonsoir: essaies : "ps -aux" (Process Status)


Avatar
ygg
15.05.2007 23:13 - Zouplaz /
Bonjour, j'ai besoin de connaître la conso mémoire des processus qui
tournent sur mon serveur - A part les commandes 'top' et 'free' qu'est
ce qu'il existe ?
vmstat?

Est-ce que additionner les quantités mémoires
indiquées par top débouche sur un résultat conforme à la réalité ?
virtuelle ou réelle?


La mémoire utilisée par un processus est réservée physiquement en RAM ou
sur le disque en fonction des décisions du noyau et de l'utilisation des
pages mémoires par le processus. Chaque processus dispose en théorie de
la totalité de mémoire disponible. Le noyau pour des raisons
évidentes ne charge en mémoire vive (ou n'affecte?) les pages que si le
processus s'en sert réellement. Il ne fait pas assez confiance aux
développeurs!
La mémoire virtuelle est la mémoire utilisée potentiellement par un
processus (champ VIRT de top).
La mémoire physique est la mémoire utilisée réellement par un processus
à un instant donné (champ RES de top).

D'après moi, inutile de faire la somme avec "top". Il suffit par la
commande "free" de soustraire les buffers et le cache utilisés par le
noyau de la mémoire physique pour connaître la mémoire physique utilisée
directement par un processus (Un développeur pourra expliciter la
mémoire partagée entre plusieurs processus.)

Si tu veux plus de détails:
# cat /proc/meminfo
affichera la somme de toutes les mémoires utilisées.
# cat /proc/<PID>/status
le détail par processus (ou "ps" comme vu précédemment).

Avatar
Cumbalero
Il ne fait pas assez confiance aux
développeurs!


Il fait bien assez confiance aux développeurs à mon goût! Quant on voit
la dérive de nombre de spécimens de prétendus développeurs* qui n'ont
plus aucune notion de l'optimisation de leur code ("bah, le hardware
suit!") ou de libération des ressources dont ils n'ont plus besoin ("et
pourquoi qu'on a inventé le garbage collector?").

Tiens, histoire d'être certain d'être à l'aise, je vais m'allouer de
suite 3Go pour écrire un hello world.


* les pires du pire étant les "développeurs J2EE"...


A+
JF

Avatar
ygg
16.05.2007 09:50 - ygg /

D'après moi, inutile de faire la somme avec "top". Il suffit par la
commande "free" de soustraire les buffers et le cache utilisés par le
noyau de la mémoire physique pour connaître la mémoire physique utilisée
directement par un processus (Un développeur pourra expliciter la
^^

les
mémoire partagée entre plusieurs processus.)


Avatar
ygg
16.05.2007 11:32 - ygg /
16.05.2007 09:50 - ygg /

D'après moi, inutile de faire la somme avec "top". Il suffit par la
commande "free" de soustraire les buffers et le cache utilisés par le
noyau de la mémoire physique pour connaître la mémoire physique
utilisée directement par un processus (Un développeur pourra
expliciter la
^^

les
mémoire partagée entre plusieurs processus.)
Raté. Je voulais dire "par les processus".




Avatar
Pascal Hambourg
Salut,


D'après moi, inutile de faire la somme avec "top". Il suffit par la
commande "free" de soustraire les buffers et le cache utilisés par le
noyau de la mémoire physique pour connaître la mémoire physique utilisée
directement par les processus


Attention, une partie de la mémoire non comptabilisée dans les
buffers/cache est néanmoins utilisée comme cache d'informations de
systèmes de fichiers (dentries et inodes) et non par les processus. Sur
les noyaux >= 2.6.16, on peut libérer cette mémoire avec l'action suivante :

# echo 2 > /proc/sys/vm/drop_caches

La valeur 1 vide le cache "normal", et la valeur 3 vide les deux.

Avatar
ygg
22.05.2007 19:56 - Pascal Hambourg /
Attention, une partie de la mémoire non comptabilisée dans les
buffers/cache est néanmoins utilisée comme cache d'informations de
systèmes de fichiers (dentries et inodes) et non par les processus.
Exact (cf slabtop). A ce propos quels sont svp les données mises en

cache dans la valeur "Buffers" (/proc/meminfo) si ce ne sont pas les
méta-données des systèmes de fichiers? Le réseau?

Avatar
Damien Wyart
Attention, une partie de la mémoire non comptabilisée dans les
buffers/cache est néanmoins utilisée comme cache d'informations de
systèmes de fichiers (dentries et inodes) et non par les processus.



* ygg in fr.comp.os.linux.configuration:
Exact (cf slabtop). A ce propos quels sont svp les données mises en
cache dans la valeur "Buffers" (/proc/meminfo) si ce ne sont pas les
méta-données des systèmes de fichiers? Le réseau?


Non, ce sont certains blocs spéciaux (super-bloc notamment). Ces
transparents résument assez bien les choses avec quand même pas mal de
détails, et c'est en Anglais (basé sur le livre _Understanding the Linux
Kernel_) :
http://www.cc.gatech.edu/classes/AY2007/cs3210_fall/PageCache.pdf

Donc je te laisse regarder ça tranquillement, c'est assez complexe et je
ne vais pas m'amuser à paraphraser tout ça ici, ça n'apporterait pas
grand'chose.

D'ailleurs la page http://www.cc.gatech.edu/classes/AY2007/cs3210_fall/
contient pas mal de liens intéressants.

--
DW