Un moyen pour déterminer un processus de “vrais” l'utilisation de la mémoire, c'est à dire des sales RSS?

Des outils comme 'ps' et 'top rapport des différents types de mémoire usages, tels que la taille de mémoire virtuelle et le Résident de la Taille de l'Ensemble. Cependant, aucune de ces sont les "vrais" l'utilisation de la mémoire:

  • Le code de programme est partagée entre plusieurs instances d'un même programme.
  • Partagée de la bibliothèque de code de programme est partagée entre tous les processus qui utilisent la bibliothèque.
  • Certaines applications fork de processus et de partager de la mémoire avec eux (par exemple via les segments de mémoire partagée).
  • Le système de mémoire virtuelle rend la VM rapport de taille à peu près inutile.
  • RSS est de 0 lorsqu'un processus est échangé, ce qui n'est pas très utile.
  • Etc etc.

J'ai trouvé que le privé sale RSS, tel que rapporté par Linux, est la chose la plus proche à la "vraie" utilisation de la mémoire. Ceci peut être obtenu en additionnant tous Private_Dirty valeurs dans /proc/somepid/smaps.

Cependant, d'autres systèmes d'exploitation fournissent des fonctionnalités similaires? Si non, quelles sont les alternatives? En particulier, je suis intéressé par FreeBSD et mac OS X. les

  • Quel est exactement le "réel de l'utilisation de la mémoire"? Basé sur votre liste, l'idée de l'utilisation de la mémoire pour un processus simple est soit inutile ou arbitraire.
  • J'avais définir le "réel de l'utilisation de la mémoire", comme la quantité de mémoire physique (mais pas de swap) qui serait libérée si je "kill -9' le processus. Je crois que le nombre devrait être quelque part entre les flux RSS et PSS valeurs rapportées pour un processus.
  • est un vieux thread,je suis surpris que le montage linprocfs n'a pas été une partie de la solution suggérée par quelqu'un ici,pour FreeBSD.Est-il une raison spécifique pour la même chose? .J'ai quand même ajouté que la réponse pour le bien de l'achèvement.
InformationsquelleAutor Hongli | 2008-09-22