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

43

J'utilise Windows 7 64 bits avec 8G de RAM. Après quelques utilisations, je sens que Windows commence à 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.

Tony_Henrich
la source
1
Ce n’est pas simplement parce qu’il écrit / lit dans le fichier de page que nous l’utilisons, il se peut qu’il soit simplement en train de le mettre à jour afin de pouvoir vider la mémoire plus rapidement en cas de demande soudaine. Je recommande d'exécuter Performance Monitor ou d'effectuer un diagnostic approfondi et de voir la cause de la lenteur.
Scott Chamberlain
Avoir plus de 8 Go de RAM n'augmentera pas les performances dans 99. (9)% des cas. Avez-vous bourré votre mobo de puces RAM à faible fréquence / latence élevée et peu chères? Les remplacer serait une meilleure idée que d’en ajouter davantage.
Kotekzot
3
@kotekzot Cela dépend. J'ai généralement constaté que la latence de la mémoire RAM était quelque peu négligeable dans la plupart des goulots d'étranglement. S'il a suffisamment de mémoire pour ne pas attendre les applications quand il les modifie, alors le prochain goulet d'étranglement suivant plusieurs ordres de grandeur est presque toujours le disque dur, et un disque SSD corrigera ce problème. up.
Darth Android
@Si j'ai plus de RAM, je peux placer le fichier de page dans un disque mémoire beaucoup plus rapide qu'un accès HD. Il s’agit d’un poste de travail pour ordinateur portable Dell, donc je suis certain que les composants ne sont pas bon marché. Je suis conscient que les ordinateurs portables ont des disques durs et des sous-systèmes IO plus lents que les ordinateurs de bureau.
Tony_Henrich
1
S'il vous plaît ne mettez pas votre fichier de page sur un disque RAM. Cela ne fera que faire subir au système plus de fautes de page. Oui, s'ils se trouvent sur le disque de stockage de fichiers sur RAM, ils seront résolus plus rapidement que s'ils étaient passés sur un disque réel, mais ne pas les avoir du tout est encore beaucoup plus rapide. de plus, la plupart des erreurs de page augmentées concerneront des fichiers mappés, et le RAMdisk ne les aidera pas du tout.
Jamie Hanrahan

Réponses:

33

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 d'échange 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 répondre aux 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».

Mémoire système

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. Ils fonctionnent généralement 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 en attente:

Pendant une bonne majorité du temps, Windows Update est en veille. Cela bloque la mémoire et, pour la plupart, ne fait absolument rien qui lui soit utile en attendant que le calendrier soit respecté. D'autre part, 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 la RAM pour mettre en cache le contenu de votre bureau. toi.

Windows prend des milliers de ces décisions et gère un cache 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 est possible que nous devions attendre qu'il pille 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 et ensuite inutile), le code de fermeture (utilisé une fois et ensuite inutile) ou le code de mise à jour. Il n’est pas pratique de garder tout cela en mémoire lorsque les utilisations sont 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 l’ont réellement, et s’attendre à ce 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, qui fournit des garanties pour cette mémoire, même si celle-ci 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 ce cache disque énorme 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.

