Calcul de mémoire totale utilisée

Résolu/Fermé
MarcPJ31 Messages postés 20 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 2 septembre 2013 - 20 nov. 2007 à 09:19
 basma - 7 mai 2008 à 22:04
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

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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 nov. 2007 à 10:43
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 lundi 27 août 2007 Statut Membre Dernière intervention 2 septembre 2013 2
20 nov. 2007 à 14:22
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
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
comment calcule la taille de la ram en linux en langage C
-1
comment calcule la taille de la ram en linux au langage C .
-1