La charge de validation est pleine à 100% mais la mémoire physique n'est que de 60% lorsque vous n'utilisez aucun fichier d'échange


25

J'ai désactivé le fichier d'échange dans mon système (le disque dur est trop lent, je ne peux pas en acheter un nouveau immédiatement, je ne peux pas déplacer le fichier d'échange vers une autre partition). Quand je vois dans Resource Monitor, en utilisant des applications gourmandes en mémoire, le système montre que la charge de validation est presque 100% pleine. En effet, si je continue à exiger plus de mémoire, les programmes commencent à planter car la charge de validation atteint effectivement 100%.

En attendant, le système dit que j'utilise seulement 50 à 60% de mémoire physique et que j'ai environ 1 Go de mémoire disponible (gratuit + veille).

Si la charge de validation est la mémoire totale réellement demandée, pourquoi le système dit-il qu'il y a autant de mémoire disponible? La mémoire physique est-elle inutilisée par Windows? Le graphique de la mémoire est-il incorrect? Suis-je en train de manquer quelque chose?

Graphique des frais de validation et graphique de la mémoire physique Gestionnaire des tâches


2
Une autre bonne réponse sur le sujet est ici: brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7 .
2015

@cnst Très bon article. Cela m'a aidé à mieux comprendre ce problème. Pourquoi ne le postez-vous pas comme réponse?
Jason Oviedo

2
Veuillez ne pas désactiver les personnes de votre fichier d'échange. C'est une idée stupide
Milney

@Milney Je suis d'accord, il ne faut généralement pas désactiver le fichier d' échange . Au moment de la question, cela avait du sens pour moi car le disque était trop lent, tellement il paralysait mon système. En fait, c'était très utile, en plus de poser cette question, la réactivité générale du système s'est améliorée de nombreuses fois.
Jason Oviedo

@JasonOviedo Cela ne devrait pas être le cas et indique que quelque chose est très mal. Donner plus d'options au système ne doit PAS le ralentir. Le système n'a pas à utiliser le fichier d'échange simplement parce qu'il en a un. (Ce qui signifie que c'est probablement une question XY. La bonne question est précisément pourquoi le fichier d'échange a rendu votre système plus lent.)
David Schwartz

Réponses:


26

Manquer de limite de validation alors que vous avez encore beaucoup de RAM disponible n'est pas du tout inhabituel. Ni la limite de validation ni les frais de validation ne sont directement liés à la mémoire RAM disponible ou disponible.

La limite de validation = taille actuelle du fichier d'échange + taille de la RAM.

Puisque vous n'avez pas de fichier d'échange, la limite de validation est plus petite qu'elle ne le serait si vous aviez un fichier d'échange. Peu importe la quantité de RAM est libre . Pour la limite de validation, seule la quantité de RAM installée est importante. Vous pouvez manquer de limite de validation, même si 90% de votre RAM est libre ou disponible.

La charge de validation est un décompte de mémoire virtuelle, pas physique. Supposons que mon programme demande 2 Go engagés, mais qu'il n'en accède qu'à 0,5 Go. Les 1,5 Go restants ne sont jamais mis en défaut, ne sont jamais affectés à la RAM, donc l'utilisation de la RAM ne reflète pas les 2 Go, seulement 0,5 Go.

Pourtant, "la validation du système" est augmentée de 2 Go car le système a "validé" qu'il y aura un endroit pour stocker mes 2 Go, si j'en ai réellement besoin. Le fait que sur une exécution donnée du programme, je ne vais pas nécessairement essayer de tout utiliser n'aide pas. J'ai demandé 2 Go et le retour réussi de cet appel me dit que le système d'exploitation "engagé" - c'est-à-dire promis - que je peux utiliser autant d'espace d'adressage virtuel. Le système d'exploitation ne peut pas faire cette promesse à moins qu'il n'y ait un endroit pour tout garder.

Donc: remettez votre fichier d'échange, ajoutez plus de RAM ou exécutez moins de choses à la fois. Ou une combinaison des trois. Ce sont vos seules options pour éviter les erreurs «mémoire insuffisante» et «mémoire insuffisante».

Voir aussi mes réponses ici (plus) et ici (beaucoup plus).


3
Plus précisément, avant que Windows n'alloue de la mémoire, il souhaite pouvoir garantir qu'il peut remplir ces allocations lors de leur utilisation. Même si les allocations ne sont pas pleinement utilisées, Windows refusera d'en allouer davantage s'il ne peut pas faire cette garantie. Un fichier d'échange, qu'il soit utilisé ou non, fournit un stockage de sauvegarde supplémentaire.
Bob

4

Comme l' illustre le test d'allocation de mémoire dans l'article à http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ , Windows est un type de système qui échouerait une allocation de mémoire importante si une telle allocation, avec toutes les allocations précédentes (le concept que Microsoft appelle "commit"), amènerait le "commit" total au-dessus de la somme de la mémoire physique et de la somme de tous les fichiers d'échange (swap).

Considérez qu'une allocation en elle-même n'utilise pas de mémoire réelle (ni physique ni d'échange), avant qu'une lecture ou une écriture n'ait lieu dans l'espace d'adressage virtuel du processus pour l'allocation susmentionnée. Par exemple, une allocation de 2 Go en elle-même n'affecterait que les numéros de «validation» (dans Windows 7 Talk), laissant la «mémoire physique» seule (jusqu'à ce que la lecture / écriture au sein de ladite allocation se produise).

En ce qui concerne la conception du système d'exploitation, l'approche alternative serait de toujours autoriser l'allocation de n'importe quelle taille (sauf si la mémoire disponible est déjà complètement épuisée), puis de laisser les applications échouer en lecture / écriture à la place. Voir /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail pour plus de détails.


2
Oui. L'argument pour l'approche de Windows: il est raisonnable de s'attendre à ce que les programmeurs vérifient l'état d'un malloc (ou, dans Win32, VirtualAlloc). Une fois cet appel réussi, le programme peut être sûr que le canal alloué est utilisable et le restera jusqu'à ce qu'un correspondant gratuit ou VirtualFree. L'autre façon, les lectures et écritures en mémoire ordinaire (c'est-à-dire le déréférencement de pointeurs) peuvent déclencher des exceptions d'accès à la mémoire. Mais aucun programmeur ne s'attend à devoir vérifier l'état après chaque déréférence de pointeur. Ils ne renvoient pas de statut de toute façon, donc cela devrait être fait avec un gestionnaire d'exceptions. Laid.
Jamie Hanrahan

2

La mémoire disponible n'est pas ce que vous pensez que ce serait. Il ne l'utilisait pas vraiment, un cache de fichiers de processus récemment terminés ou de processus ajustés qui ont été forcés de céder de la mémoire à d'autres processus. Ils pourraient être rappelés à leur objectif d'origine. voir pour plus de détails.

http://support.microsoft.com/kb/312628

Pour ne pas avoir de fichier d'échange, c'est très mauvais. Windows se dégrade mal sans un. N'oubliez pas que même les fichiers exécutables sont utilisés comme fichiers d'échange lorsqu'il n'y a pas de fichier d'échange. Même si le lecteur est lent, il vaut mieux avoir un fichier d'échange jusqu'à ce que vous obteniez jusqu'à 8 à 16 Go de mémoire. Certaines personnes pensent que même Windows 7 peut fonctionner sans alors.

Je donne régulièrement un coup de pouce à la vieille machine en faisant quelques choses. Nettoyez le disque dur autant que possible. Copiez tout ce que vous pouvez temporairement retirer du lecteur sur une sauvegarde. Supprimez les applications dont vous n'avez pas besoin. Supprimer les applications peut réinstaller.

Lorsque tout cela est fait, défragmentez votre disque dur. À ce stade, recréez votre fichier d'échange. Il sera le plus proche possible de l'avant du lecteur. Créez une taille fixe d'environ 1,5 fois la mémoire. C'est ma règle, j'ai généralement vu des tailles comprises entre 1 et 3 fois la mémoire. Cela lui donnera une légère augmentation de la vitesse par rapport aux endroits habituels où il serait placé.

J'utilise le défragmenteur auslogic c'est gratuit (annonces pour plus d'outil cependant). Il y en a d'autres qui font ça aussi. Consultez les défragmenteurs sur portableapps.com. Il optimise le disque en plaçant les fichiers récemment consultés près de l'avant du lecteur pour un accès plus rapide. Il montre où le fichier d'échange est placé afin que vous puissiez voir si vous l'avez déplacé vers les 25% supérieurs du lecteur.

Après cela, réinstallez les applications et copiez vos données.

Je dirais que vous obtenez 10 ou 20% de boost. Mais la valeur principale est que l'hésitation disparaît pour une expérience plus fluide.


3
À l'aide de certains tests, il est clair pour moi que lorsque le disque est trop lent, le fait de ne pas avoir de fichier d'échange accélère le système. Je peux faire la différence de plusieurs secondes dans des tâches simples comme le changement d'application.
Jason Oviedo

@Mark Vous vous trompez. La grande majorité des systèmes Windows fonctionnent avec un fichier d'échange (car c'est ainsi que Windows s'exécute par défaut, pour une raison valable et suffisante) et presque tous utilisent des disques à vitesse similaire. Et presque aucun d'entre eux ne présente de tels problèmes. Le problème n'est pas "le fichier d'échange", c'est que vous n'avez pas assez de RAM. Veuillez noter que la suppression du fichier d' échange n'élimine pas la pagination vers et depuis le disque - elle élimine simplement l'un des centaines de fichiers généralement impliqués dans la pagination.
Jamie Hanrahan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.