Darth Android
la source
6
@FrankComputer Voir la capture d'écran que j'ai publiée pour mon système de travail de 8 Go: 6300 Mo en cours d'utilisation, 1700 Mo en réserve / disque de secours, 42 Mo d'espace libre. En regardant mon système domestique (mémoire de 32 Go), vous avez raison, mais vous vous trompez de seuil: 9,2 Go utilisés, mémoire cache de 14,5 Go, 8,6 Go disponibles. Vous aurez de la mémoire libre si Windows n’a tout simplement plus rien à mettre en cache, mais ce seuil est assez élevé. Windows n'échange pas constamment, car le cache disque n'est pas un espace d'échange. Il est mis en cache de manière passive lorsque des fichiers sont demandés et non dans le cache. Vous ne remarquez pas les moments où il extrait du cache et il n'y a aucune activité de disque dur.
Darth Android
8
@FrankComputer: Si votre système fonctionne bien, ce n'est pas à cause de la mémoire disponible. La mémoire libre est la mémoire que le système n'utilise pas et elle ne peut avoir plus d'effet sur les performances que la mémoire installée sur votre bureau. La seule façon d'améliorer les performances avec la mémoire est de l' utiliser . Par conséquent, si elle est gratuite, elle n'est pas utilisée pour améliorer les performances. Libérer plus de mémoire signifie en utiliser moins, ce qui diminue les performances.
David Schwartz
1
@Tony_Henrich La désactivation du fichier de page est incorrecte. Très mauvais. (Déplacer le fichier d'échange vers un disque virtuel revient à le désactiver. Windows ne peut pas déplacer les données dont il n'a pas besoin immédiatement de mémoire). De nombreux programmes demandent une mémoire dont ils n’ont pas immédiatement besoin, mais qui pourrait l’être ultérieurement. Habituellement, Windows alloue cette mémoire sur le fichier d'échange et ne fait rien. Par exemple. Le serveur MSSQL alloue 8 Go de RAM lorsqu’il démarre. Même pour 0 bases de données. Juste parce que. Si vous placez votre fichier d'échange sur un disque mémoire, vous perdrez une quantité considérable de RAM qui pourrait autrement être utilisée pour la mémoire cache
Darth Android
1
@Tony_Henrich Actuellement, Windows gère votre fichier d'échange et votre RAM de manière optimale, en fonction de votre utilisation du système. Les seules améliorations que vous pouvez y apporter sont les suivantes: Ajoutez plus de mémoire ou déplacez votre système d'exploitation sur un SSD. Jouer avec votre fichier d'échange pèsera dans le meilleur des cas sur les performances globales de votre système ou, au pire, sur sa stabilité.
Darth Android
1
Vous expliquez ce que Windows fait avec la mémoire. Si j'ai beaucoup de mémoire libre, Windows devrait l'utiliser, que l'application soit en veille ou inactive. Quel est le mal à le garder en mémoire lorsque la mémoire est disponible. Une fois que la mémoire est faible, Windows peut alors utiliser le fichier de page. L'utilisation du fichier d'échange cause l'usure du lecteur. Il n'y a pas d'usure à utiliser la mémoire. Deuxièmement, j'utilise un SSD pour mon fichier de page. Bien que la vie des disques SSD soit plus petite que celle des disques durs, il y a beaucoup d'usure lors de l'écriture, mais cela ne dure pas encore quelques mois. C'est encore dans les années.
Tony_Henrich
4

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 ce qui est disponible, vous devez maintenant attendre que le système d'exploitation écrit le bloc de mémoire modifié, puis les libérer.

surfasb
la source
Avec les programmes 16G + et légers, le temps qu’un programme demande pour plus de mémoire que ce qui est libre est bien inférieur à l’utilisation fréquente du fichier de page. Dans ces cas, il est donc préférable d’utiliser une partie de la mémoire libre et moins du fichier de page. Il n'y a pas de solution unique qui convient à tous les cas.
Tony_Henrich
1
Je ne pense pas que tu comprends. Il n'est pas nécessaire que ce soit l'un ou l'autre. Windows peut écrire pour libérer de la mémoire et écrire dans le fichier d'échange. Ce n'est pas comme écrire dans le fichier de page ou écrire dans la mémoire.
surfasb
1
Mais en essayant de planifier à l'avance, Windows ne risque-t-il pas de remplir le cache sur puce du disque dur / SDD, ce qui ralentit les opérations d'écriture / de chargement de fichiers simultanées? Cette pré-permutation de RAM semble être une bonne idée, mais il semblerait qu’elle alourdisse le système par inadvertance.
binki
1
@binki: Oui, cela interfère avec les temps de lecture / écriture sur disque, mais si je me souviens bien, ils utilisent une priorité plus basse, donc les autres lectures / écritures devraient commencer en premier.
Mooing Duck
2

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 de 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é.

