Skip to content

Que sont la "mémoire commise", la "mémoire cache", la "mémoire paginée", la "mémoire non paginée" et comment sont-elles différentes de la "mémoire utilisée" ?

Nous avons collecté dans différents forums afin de vous apporter la solution à votre souci, si vous continuez avec des soucis, laissez nous le doute et nous vous répondrons sans faute, car nous sommes là pour vous servir.

Solution :

Réponse à Q1 :

  • En cours d'utilisation fait référence à la quantité réelle de mémoire physique utilisée.
  • Le site deuxième chiffre de la mémoire engagée fait référence à la limite de commit qui est la quantité de mémoire physique + la taille du fichier de page.
  • Le site premier nombre dans la mémoire engagée fait référence à la quantité de mémoire que les applications ont demandé à utiliser.
    • Lorsqu'une application demande pour la première fois à utiliser une certaine quantité de mémoire, Windows s'assure qu'elle peut tenir quelque part, soit dans le pagefile, soit dans la mémoire. Cela ne signifie pas que cette quantité de mémoire occupe la mémoire physique réelle ou l'espace du pagefile. Cela signifie simplement que Windows réserve cet espace dans la limite du total des engagements, au cas où il serait utilisé. La plupart de la mémoire demandée est utilisée mais pas toute.
  • En cache Fait référence à la quantité de mémoire physique utilisée pour accélérer l'accès au système de fichiers. Sur les OS clients, jusqu'à 10% de votre mémoire est utilisée pour la mise en mémoire tampon des écritures (" dirty page threshold ").
  • Pool paginé est la quantité de mémoire du noyau et des pilotes de périphériques qui PEUT déborder de la mémoire physique dans le fichier de pages lentes (source).
  • Pool non paginé est la quantité de mémoire du noyau et du pilote de périphérique qui doit rester en mémoire physique. Ce type de mémoire ne peut pas être déchargé sur le disque.

Réponse à la question 2 :

Pour faire simple, sous Windows, la "mémoire" peut être adossée soit à la mémoire vive physique, soit à un fichier de page (sur le disque). Le(s) fichier(s) de pages est(sont) utilisé(s) à de nombreuses fins, notamment pour libérer la RAM physique pour les programmes à accès peu fréquent. Il est plusieurs fois plus lent que la RAM physique car il est adossé à un disque, tournant ou non.

Si votre système n'a pas assez de mémoire, il est possible que les applications que vous utilisez activement débordent sur le disque et que votre système ralentisse considérablement.

Comme vous avez pu en quelque sorte le voir dans la réponse 1, il n'est absolument pas facile de déterminer si vous avez assez de mémoire ou non à partir de ces chiffres.

Je suggère la méthode suivante do déterminer si vous avez assez de mémoire ou non :

  1. Lancez Resource Monitor (Win+R et tapez perfmon /res)
  2. Utilisez votre ordinateur portable comme vous le feriez normalement.
  3. Lorsque vous remarquez un ralentissement, retournez au moniteur de ressources et consultez le graphique de la mémoire sur le côté droit. Le hard-fault désigne en gros le nombre de fois où il a dû accéder au fichier de pages pour accéder à la mémoire. Le nombre de hard-fault devrait être proche de 0. Si ce n'est pas le cas, vous n'avez pas assez de RAM pour ce que vous faites.

Vous disposez de quelques remèdes :

  1. Fermez les applications ou les onglets non utilisés avant que le système ne devienne lent.
  2. Mettez à niveau la mémoire vive si possible.

En prenant ceux-ci pas dans l'ordre où vous l'avez demandé...

( Note : Ceci est toujours en cours. Je vais probablement le peaufiner et le modifier au cours des prochains jours. Et j'ajouterai des captures d'écran).

