Quelle est la différence entre mémoire réelle, virtuelle, partagée et privée?

63

Les différentes colonnes dans Activity Monitor sont un peu déroutantes

Jacob Gorban
la source
Il est peut-être intéressant de noter qu'il existe un cinquième type de mémoire si vous cliquez sur "Inspecter" sur un processus par rapport aux colonnes du moniteur d'activité. Plus précisément, il existe deux types de mémoire "virtuelle": "Taille de la mémoire virtuelle" et "Mémoire privée virtuelle". Ce dernier est ce qui est indiqué dans la colonne "Mémoire virtuelle" dans Activity Monitor.
drfrogsplat

Réponses:

47

Tiré de ma réponse à Server Fault :

Jargon de mémoire Mac OS X:

Wired : Cela fait référence au code du noyau, etc. Mémoire qui ne devrait jamais être déplacée de la RAM. Aussi connu comme mémoire résident.

Partagée : mémoire partagée entre deux processus ou plus. Les deux processus montreraient cette quantité de mémoire, ce qui peut être un peu trompeur quant à la quantité de mémoire réellement utilisée.

Real : Il s'agit de la "réelle" utilisation de la mémoire pour une application, telle que signalée par task_info () - un compte approximatif du nombre de pages physiques du processus en cours. (RSIZE)

Privé : il s'agit de la mémoire utilisée exclusivement par un processus dans la mémoire résidente. (RPRVT)

Virtuel : la quantité totale d'espace d'adressage dans le processus qui est mappée sur n'importe quoi - que ce soit un espace arbitrairement grand pour les variables ou quoi que ce soit - ne correspond pas à l'utilisation réelle de la VM. (VSIZE)

Actif : la mémoire est actuellement identifiée comme active et utilise la mémoire RAM.

Inactive : "La mémoire inactive n'est plus utilisée et a été mise en cache sur le disque. Elle restera dans la RAM jusqu'à ce qu'une autre application ait besoin d'espace. Laisser cette information dans la RAM est à votre avantage si vous (ou un client de votre ordinateur) revenez à plus tard. " - Aide Mac OS X

Free : La quantité de RAM réellement disponible sans aucune donnée.