Anton Duzenko
la source
1
Se débarrasser du fichier d'échange ne désactive pas la mise en cache du disque.
Jamie Hanrahan
1
Vous avez écrit: "[Le cache de disque] existe par conception et nous ne pouvons rien y faire. Oh, attendez! Nous pouvons! Il suffit de désactiver le fichier d'échange." Désactiver le fichier d'échange n'a aucune incidence sur la mise en cache du disque, que dites-vous? De toute façon, c'est une idée stupide, car cela oblige le système d'exploitation à conserver pour toujours tous les commits privés dans la RAM une fois qu'il a été touché. Cela laisse moins de place pour la mémoire virtuelle mappée (comme le code), de sorte que les éléments doivent être paginés davantage. Le cache de disque proactif (superfetch) utilise ce qui reste après tout ce qui précède, il n'augmente donc pas la pagination.
Jamie Hanrahan
1
Je n'ai jamais dit (ou pensé) qu'éteindre votre fichier d'échange était votre idée, aussi je ne disais rien de "votre idée". Oh, alors que je suis ici: "Pour une raison quelconque, Windows considère que le cache disque est tout aussi important pour le code des programmes actifs et que les données" sont totalement fausses. Superfetch utilise uniquement les pages qui sont dans la liste de veille et font donc déjà partie de " "RAM disponible; il ne prend pas les pages du code et des données des programmes. Et ces pages restent disponibles, c'est-à-dire immédiatement disponibles pour le code et les données des programmes, même après que celles-ci contiennent des données en cache de fichiers.
Jamie Hanrahan
1
Je ne dis rien de la sorte. (Où obtenez-vous cela?) Je dis, cependant, que Windows ne page jamais rien pour faire de la place pour le cache disque. Au contraire, le cache utilise des pages qui ne font pas actuellement partie des processus et seraient donc autrement perdues. Ces restes de RAM immédiatement disponibles au code et les données dont il a besoin pour la substance pagination en , il est donc pas « utilisé » par le cache, simplement « empruntés ». Ainsi, le cache ne réduit pas la quantité de code et de données pouvant être paginée ou conservée dans la RAM. Réf.: Windows Internals de Solomon, Russinovich et Ionescu.
Jamie Hanrahan
1
J'ai déjà répondu dans la réponse de DA. Mais ce que vous venez de dire n'est pas ce qu'il a dit. Il a déclaré que Windows mettrait en page des processus inactifs depuis longtemps (true). Et il a également dit que le cache disque pourrait utiliser les pages ainsi libérées (également vrai). Mais cela ne signifie pas que le cache disque prend nécessairement la priorité. Le cache de disque n'utilise ces pages que si rien d'autre ne les requiert. Une quantité énorme de tests a démontré qu'il s'agit d'un bon compromis.
Jamie Hanrahan
1

Les arguments ( ici et ici ) pour conserver et utiliser le fichier d'échange même s'il y a suffisamment 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 puissent ressembler "beaucoup", cela n’est peut-être pas aussi vrai que vous le pensez. Vous devez profiler.

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

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

h22
la source
-2

Tous ces commentaires et la bonne réponse sont manquants. Désactivez votre fichier de page. Cela ne sert à rien avec 8 Go de RAM, et si vous avez besoin de plus de RAM, achetez-le. assez simple vraiment.

a2552308
la source
4
Windows est assez intelligent pour déterminer quoi mettre (ou pas) dans le fichier d'échange. À l'exception de certains scénarios presque purement théoriques, sa désactivation affectera les performances, même avec 8 Go de RAM. Même s'il manquait la bonne réponse, ce n'est certainement pas ça.
Marcks Thomas
4
Vous avez des preuves à l'appui de votre réclamation pour «préjudice causé»? Je présente un article MS support.microsoft.com/kb/889654
a2552308
6
Autrement dit: les fichiers de page ne peuvent qu'augmenter l'activité du disque ... et Windows n'est pas assez intelligent pour ne pas l'utiliser du tout s'il contient beaucoup de RAM. Sur un système SSD, cela peut ne pas être trop visible, sur un système à broche, cela peut affecter considérablement les performances de l'application. Voir l'affiche originale.
a2552308
2
Section pertinente de l'article MS: "Toutefois, à mesure que de plus en plus de RAM est ajoutée à un ordinateur, le besoin d'un fichier de page diminue. Si vous avez suffisamment de RAM installée sur votre ordinateur, vous n'aurez peut-être pas besoin d'un fichier de page, sauf si un fichier est requis. par une application spécifique. " Je ne pouvais pas trouver les sections pertinentes parmi les nombreux articles que vous avez liés, vous pourriez peut-être en citer les sections pertinentes?
a2552308
2
Cela semble bien en théorie, mais pas ce que j'ai observé dans la pratique.
a2552308