( Note la seconde : Je réalise que c'est long. C'est à peu près aussi court que je peux le faire tout en essayant au moins de répondre à la plupart des questions qui se posent couramment dans les réponses plus courtes. À titre de comparaison, le chapitre sur la gestion de la mémoire de Windows Internals fait environ 200 pages, assez pour faire un livre de taille décente à lui tout seul. Si vous voulez vraiment apprendre ce genre de choses, il existe un autre livre (que je recommande) appelé Qu'est-ce qui fait qu'il y a une page ? qui entre encore plus dans les détails. Il compte un peu plus de 600 pages. Comme je l'ai mentionné plus haut, je vais probablement l'éditer au cours des prochains jours, mais ne vous attendez pas à ce qu'il devienne plus court ! )

En cours d'utilisation

En service est la quantité de mémoire physique (RAM) qui correspond aux pages virtuelles auxquelles on peut accéder sans encourir de défaut de page.

Avertissement : Ce n'est pas la quantité de mémoire virtuelle à laquelle on peut accéder sans encourir de faute de page ! C'est un nombre plus important. De nombreuses pages virtuelles différentes peuvent être mappées sur la même page physique.

Contexte : Chaque page virtuelle peut être soit "valide", ce qui signifie qu'elle occupe la mémoire physique et que son entrée dans la table des pages a le bit "valide" activé. Ou bien le bit valide peut être clair, auquel cas la référence à la page virtuelle entraînera un défaut de page. Le système d'exploitation doit alors résoudre ce problème. On dit alors que la page a été introduite dans la RAM par une "faute". On suppose généralement que cela signifie "lire la page depuis le disque", mais ce n'est souvent pas le cas (détails plus loin). Un autre terme que vous entendrez utiliser pour une page valide est "résident".

Le principal contributeur à En usage sont les pages qui composent le ensembles de travail des processus et de l'OS, plus les non paginée (qui est généralement assez petit, quelques centaines de Mo ou plus - j'en dirai plus à ce sujet plus tard). L'ensemble de travail d'un processus est simplement une liste des pages physiques qui sont actuellement "résidentes" pour ce processus. Chaque processus a sa propre liste de working set.

Note : Les pages physiques de RAM peuvent être dans plusieurs ensembles de travail de processus en même temps. Cela signifie que l'addition des tailles des ensembles de travail de tous les processus vous donnera un nombre plus grand que la quantité réelle de RAM qu'ils utilisent. Le site En cours d'utilisation tient cependant correctement compte des pages partagées, c'est-à-dire qu'il ne les compte pas en double ou en multiple.

Attention : Le terme En usage peut être trompeur car les pages de RAM sur les listes Standby et Modified sont sans doute "utilisées" aussi, même si on ne peut pas y accéder sans défaut de page et qu'elles ne sont dans aucun ensemble de travail. Ces deux listes seront expliquées un peu plus loin.

n.b. : Une grande partie de cette discussion va mentionner les processus et leurs ensembles de travail. Le code et les données du mode noyau du système d'exploitation Windows vivent aussi dans la mémoire virtuelle, et une grande partie est paginable. En d'autres termes, ils ne sont pas obligés de rester en permanence dans la RAM, pas plus que le code et les données des applications. Bien qu'il ne s'agisse pas d'un processus à proprement parler (à l'exception du processus "Système"), il existe un ensemble de travail permettant de suivre les pages "valides" pour le système d'exploitation, ou plus précisément pour l'espace d'adressage du noyau. En fait, à partir de Windows 7, l'ensemble de travail du système a été divisé en quatre ensembles de travail (pour différents types de code et de données paginables), principalement pour des raisons de performances. Presque tout ce dont je parle concernant les ensembles de travail s'applique au(x) ensemble(s) de travail du système d'exploitation ainsi qu'à ceux des processus, mais je ne vais pas ajouter "ou l'un des ensembles de travail du système d'exploitation" chaque fois que je mentionne un ensemble de travail de processus.

Disponible sur