La meilleure documentation que je connaisse (et que j'ai pu trouver dans des recherches ultérieures) est l' article de gestion de la mémoire d' Apple sur leur site Web destiné aux développeurs.

Autres sources intéressantes: liste de diffusion Darwin-dev: [ 1 ], [ 2 ] et un ancien article sur MacOSXHints . De plus, Mike Ash a posté une introduction de bon profane sur son blog

Chealion
la source
5
À la lecture du document Gestion de la mémoire d'Apple, Inactive n'a pas nécessairement été mis en cache sur le disque. Vous pouvez en faire la démonstration si vous vérifiez votre utilisation de la mémoire inactive (la mienne est actuellement à 747,5 Mo) et votre "permutation utilisée" (la mienne a actuellement 0 octet). Inactif fait simplement référence aux pages de mémoire qui n'ont pas été récemment lues / écrites par aucun processus.
drfrogsplat
1
Il serait peut-être intéressant de clarifier "Virtual" car il existe deux références à la mémoire "virtuelle" dans Activity Monitor. La colonne "Virtual Mem" fait référence à " Virtual Private Memory " dans la fenêtre Inspect Process, puis il y a une autre entrée simplement intitulée " Virtual Memory Size " dans cette fenêtre (qui, je crois, est le composant partagé de la mémoire virtuelle). C'est le 10.6.4 (dans le cas où Activity Monitor a changé de terminologie ...)
drfrogsplat
La "mémoire privée" fait-elle partie de la "mémoire réelle"?
Franklin Yu
6

La mémoire réelle concerne la mémoire physique (modules de mémoire vive de votre ordinateur). Virtual Mem est la quantité de mémoire "fausse" allouée au processus, c'est-à-dire allouée sur le support de stockage permanent (disque dur, lecteur SSD, etc.) pour ce processus. La mémoire partagée est une mémoire physique (réelle) pouvant être partagée avec d'autres processus. La mémoire privée est une mémoire "réelle" qui ne peut être utilisée que par le processus auquel elle est allouée.

Ces explications peuvent également aider ... directement à partir du moniteur d'activité -> aide -> affichage de l'utilisation de la mémoire système:

Voici une explication de certaines des informations affichées en bas du volet mémoire:

  • Câblé: la mémoire câblée contient des informations qui doivent toujours rester en mémoire vive
  • Actif: mémoire active contenant des informations activement utilisées.
  • Inactif: la mémoire inactive contient des informations qui ne sont pas utilisées activement. Le fait de laisser ces informations dans la RAM est à votre avantage si vous (ou un client de votre ordinateur) y revenez plus tard.
  • Utilisé: la mémoire utilisée est utilisée par un processus ou par le système. La mémoire utilisée est la somme de la mémoire câblée, active et inactive. Si le système nécessite de la mémoire, il faut de la mémoire libre avant la mémoire utilisée.
  • Libre: La mémoire libre n'est pas utilisée et est immédiatement disponible.
  • Taille de la machine virtuelle: La mémoire virtuelle, ou VM, est l'espace disque qui peut être utilisé comme mémoire. La taille de la VM correspond à la quantité d’espace disque utilisée en mémoire. Mac OS X peut utiliser plus de mémoire que la quantité de RAM physique dont vous disposez. Un disque dur est beaucoup plus lent que la RAM, le système de mémoire virtuelle distribue automatiquement les informations entre l’espace disque et la RAM pour des performances optimales. Entrées / sorties de pages: nombre de gigaoctets d'informations que Mac OS X a déplacés entre la RAM et l'espace disque
Robert S Ciaccio
la source
6
Ce n'est pas correct La mémoire virtuelle n'est pas une mémoire allouée sur le disque (appelée swap). La mémoire virtuelle a un espace d'adressage alloué mais n'est pas dans la mémoire physique. Cela peut sembler la même chose, mais sa subtilité est différente. Dans de nombreux cas, les programmes allouent de la mémoire sans jamais la toucher. Dans ces cas, les programmes utilisent beaucoup de mémoire virtuelle. Pour donner un exemple concret, mon système utilise actuellement 512 Mo d’échange, mais 196 Go de mémoire virtuelle sont alloués (ce qui est assez typique pour les utilisateurs de Snow Leopard sur K64).
Louis Gerbarg
2
@Louis, si la mémoire virtuelle a été allouée mais n'utilise ni la RAM ni le disque dur, alors où est-il?
Michael Underwood
4
@ Michael: nulle part. C'est théorique. Le fait qu’une adresse ait été attribuée et assignée ne signifie pas nécessairement qu’elle est effectivement utilisée. Les bits de bas niveau du système d'exploitation savent quand mapper ces adresses sur des emplacements physiques dans la RAM ou le stockage d'échange, mais il n'est pas nécessaire de lier cet espace si l'application ne stocke pas réellement les informations à ces adresses. En plus de cela, vous remarquerez que la colonne de chaque processus, Virtual Mem, n’est pas près d’ajouter à la taille de la machine virtuelle. Les processus n'utilisent pas réellement toute cette mémoire.
Robert S Ciaccio
2
Il y a beaucoup de machines virtuelles qui ne sont pas réellement échangeables. Par exemple, si vous mappez un fichier de 4 Go, il faut 4 Go de machine virtuelle. En le lisant, il y aura une page directement à partir du fichier et, sous pression, il sera jeté (non échangé) car le fichier d'origine peut simplement être relu. La VM et l'échange sont vraiment des choses complètement différentes, la VM est simplement utilisée pour déterminer quoi échanger.
Louis Gerbarg
3
Par VSIZE Je fais référence à quelque chose qui n’est pas répertorié dans le moniteur d’activité, vous pouvez le voir répertorié en haut si vous le souhaitez. La liste du moniteur d'activité figurant dans la colonne de mémoire virtuelle correspond à ce que l'on appelle généralement VPRVT, c'est-à-dire la quantité d'adresse virtuelle utilisée par l'application qui n'est partagée avec aucune autre application.
Louis Gerbarg
4

Apple a mis à jour le moniteur d'activité sous OSX 10.9 (Mavericks). Ils ont un bon article sur ce que tout signifie ici http://support.apple.com/kb/HT5890 . En résumé...

entrez la description de l'image ici

  • Mémoire physique: quantité de RAM installée.
  • Mémoire utilisée: quantité de RAM utilisée et non immédiatement disponible pour d'autres applications.
  • Mémoire virtuelle: quantité de mappage de mémoire demandée par les applications. Ce n'est pas une consommation réelle de ressources RAM et sa taille est déterminée par l'auteur de l'application.
  • Permuter utilisé: espace sur votre lecteur utilisé pour permuter les fichiers inutilisés vers et depuis la RAM. Il est normal de voir une activité et cela ne signifie pas que vos ressources en RAM sont épuisées. Le fait de voir la pression de la mémoire à l'état rouge indique que les ressources en RAM sont épuisées.
  • Mémoire des applications: quantité d'espace utilisée par les applications.
  • Mémoire câblée: mémoire qui ne peut pas être mise en cache sur le disque, elle doit donc rester dans la RAM. Cette mémoire ne peut pas être empruntée par d'autres applications.
  • Compressé: quantité de mémoire RAM compressée, ce qui permet de disposer de davantage de ressources RAM pour d'autres applications.
  • Cache de fichiers: espace dans la RAM marqué disponible pour les applications à utiliser contenant des fichiers récemment utilisés.

Graphique de pression de mémoire

La combinaison des statistiques de mémoire Libre, Câblé, Actif, Inactif et Utilisé dans les versions précédentes d’Activity Monitor a été remplacée dans Mavericks par un graphique "Pression mémoire" facile à lire.

La pression de la mémoire est indiquée par la couleur:

  • Vert - Les ressources de mémoire RAM sont disponibles.
  • Orange - Les ressources de mémoire RAM sont en cours d'utilisation.
  • Rouge - Les ressources de mémoire RAM sont épuisées et OS X utilise le lecteur comme mémoire.
Ryan
la source