Comment savoir combien de mémoire un programme prend

8

J'utilise htop pour surveiller mes processus, mais la plupart des services exécutés sont multithreads, ils sont donc affichés sur plusieurs lignes avec un% d'utilisation de la mémoire qui dans certains cas est le même pour tous, parfois il varie entre eux.

Disons que dans le cas de Firefox, il peut répertorier 15 processus consommant chacun 13% de mémoire.

Puis-je savoir que beaucoup de mémoire est occupée par Firefox, MySQL, certains scripts fcgi ou quelque chose qui consomme? car la sortie htop semble trompeuse.

Jjdelc
la source

Réponses:

6

La plupart des implémentations principales ont un moyen d'activer ou de désactiver l'affichage des threads.

  • htop: dans le menu "Configuration / Options d'affichage", "Masquer les fils des zones utilisateur".
  • Linux top: appuyez Hpour basculer l'affichage des threads (mais ils sont désactivés par défaut).
  • OpenBSD top: appuyez Tpour basculer l'affichage des threads (mais ils sont désactivés par défaut).

Notez que les mappages de mémoire, et donc l'occupation de la mémoire, sont une propriété d'un processus, vous verrez donc toujours les mêmes nombres pour chaque thread d'un processus. Si vous voyez des nombres différents, cela signifie qu'il existe plusieurs processus.

Il n'y a pas de moyen facile de connaître la consommation totale de mémoire d'un ensemble de processus car le concept n'est pas bien défini. Une partie de la mémoire peut être partagée; cela se produit tout le temps avec les bibliothèques partagées et, en outre, les processus associés (tels que plusieurs instances d'un serveur) sont plus susceptibles d'utiliser la mémoire partagée pour échanger des données. Si vous ajoutez simplement les chiffres, vous obtiendrez souvent un nombre beaucoup plus grand que la mémoire réellement utilisée.

Gilles 'SO- arrête d'être méchant'
la source
1
Je ne savais pas que le concept de mémoire du processus n'était pas bien défini, je pense que c'est ce qui rend tout cela plus logique. Merci
Jjdelc
2

Vous pouvez utiliser ceci: http://www.pixelbeat.org/scripts/ps_mem.py

RDA
la source
pourquoi utiliser ça? pourquoi est-il meilleur que les outils standard?
tshepang
Il ne compte la mémoire partagée qu'une seule fois.
GDR