Vous n'avez pas posé de question à ce sujet, mais c'est important. Disponible est toute la RAM qui peut être affectée à un nouvel usage (par exemple à un processus autre que celui qui l'utilisait précédemment, ou même à une nouvelle page virtuelle dans le même processus) sans la retirer d'un ensemble de travail et sans sauvegarder son contenu quelque part. (Car le contenu est déjà sauvegardé quelque part, s'il est important).

Disponible n'apparaît pas dans l'onglet Performance du gestionnaire de tâches actuel, volet Mémoire. Elle est visible dans l'onglet Mémoire de Resource Monitor. Il s'agit de la somme des listes de pages en attente, libres et nulles. Des détails à ce sujet sont à venir.

Mise en cache

Le Caché du compteur de l'onglet Performances du Gestionnaire des tâches correspond au total des trois utilisations suivantes de la RAM. Il s'agit d'un comptage de la mémoire vive, et non de la mémoire virtuelle.

En cache partie 1 : la Liste des pages en attente (comprenant SuperFetch)

Ceci est visible dans l'onglet "Mémoire" du "Moniteur de ressources". Avant Windows Vista, elle était exclusivement utilisée comme "cache de page" : Les pages de RAM qui sont abandonnées des ensembles de travail (après quoi une référence à ces pages entraînerait un défaut de page) sont d'abord placées sur la liste des pages en attente. De là, elles peuvent être réaffectées à un autre usage ("repurposing"). Mais si le processus original fait référence à une page de la SPL avant que cela ne se produise, la page peut être restaurée dans son ensemble de travail original (c'est-à-dire qu'elle peut être "rendue valide") sans avoir à la lire sur le disque. La SPL constitue donc un cache "premier entré, premier sorti" à l'échelle du système pour les pages qui pourraient être réutilisées prochainement. (Par opposition aux ensembles de travail, qui sont par processus ; les pages sont supprimées des ensembles de travail sur la base du moins récemment utilisé, et non FIFO).

Tout cela est toujours valable. Mais à partir de Vista et des versions ultérieures, certaines des pages de la SPL peuvent être... repurposées pour être utilisées par SuperFetch. SuperFetch est un mécanisme proactif de mise en cache de fichiers en lecture seule qui maintient un historique des fichiers souvent accédés et essaie d'accélérer les choses en lisant ces fichiers dans la RAM avant qu'ils ne soient réellement demandés.

Ce qui est astucieux avec SuperFetch, c'est que les pages utilisées par SuperFetch ne sont pas retirées de la Standby Page List, et peuvent donc toujours être réaffectées en très peu de temps comme n'importe quelle autre page de la SPL. Et elles sont toujours comptées comme faisant partie de Mise en cache. Et comme partie de Disponible sur. Ainsi, SuperFetch ne " consomme " pas vraiment de RAM ! Ou du moins, il n'enlève rien à "Disponible", ni ne contribue à "En service".

SuperFetch est désactivé par défaut sur les systèmes avec un SSD pour le disque d'OS. La liste Standby est toujours utilisée comme décrit ici, comme un cache de page.

La liste de pages en attente fait partie de la mémoire vive qui est signalée comme... Disponible, ce qui signifie que n'importe laquelle et toutes ses pages peuvent être réaffectées à n'importe quoi d'autre à tout moment - même les pages qui sont utilisées par SuperFetch. Il s'agit de pas partie de En cours d'utilisation même s'il est utilisé. En tout cas, SuperFetch l'utilise ! Il est également utilisé à chaque fois qu'un soft page fault est résolu au SPL. Tout ce que je dis ici est que prétendre que En cours d'utilisation est la quantité de RAM "en cours d'utilisation" est, au mieux, trompeuse. Microsoft aurait dû choisir un terme différent pour En cours d'utilisation.

En cache partie 2 : les Liste des pages modifiées

À partir de Windows 8 et des versions ultérieures, la Mise en cache comprend également les pages physiques qui sont sur le Liste des pages modifiées. (La MPL existe depuis toujours ; tout ce qui est nouveau, c'est de la compter comme faisant partie de Mise en cache.) Comme la SPL, la taille de la MPL peut être vue sur l'onglet Mémoire de Resource Monitor, bien qu'elle doive généralement être assez petite ou nulle.

La MPL est comme la SPL, sauf qu'elle est utilisée pour les pages dont le contenu a été modifié pendant qu'elles étaient résidentes. (Ceci est enregistré par le MMU du CPU.) Lorsqu'elles sont retirées de leur ensemble de travail, ces pages sont déplacées vers la MPL plutôt que vers la SPL. Les threads "Modified page writer" du processus "System" se réveillent périodiquement, copient le contenu de ces pages dans leurs magasins de sauvegarde respectifs (soit le fichier de page, soit, pour les pages sauvegardées dans des fichiers, leurs fichiers respectifs), puis les déplacent vers la liste de pages de réserve, et à ce moment-là, elles font partie de la page Disponible et sont traitées comme si elles avaient été placées sur la SPL en premier lieu. Ils ne faisaient pas partie de Disponible tant qu'ils étaient sur la LPM, car ils ne peuvent pas être réaffectés à autre chose avant que leur contenu ne soit sauvegardé quelque part.

La MPL n'est pas comptée comme faisant partie de En cours d'utilisation soit.

Notez que si vous avez (bêtement, et au mépris des bons conseils) désactivé votre pagefile, le système ne sera jamais en mesure d'écrire les pages modifiées sauvegardées par pagefile. Le symptôme habituel ici est une MPL absurdement grande, qui peut provoquer des pénuries de RAM disponible, et donc du "page thrashing", où le système d'exploitation passe plus de temps à copier des pages dans et hors de la RAM qu'à faire le travail que vous voulez faire.

La fonctionnalité "Mémoire compressée" de Windows 10 a quelque peu modifié la partie "écriture dans le pagefile" ; je ne vais pas m'y attarder ici car cela n'affecte pas les compteurs dont nous parlons.

Mise en cache partie 3 : le Cache du système de fichiers

  • MISE À JOUR : à un certain moment au cours des nombreuses versions de Windows 10, ou peut-être dès Windows 8, cela ne fait plus partie du gestionnaire des tâches du . Cache du gestionnaire de tâches. Mais il existe toujours, et le compteur PerfMon que je mentionne est toujours là et actif. La taille résidente du Cache du système de fichiers est toujours aussi incluse dans En cours d'utilisation. Je dois faire des tests pour voir exactement quand cela a été modifié.

ou au moins la partie "résidente" du cache du système de fichiers. Encore une fois - "Résident" signifie que c'est la partie in-RAM, in-a-working-set d'une allocation virtuelle plus grande.

Hé, n'avons-nous pas déjà parlé d'un cache ? "SuperFetch" ? Oui, mais ce n'est pas le même cache que SuperFetch. Contrairement à SuperFetch, le cache du système de fichiers est un cache réactif (jamais prédictif - c'est-à-dire qu'il ne met jamais rien en cache jusqu'à ce qu'il ait été effectivement utilisé, puis il est mis en cache pour une utilisation rapide future (dans la même instance de l'OS).

Le cache de fichier a également un rôle vital dans la prise en charge de l'accès aux fichiers sur des frontières qui ne sont pas alignées sur un secteur. Si vous ouvrez un fichier avec l'option "no caching", toutes vos lectures et écritures doivent être des multiples de la taille du secteur du lecteur et doivent commencer sur des limites de secteur. Le cache de fichier vous permet de lire et d'écrire un seul octet à la fois (du moins en ce qui concerne vos appels d'API).

Dans les versions antérieures de Windows, la partie résidente du cache de fichiers faisait partie de l'ensemble de travail du système, et sa contribution à l'ensemble de travail du système pouvait être trouvée dans le compteur PerfMon... Memory | System Cache Resident Bytes. À partir de Windows 7 et plus, l'ensemble de travail du système a été divisé en quatre ensembles de travail distincts, le cache de fichiers occupant l'un d'eux, et ce même compteur reflète toujours sa taille résidente. Quoi qu'il en soit, la partie résidente du cache du système de fichiers est incluse dans "en utilisation" (car c'est un ensemble de travail).

  • n.b. : Le compteur "cached" du Task Manager n'a absolument rien à voir avec les caches internes du CPU (L1, L2, etc.). Ces caches existent bien sûr, mais Windows ne les gère pas et ils ne sont reflétés dans aucun des compteurs de gestion de la mémoire du système d'exploitation - ni "total", ni "en cours d'utilisation", et certainement pas "en cache".

Les pools non paginés et paginés

Le site Pagé et Non paginée donnent les tailles virtuelles de deux régions de l'espace d'adressage du noyau, appelées "pools de mémoire". Ces deux régions sont utilisées pour des allocations de mémoire assez petites et à court terme (généralement bien inférieures à 1 Mo chacune) qui sont nécessaires à divers composants du code en mode noyau de Windows, y compris aux pilotes de périphériques. Le code en mode noyau les utilise d'une manière très similaire à celle des programmes d'application qui utilisent les "tas". (La raison pour laquelle Windows les appelle pools au lieu de heaps est historique).

L'un des pools est Non paginée ce qui signifie qu'il est toujours conservé en mémoire vive. Ainsi, pour celui-ci, la taille indiquée par le gestionnaire de tâches est la taille physique (RAM) ainsi que la taille virtuelle. Le pool non paginé est utilisé par les composants qui peuvent s'exécuter dans des contextes où les défauts de page ne peuvent pas être gérés, comme les routines de service d'interruption des pilotes de périphériques, les routines DPC et d'autres routines qui doivent s'exécuter à l'IRQL DISPATCH_LEVEL ou au-dessus. J'ai expliqué les IRQL dans une autre réponse ici.

L'autre pool, appelé Paged par le gestionnaire de tâches, devrait en réalité être appelé "page". capable". Tout comme la mémoire virtuelle ordinaire utilisée par les processus, elle n'est pas... nécessairement paginée, c'est juste que des portions de celle-ci peuvent être. Comme pour toutes les autres régions paginables, ses pages seront "entrées par erreur" dans la RAM à la demande - c'est-à-dire lorsqu'elles sont référencées alors qu'elles ne sont pas en RAM - et éventuellement "sorties par erreur" plus tard si la mémoire physique vient à manquer et que de nouvelles erreurs de page doivent être résolues.

La taille affichée par Task Manager pour le pool paginable est la taille virtuelle. Un sous-ensemble de celle-ci sera "valide", c'est-à-dire en RAM (c'est-à-dire la taille physique). La taille de la partie in-RAM (paginée) du pool paginé n'est pas signalée par Task Manager, mais peut être vue dans l'outil SysInternals Process Explorer (View | System Information) ou dans le compteur PerfMon. Memory | Pool Paged Resident Bytes.

Tout le pool "non paginé", et la partie "paged-in" ou "résidente" du pool paginé, font partie de ce qui est compté comme "en utilisation".

Pour plus d'informations sur les pools de mémoire du noyau, voir la documentation sur l'interface du noyau. ExAllocatePool.

Attention : Non paginée n'est pas le sous-ensemble paginé de Paginé! Il s'agit d'allocations virtuelles distinctes. Il est donc tout à fait possible, par exemple, que le pool non paginé s'affiche avec une taille supérieure à celle du pool paginé - mais ce n'est pas courant.

Avertissement : Il ne s'agit en aucun cas de la quantité totale d'espace d'adressage virtuel du noyau.

Committed

Le site Engagé Les compteurs font référence à un type particulier de mémoire virtuelle. Pour vraiment expliquer cela, je dois expliquer les autres types.

Chaque page de l'espace d'adressage virtuel peut être dans l'un des cinq états suivants : Inutilisée, non paginable, mappée, réservée et engagée.

"Nonpageable", "Committed" et les espaces d'adresses virtuelles "mappées" correspondent à des espaces d'adresses virtuelles. mémoire virtuelle et peuvent être accédés avec succès (lecture ou écriture), éventuellement avec un défaut de page en cours de route ; les espaces d'adresses virtuelles "inutilisés" et "réservés" ne sont pas accessibles.

(Ce message d'erreur que vous voyez parfois - "L'instruction à 0x(certaine adresse) a référencé la mémoire à 0x(certaine adresse), la mémoire n'a pas pu être lue" (ou "écrite") ? C'est ce qui se passe si du code sur votre système tente d'accéder à un espace d'adressage "inutilisé" ou "réservé". Ou si une tentative est faite d'écrire sur une page en lecture seule, ou d'accéder à une adresse virtuelle protégée par le noyau depuis le mode utilisateur. n.b. : L'adresse signalée est virtuelle, pas physique, et le message ne signifie pas que vous avez un problème avec votre RAM. Il s'agit d'un bogue dans le programme).

"La mémoire virtuelle "non paginable" est toujours physiquement "résidente" et est presque exclusivement la province du code du mode noyau de Windows. Elle fait partie des "en cours d'utilisation". Le site Nonpaged pool, déjà abordé, est un exemple de mémoire virtuelle non paginable.

Attention : Même si la mémoire virtuelle non paginable est toujours résidente, on la considère toujours comme "virtuelle" car on la référence toujours par des adresses virtuelles. Elle possède également toutes les autres propriétés de la mémoire virtuelle, sauf qu'elle est toujours "valide" en donc ne produira jamais un défaut de page lors de son accès.

L'espace d'adressage virtuel "mappé" est paginable vers/depuis le disque. Son "backing store" - qui est un nom fantaisiste pour désigner l'endroit où des portions de celui-ci sont conservées si elles ne peuvent pas toutes être conservées en RAM en même temps - sont des fichiers qui ont été fournis lors de la création de chaque région mappée. (Les API pertinentes ici sont CreateFileMapping et MapViewOfFile.) Le contenu des régions mappées commence en fait dans ces fichiers ; il est lu dans la RAM au fur et à mesure des accès ("pagination à la demande").

La mémoire mappée est d'ailleurs exceptionnellement courante - c'est dans les régions mappées que vit tout le code exécutable. Elle est également très couramment utilisée pour accéder à des fichiers volumineux, par opposition à l'accès traditionnel en lecture/écriture.

Les régions mappées peuvent être partagées entre plusieurs processus. Si le mappage est configuré pour un accès en lecture/écriture (ce qui n'est généralement pas le cas pour les fichiers de code !), alors les modifications apportées aux v.a.s. mappées sont réécrites dans les fichiers mappés respectifs.

Il existe cependant la possibilité de créer une "région mappée adossée à un fichier de page" qui peut être partagée entre les processus comme toute autre région mappée, mais dont les modifications ne seront préservées nulle part une fois que tous les processus l'auront dé-mappée.

L'espace d'adressage virtuel "Committed" est également paginable vers/depuis le disque. La différence entre ceci et "mappé" est que le magasin de sauvegarde pour l'espace d'adressage virtuel "Committed", s'il devait être nécessaire, est le pagefile (si vous en avez un, ce que vous devriez très certainement).

"Committed" comme "mapped" est paginé à la demande, mais la première fois qu'une page de mémoire commise est accédée, il n'y a pas de lecture à partir du disque - parce que contrairement à la mémoire mappée, il n'y a pas d'endroit pour lire le contenu initial.... à partir de. Une nouvelle page physique est simplement allouée au processus (à partir de la RAM précédemment "disponible", généralement la Zero Page List) et rendue valide dans l'ensemble de travail du processus. Ainsi, une page de mémoire engagée n'occupe aucun espace de stockage nulle part jusqu'à la première fois qu'elle est référencée.

Puisque la mémoire commise est paginable (même si vous n'avez pas de pagefile, mais vous devriez vraiment en avoir une), il est peu probable que toute la mémoire commise soit en RAM - "résidente" - au même moment. Comme d'habitude, le système d'exploitation essaie de garder les pages de v.a.s. les plus récemment accédées en RAM ; si la RAM disponible est rare, le système d'exploitation "sortira" d'autres pages, les retirant de leurs ensembles de travail et les mettant sur la SPL ou la MPL. Dans ce dernier cas, elles sont rapidement écrites dans leur magasin de sauvegarde.

La taille totale de la mémoire "engagée" (c'est-à-dire sauvegardée dans un fichier de pages, ou elle le serait si vous aviez un fichier de pages, ce que vous devriez absolument faire), pour tous les processus plus le noyau du système d'exploitation, est le premier chiffre sous le mot Committed.

Il comprend plusieurs autres contributions également : Principalement les pools non paginés et paginés, et toutes les régions mappées qui sont mappées en copie sur écriture. Ce nombre est souvent appelé le charge de commit.

Une façon de penser à la charge d'engagement est : Si vous avez un pagefile (ce que vous devriez faire), et que tout contenu paginable de la mémoire (commit, paged pool, etc.) à l'exception de la mémoire mappée devait être paginée hors de la RAM - c'est la quantité d'espace pagefile qui serait nécessaire.

Le deuxième chiffre sous le mot Committed est la ''limite d'engagement''. C'est la taille de la RAM plus la ou les tailles totales actuelles du ou des fichiers de pages. La charge de commit n'est pas autorisée à devenir plus grande que cela. Si un processus tente d'engager de la mémoire virtuelle d'une taille qui dépasserait la limite d'engagement, alors, si possible, Windows agrandira le fichier de pages pour faire de la place (et vous verrez la fenêtre contextuelle "low on memory"). Si l'agrandissement du pagefile n'est pas possible, alors le message dira "out of memory" et le processus qui l'a fait se plantera.

Le sous-ensemble résident de la charge Commit fait partie de "in use". Notez que même si vous n'avez pas de pagefile (et si vous n'en avez pas, qu'est-ce qui ne va pas chez vous ?) ce n'est pas nécessairement la même chose que la charge de commit. D'une part, si vous engagez de la mémoire virtuelle mais que vous n'accédez pas à l'ensemble de celle-ci, les parties auxquelles vous n'accédez pas n'occuperont jamais d'espace de stockage. Il est également possible que la mémoire engagée soit retirée d'un ensemble de travail et placée sur la liste des pages modifiées. Habituellement, seul un sous-ensemble de la mémoire engagée occupera la mémoire vive.

Il n'existe aucun moyen, à partir du gestionnaire des tâches, de déterminer le sous-ensemble de la mémoire engagée qui occupe la RAM. Cependant, l'outil "RAMmap" de SysInternals peut le montrer.

Additionner le tout

Disponible + En cours d'utilisation + Modifié s'additionnent pour former la mémoire vive totale utilisable par le système d'exploitation.

le total de la RAM utilisable par le SE plus la RAM "Hardware Reserved" doit être égal à la quantité totale de RAM installée.

Disponible est égale à la Liste des pages en attente plus la Liste des pages libres plus la Liste de pages zéro

Libretel qu'affiché par l'onglet Mémoire de Resource Monitor est la somme de la liste des pages nulles et de la liste des pages libres.

(J'ai délibérément omis de parler davantage de la Zero Page List car elle n'est pas importante pour les compteurs demandés).

En cachette = le Liste des pages en attente (dont une partie est utilisée par SuperFetch), plus (pour Windows 8 et les versions ultérieures) la liste de pages en attente. Liste de pages modifiées , plus (pour les versions antérieures de Windows restant à déterminer précisément) la partie paginée ou résidente du cache du fichier système.

Attention : Comme la liste des pages en attente fait partie à la fois de "Disponible" et de "Caché", il est tout à fait possible d'additionner "Disponible" et "Caché" et d'obtenir un total supérieur à la quantité totale de RAM ! Ces nombres ne sont tout simplement pas destinés à être additionnés.

L'onglet Mémoire de Resource Monitor montre la somme de Free et Zero comme un seul nombre, étiqueté "Free". Performance Monitor peut vous montrer ces tailles individuellement.

Est-ce que j'ai assez de mémoire vive ?

"Pour autant que je sache, le noyau manipule la gestion de la mémoire de manière complexe, donc puis-je conclure que si j'ai de la mémoire libre dans la ram de mon
ram de mon ordinateur portable, alors ma mémoire est suffisante ?"

La meilleure métrique pour "est-ce que j'ai assez de RAM ?" est généralement votre taux de défaut de page dur. Les défauts de page durs sont des défauts de page qui nécessitent une lecture à partir du disque. Vous pouvez le voir sur les graphiques de la colonne de droite de Resource Monitor (les deux onglets "Overview" et "Memory"), ou par processus sur l'onglet Memory. Le compteur PerfMon Memory | Page Reads/sec l'indique également.

Le taux de défaut global est un sur-ensemble du taux de défaut dur et n'est pas du tout aussi intéressant. Il inclut les "soft page faults", qui n'impliquent pas de lecture de disque et prennent donc beaucoup moins de temps. (Il est difficile de dire combien de temps ils prennent, mais j'estime qu'il s'agit de quelques centaines de temps d'instruction, tout au plus). Il s'agit notamment des fautes résolues dans les listes de pages en attente et modifiées, des fautes sur les pages partagées qui sont déjà résidentes pour un ou plusieurs autres processus, et des fautes de "demande zéro", qui se produisent lors de la première référence à des pages privées. Ne soyez pas surpris si vous voyez des milliers de défauts de page par seconde. Ce sont les lectures de pages depuis le disque qui ralentissent énormément les choses (même si votre disque est un SSD).

Mais qu'en est-il de "Disponible" ? ou "Libre" ?

Beaucoup de gens s'inquiètent de la quantité de mémoire "disponible", ou de mémoire "libre". Tout d'abord, il est assez commun pour un système Windows où peu de processus ont quitté depuis longtemps de ne montrer aucune ou presque aucune mémoire libre. Ceci est attendu car le seul événement qui ramène typiquement la mémoire à "Libre" est lorsqu'un processus sort ; les pages physiques qui étaient valides pour sa mémoire "engagée" sont alors déplacées vers la liste "Libre".

"Disponible" inclut la liste Standby et est tout aussi prêt à être affecté à un nouvel usage que "Libre" l'est, donc si vous avez beaucoup de "Disponible", il y a moins besoin de s'inquiéter du fait qu'il n'y en ait pas beaucoup qui soient "Libres".

Même pour les "Disponibles", le principal avantage d'avoir beaucoup de "Libres" est d'avoir des "Disponibles". disponible disponible est de supporter le démarrage rapide de nouveaux programmes, ou de nouveaux comportements dans des programmes déjà en cours d'exécution. À ces moments-là, vous verrez des rafales de défauts de pages dures - c'est tout à fait normal, voire inévitable. Si votre charge de travail ne fait pas beaucoup de cela, alors votre système peut se contenter d'un pourcentage plus faible de RAM disponible.

Et encore une fois, je vais mentionner : Un SSD fait que les défauts de pages dures vont beaucoup plus vite que si elles vont sur un disque rotatif. Et ils iront encore plus vite si c'est un SSD M.2 PCIe. Ils sont toujours beaucoup beaucoup plus lents que les défauts mous.

Une dernière chose : vous entendrez souvent l'affirmation selon laquelle " on n'a jamais assez de RAM ". Eh bien, il est vrai que (sauf circonstances inhabituelles) l'ajout de mémoire vive à votre système ne causera jamais une performance... problème de performance . Cependant, vous pouvez très certainement dépenser trop d'argent sur la RAM. Il y a un point de rendement décroissant au-delà duquel l'ajout de plus de RAM n'accélérera pas votre système de manière notable. Où se trouve ce point dépend de votre charge de travail et de divers aspects de votre matériel (notamment si vous avez un SSD ou un disque rotatif). Comme je pense avoir été clair ci-dessus, se débarrasser de votre pagefile n'élimine pas la pagination vers/depuis le disque, car les fichiers mappés existent toujours et sont toujours lus et écrits via la pagination. Donc, se débarrasser de votre pagefile (ce que vous ne devriez pas faire de toute façon) ne signifie pas que vous pouvez arrêter de vous soucier de la rapidité de votre disque.

Question 1 :
Que sont exactement la mémoire commise, la mémoire cache, la mémoire paginée, le pool non paginé et comment ils sont différents de la mémoire utilisée.

Mémoire commise :
La mémoire commise est toutes les formes de mémoire allouées pour être utilisées. Cela inclut la mémoire physique ainsi que la mémoire virtuelle (pagination). Mémoire engagée vs mémoire disponible

Mémoire en cache : Mémoire généralement intégrée au processeur. Cette mémoire est beaucoup plus rapide d'accès car elle est au plus près du processeur qui l'utilise.

Mémoire paginée :
La mémoire paginée est une mémoire virtuelle, c'est-à-dire que rien de physique n'est attaché au système. Lorsque le système détermine qu'il a besoin de plus de mémoire que celle à laquelle il a accès, il crée de la mémoire virtuelle qui n'est en fait qu'un espace de stockage sur le disque dur. Ce type de mémoire est beaucoup plus lent car il dépend des vitesses de lecture/écriture du disque dur.

Non paginée :
C'est tout simplement le contraire de la mémoire paginée. Cela signifie qu'il s'agirait d'un total de mémoire excluant la quantité sous mémoire paginée.

Question 2 :
D'après ce que je sais le noyau manipule la gestion de la mémoire d'une manière complexe, donc puis-je conclure que si j'ai de la mémoire libre dans la ram de mon portable, alors ma mémoire est suffisante ?

En général, il est bon de s'assurer que vous avez suffisamment de mémoire physique pour la tâche la plus gourmande en mémoire pour laquelle vous utiliserez votre ordinateur. Comme expliqué ci-dessus, la mémoire de pagination fera techniquement le travail mais sera beaucoup plus lente que la mémoire physique. Ce que je vous suggère est de surveiller vos niveaux de mémoire, d'ouvrir et d'exécuter la configuration la plus intensive que vous pensez pouvoir exécuter de manière réaliste et de voir combien de mémoire est utilisée.

Nous vous invitons à aider notre enquête en exécutant un commentaire ou en l'évaluant, nous vous souhaitons la bienvenue.



Utilisez notre moteur de recherche

Ricerca
Generic filters

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.