web-dev-qa-db-fra.com

Pourquoi Windows 7 utilise-t-il le fichier d'échange alors qu'il y a de la RAM physique?

J'utilise Windows 7 64 bits avec 8G de RAM. Après quelques utilisations, je sens que Windows est en train de ralentir. Le lecteur est en furie. Lorsque je regarde le moniteur de ressources et l'activité du disque, je vois quelques cas d'utilisation du fichier de page (c:\pagefile.sys). Je vérifie la mémoire physique et je vois environ 2,3G de mémoire disponible et 700 Mo de mémoire libre.

Pourquoi Windows n'utilise-t-il pas plus de mémoire disponible et moins de fichier de page? At-il besoin de laisser une quantité x de bélier gratuit, combien cela ferait-il? Est-ce un pourcentage de bélier physique?

Mon plan est d'obtenir plus de RAM et un SSD pour le lecteur principal. En attendant je souffre de la performance lente.

43
Tony_Henrich

Premièrement, ne placez pas votre fichier de page sur un SSD. Alors que les disques SSD ont amélioré leur niveau d'usure, le fichier de page est écrit fréquemment et il dégradera votre disque SSD beaucoup plus rapidement que son utilisation habituelle.

Ce que beaucoup de gens ne comprennent pas, c'est que Windows n'a jamais vraiment de mémoire libre. Quelques Mo sont laissés libres pour les demandes en rafale, mais sinon, la différence entre la mémoire d'application active en cours d'utilisation et la mémoire totale est généralement consommée par ce que l'on appelle la mémoire de "veille".

System memory

Ce sont des pages de mémoire qui peuvent être vidées si nécessaire (la mémoire de réserve est un très gros cache), donc, du point de vue de l'application, elle est disponible, mais elles ne sont en aucun cas non utilisées. Habituellement, ils fonctionnent comme cache de disque ou comme cache de fichier d'échange.

