Calcul de mémoire totale utilisée

Résolu
MarcPJ31 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
 basma -
Bonjour,

J'essaie de déterminer le total de mémoire utilisée par ma distribution Linux.
Et je trouve une différence nette entre le montant affiché par "top" et par mon propre programme.

Mon programme est très simple :
ps axeo"%z" | grep -v "VSZ" | gawk '{ s += $1 } END { print s }'


Exemple :
le top affiche
Mem: 644300k total, 498168k used

mon programme affiche :
378656


Pour info :
> ps --version
procps version 3.2.6
> top -v
top: procps version 3.2.6



Peut-être est-ce que je ne prends pas le bon champ dans le ps ?
Est-ce que quelqu'un peut m'aider ?

Merci d'avance.

-- Marc
A voir également:

6 réponses

ch0c0bn
 
Bonjour,

Je crois que tu ne mesure pas la même chose avec ton programme et top.

L'option -eo %z renvoie la quantité de mémoire virtuelle (virtual memory size) que peut utiliser un programme (je ne crois pas que ça soit celle qui est effectivement utilisée (parce que de nos jours on a assez de ram pour ne pas écrire dans la mémoire virtuelle) mais c'est pas très clair.

Deux liens :

http://www.faqs.org/docs/linux_admin/x1752.html

http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage-on-linux.html : très instructif (notamment sur le fait que ps n'est pas exact sur les chiffres proposés concernant l'utilisation de la mémoire)

De part sa gestion "séparée" des processus (c.a.d qu'il ne prends pas en compte si un processus partage de la mémoire avec un autre, sous forme de librairies partagées par exemple) ps ne semble pas pouvoir fournir les même informations que top.
1
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
il manque à la somme des process la mémoire utilisée par le kernel résident , ce que sait calculer top
1
MarcPJ31 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,

Merci pour vos explications.
Effectivement le lien sur "Understanding memory usage on Linux" est très intéressant.
De plus, la mémoire utilisée par le kernel n'apparaît effectivement pas.

Par conséquent mon programme de calcul de mémoire utilisée est relativement faux car il faut comprendre les librairies partagées et les zones du kernel. C'est donc un peu plus difficile à réaliser.

Je pourrais toujours m'en servir pour observer les augmentations de taille mémoire de processus avec une option regardant la mémoire physique utilisée. Même s'il est "relativement" faux (cf. les liens), il peut au moins me donner une idée de la gloutonnerie mémoire de certains processus.

-- Marc
0
ch0c0bn
 
Bonjour,

Ça va peut-être te dépanner : https://www.oreilly.fr
Il y a un script très bien foutu dans la section "la commande top"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
basma
 
comment calcule la taille de la ram en linux en langage C
-1
basma
 
comment calcule la taille de la ram en linux au langage C .
-1