L'objectif de Windows est de conserver les données les plus susceptibles d'être utilisées dans ce cache de secours, en fonction des modèles d'utilisation. Pour utiliser un exemple artificiel, comparons la valeur relative de la mémoire privée d'un programme tel que Windows Update (généralement configuré pour s'exécuter une fois par semaine), en mettant en cache le contenu de votre bureau dans cette mémoire de secours:

Windows Update est en veille pendant une bonne majorité du temps. Cela bloque la mémoire et, dans la plupart des cas, il ne fait absolument rien qui lui soit utile pendant qu'il attend l'horaire. Par contre, le contenu de votre dossier de bureau peut être interrogé en permanence, surtout si vous souhaitez y enregistrer des fichiers.

Dans ce cas, Windows va supprimer la mémoire allouée à Windows Update (même si la mémoire n’est pas "saturée", et utiliser l’espace disponible dans RAM pour mettre en cache le contenu de votre bureau.) dans de meilleures performances pour vous.

Windows prend des milliers de décisions et gère un cache de disque pour des centaines de fichiers constamment écrits par des services d'arrière-plan, tout en essayant de faire contrepoids à la demande en mémoire d'applications actives. Parfois, il y a un problème pendant un moment, et il peut être nécessaire d'attendre qu'il repasse les données en mémoire lorsque nous passons à une application qui dort en arrière-plan depuis un moment. Mais ce que vous devez penser, c’est que si elle avait gardé cette application entièrement en mémoire, combien d’autres applications seraient à leur tour bloquées dans l’attente d’attentes d’écritures et de lectures sur disque, ou seraient elles-mêmes obligées de feuilleter? Et si c'étaient des applications que vous utilisiez entre temps?


Les applications allouent fréquemment des pages de mémoire qui sont très rarement utilisées, telles que le code de démarrage (utilisé une fois puis inutile), le code d'arrêt (utilisé une fois et par la suite inutile) ou le code de mise à jour. Il n’est pas pratique de garder tout cela en mémoire quand il y a des utilisations beaucoup plus importantes. Ainsi, une fois que Windows a identifié les sections de code qui n’ont pas été utilisées pour le fonctionnement actuel d’une application, il place heureusement ces sections dans le fichier d'échange, même si il pourrait techniquement les garder en mémoire.

(Et en fait, en fonction des applications, les systèmes peuvent fréquemment allouer plus de mémoire qu’ils ne le souhaitent, en espérant que la plus grande partie finisse par être paginée. Si vous recherchez une panne de mémoire détaillée, les frais "Commit" ou "Commit" La quantité de mémoire allouée par Windows à diverses applications est déterminée par le fichier d'échange, même s'il ne dispose pas de suffisamment de RAM physique pour la couvrir.)


Je viens de remarquer que vous avez fait une distinction entre mémoire disponible et mémoire libre dans votre question; Je m'excuse si vous vous sentez sermonné et que vous connaissez déjà la différence. Idéalement, la mémoire disponible est toujours égale à 0. Toutefois, bien que la mémoire de secours soit une mémoire pouvant être libérée, elle ne peut pas toujours être libérée rapidement. Si j'essaie d'écrire un fichier de 1 Go sur le disque, Windows va le coller dans un cache de disque en mémoire s'il le peut, puis l'écrire lentement sur le disque dur en arrière-plan. Si une application doit demander 50 Mo de mémoire supplémentaire, mais qu'aucune n'est disponible, car cet énorme cache de disque est toujours vidé, l'application sera bloquée jusqu'à ce qu'elle soit disponible. Le fait de garder un petit tampon sous la main permet au système de résoudre ce problème avec un délai minimal du point de vue de l'utilisateur. Vous pourriez également vous retrouver avec des mémoires tampons plus grandes que la normale si Windows vient de vider une partie du cache en veille ou de libérer beaucoup de mémoire en cours d'utilisation, mais ne l'a pas encore utilisée avec de nouvelles données de cache.

33
Darth Android

Il existe un outil pour définir le cache disque par SysInternal.

cacheset.exe

Vous pouvez le trouver ici:

http://technet.Microsoft.com/en-us/sysinternals/bb897561.aspx

4
Raffaello

Cela s'appelle planifier à l'avance.

Écrire des pages de mémoire dans le fichier d'échange lorsqu'il reste encore beaucoup de RAM est une bonne chose. Dès qu'un programme demande plus de mémoire qu'il n'en reste de disponible, le système d'exploitation peut commencer à libérer de l'espace dès que possible. Mieux vaut préparer maintenant que plus tard.

Si le système d'exploitation doit attendre, vous rencontrez un goulot d'étranglement au niveau des performances. Si un programme demande plus de mémoire que disponible, vous devez maintenant attendre que le système d'exploitation écrit le bloc de mémoire modifié, puis les libérer.

4
surfasb

Le fichier d'échange est désactivé depuis 7 ans. En fait, c’est la première chose que je fais après une nouvelle installation. Jamais eu de problème avec ça. (En fait, un jeu appelé "titan quest" a effectué un contrôle très stupide au démarrage; j'ai donc créé un fichier d'échange de 4 Mo uniquement pour le rendre heureux et pour le désactiver plus tard). En ce qui concerne la question initiale. Windows utilise notre RAM pour le cache d'E/S de disque. Pour une raison quelconque, le cache disque est tout aussi important pour le code et les données des programmes actifs. Et il n'y a aucun moyen de limiter la taille du cache disque. C'est là, par conception, et nous ne pouvons rien y faire ... Oh, attendez! Nous pouvons! Il suffit de désactiver le fichier d'échange. Vous exécutez des applications gourmandes en mémoire vive? Achetez plus RAM ou fermez une application avant d'en lancer une autre. Vous pouvez utiliser Process Explorer pour voir la quantité de mémoire utilisée à un moment donné. Personnellement, j’ai 8 Go RAM à la fois au travail (vmware + virtualbox + Eclipse + firefox + delphi + premiere Adobe + skype + à d’autres programmes en tâche de fond) et à la maison (jeux lourds). La dernière fois que j'ai vu l'avertissement "mémoire insuffisante".

2
Anton Duzenko

Les arguments ( ici et ici ) pour conserver et utiliser le fichier de page même s'il y a assez de RAM sont:

  • Même s'il reste de la mémoire, la machine risque de manquer de mémoire plus tard. Mieux vaut laisser au préalable des parties de mémoire peu utilisées sur le disque.
  • Il existe également une mémoire "de secours" qui apparaît comme étant libre mais qui est en fait utilisée pour la mise en cache du disque. Il est également important pour la performance, mieux vaut en avoir.
  • Si vous manquez de RAM avec le fichier d'échange désactivé, il s'agit d'un crash matériel.
  • Bien que 2, 4, 16 ou tout autre nombre de Go de RAM puisse ressembler "beaucoup", il se peut que cela ne soit pas aussi vrai que vous le pensez. Vous devez profiler.

Avec le moniteur de ressources Windows, il est possible de voir combien RAM est utilisé pour la mise en cache (indiqué par "Veille").

Si vous voyez que votre RAM est effectivement utilisé ou en veille, le fichier de page vous est utile. Si la combinaison de vos tâches et de votre disponible RAM est telle qu'une partie importante de la mémoire s'affiche comme étant inutilisée ("Libre"), je pense qu'il n'est pas nécessaire de moudre le disque dur uniquement par respect pour quelqu'un qui " sait mieux et dit donc ici ".

1
h22