43 votes

Pourquoi Windows 7 utilise-t-il le fichier de pagination lorsqu'il y a de la RAM physique libre ?

Je suis sous Windows 7 64 bits avec 8 Go de RAM. Après un certain temps d'utilisation, je sens que Windows devient lent. Le disque tourne en boucle. Lorsque je regarde le moniteur de ressources et l'activité du disque, je vois quelques instances d'utilisation du fichier de page (c:\pagefile.sys). Je vérifie la mémoire physique et je vois environ 2,3 Go de mémoire disponible et 700 Mo de mémoire libre.

Pourquoi Windows n'utilise-t-il pas plus de la mémoire libre et moins du fichier de page? Doit-il laisser x quantité de RAM libre, combien cela serait-il? Est-ce un pourcentage de la RAM physique?

Mon plan est d'obtenir plus de RAM et un SSD pour le disque principal. En attendant, je souffre de performances lentes.

33voto

Darth Android Points 36975

Tout d'abord, ne placez pas votre fichier de page sur un SSD. Bien que les SSD se soient améliorés en matière de nivellement de l'usure, le fichier de page est écrit fréquemment et il dégradera votre SSD beaucoup plus rapidement que lors d'une utilisation générale.

Ce que beaucoup de gens ne comprennent pas, c'est que Windows n'a jamais vraiment de mémoire libre. Il y a quelques mégaoctets qui sont conservés libres pour des demandes ponctuelles, mais par ailleurs, 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 qu'on appelle la mémoire "standby".

Mémoire système

Il s'agit de pages mémoire qui peuvent être vidées si nécessaire (la mémoire standby est un grand cache), donc du point de vue de l'application, elle est disponible, mais elle n'est en aucun cas inutilisée. Habituellement, elle fonctionne en tant que cache disque ou 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 standby, en fonction des schémas d'utilisation. Pour prendre un exemple construit, comparons la valeur relative de la mémoire privée d'un programme comme Windows Update (généralement configuré pour s'exécuter une fois par semaine), par rapport au fait de mettre en cache le contenu de votre bureau dans cette mémoire standby :

La plupart du temps, Windows Update est inactif. Il occupe de la mémoire et pour la plupart, ne fait absolument rien de précieux avec, en attendant que l'horaire arrive. En revanche, le contenu de votre dossier de bureau pourrait être consulté constamment, surtout si vous aimez y enregistrer des fichiers.

Dans ce cas, ce que fera Windows, c'est de supprimer de la mémoire allouée à Windows Update (même si la mémoire n'est pas "pleine"), et d'utiliser l'espace ainsi libéré en RAM pour mettre en cache le contenu de votre bureau. Cela se traduit par de meilleures performances pour vous.

Windows prend des milliers de décisions comme celles-ci et gère un cache disque pour des centaines de fichiers constamment écrits par des services en arrière-plan tout en essayant d'équilibrer cela avec les demandes de mémoire des applications actives. Parfois, il se trompe momentanément, et nous devons peut-être attendre qu'il ramène les données en mémoire lorsque nous passons à une application qui dormait en arrière-plan depuis un certain temps. Mais ce à quoi vous devez penser, c'est si cela avait conservé cette application entièrement en mémoire, combien d'autres applications seraient alors ralenties en attendant que les écritures et lectures sur disque se terminent, ou seraient elles-mêmes contraintes de libérer de l'espace ? Et si c'étaient des applications que vous utilisiez entre-temps ?


Les applications allouent fréquemment des pages mémoire qui sont très rarement utilisées, telles que le code de démarrage (utilisé une fois puis plus nécessaire), le code d'arrêt (utilisé une fois puis plus nécessaire), ou le code de mise à jour. Il n'est pas pratique de tout conserver en mémoire lorsqu'il y a des utilisations bien plus importantes, donc une fois que Windows identifie des sections de code qui n'ont pas été nécessaires pour l'opération actuelle d'une application, il les envoie joyeusement dans le fichier de page, même s'il aurait techniquement pu les garder en mémoire.

(Et en fait, en fonction des applications, les systèmes peuvent souvent allouer plus de mémoire que ce qu'ils ont réellement, en s'attendant à ce que la majeure partie soit mise en cache. Si vous regardez un détail du décompte de mémoire, la "Commit" ou "Charge de commit" est la quantité de mémoire que Windows a allouée à diverses applications. Le fichier de page est utilisé pour garantir cette mémoire, même s'il n'y a pas assez de RAM physique pour la couvrir.)


Je viens de remarquer que vous avez fait une distinction entre la mémoire disponible et la mémoire libre dans votre question ; mes excuses si vous vous sentez sermonné et connaissiez déjà la différence. Idéalement, la mémoire libre est toujours de 0. Cependant, bien que la mémoire standby soit une mémoire pouvant être libérée, elle n'est pas toujours une mémoire qui peut être libérée rapidement. Si j'essaie d'écrire un fichier de 1 Go sur le disque, Windows va le stocker dans un cache disque en mémoire s'il le peut, puis l'écrire lentement sur le disque dur en arrière-plan. Si une application a besoin de demander 50 Mo de mémoire supplémentaire, mais qu'il n'y en a pas de disponible car ce cache disque énorme est encore en cours de vidage, l'application va être gelée jusqu'à ce qu'elle soit disponible. Avoir un petit tampon à disposition permet au système de résoudre ce problème avec un minimum de latence du point de vue de l'utilisateur. Vous pourriez aussi vous retrouver avec des tampons plus grands que la normale si Windows vient d'effacer une partie du cache standby ou a libéré beaucoup de mémoire en cours d'utilisation, mais n'a pas encore rempli avec de nouvelles données de cache.

4voto

Thad Points 725

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'y en a de disponible, le système d'exploitation peut commencer à libérer de l'espace le plus rapidement possible. Mieux vaut se préparer maintenant que plus tard.

Si le système d'exploitation devait attendre, vous vous retrouveriez face à un goulot d'étranglement en termes de performances. Si un programme demande plus de mémoire que ce qui est disponible, vous devez maintenant attendre que le système d'exploitation écrive les blocs de mémoire modifiés, puis les libère.

4voto

Raffaello Points 165

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

cacheset.exe

Vous pouvez le trouver ici:

http://technet.microsoft.com/fr-fr/sysinternals/bb897561.aspx

3voto

Anton Duzenko Points 187

J'ai désactivé le fichier de page pendant les 7 dernières années. En fait, c'est la première chose que je fais après une nouvelle installation. Je n'ai jamais eu de problème avec ça. (En fait, j'en ai eu un - un jeu appelé "titan quest" a effectué une vérification très stupide au démarrage, alors j'ai créé un fichier de page de 4 Mo juste pour le rendre heureux, puis j'ai désactivé le PF plus tard).

Quant à la question initiale. Windows utilise notre RAM pour le cache d'E/S du disque. Pour une raison quelconque, il pense que le cache disque est aussi important que 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! Si! Il suffit de désactiver le fichier de page.

Vous exécutez des applications qui consomment beaucoup de RAM? Achetez plus de RAM ou fermez une application avant d'en lancer une autre. Vous pouvez utiliser Process Explorer pour voir combien de mémoire est utilisée à tout moment donné. Personnellement, j'ai 8 Go de RAM au travail (vmware + virtualbox + eclipse + firefox + delphi + adobe premiere + skype + plus de programmes en arrière-plan) et à la maison (jeu intensif) et je ne me souviens pas de la dernière fois où j'ai vu le avertissement "faible mémoire".

1voto

h22 Points 444

Les arguments (ici et ici) pour garder et utiliser le fichier de pagination même s'il y a assez de RAM sont les suivants :

  • Même s'il y a de la mémoire libre maintenant, la machine pourrait manquer de mémoire plus tard. Mieux vaut déplacer des parties de mémoire peu utilisées vers le disque à l'avance.
  • Il y a aussi de la mémoire "standby" qui apparaît comme libre mais qui est en réalité utilisée pour le caching sur disque. C'est également important pour les performances, il vaut mieux en avoir un peu.
  • Si vous manquez de RAM avec le fichier de pagination désactivé, c'est le crash dur.
  • Alors que 2, 4, 16 ou n'importe quel autre nombre de Go de RAM peuvent sembler "beaucoup", cela peut ne pas être aussi vrai que vous le pensez. Vous devez analyser.

Avec le Moniteur de ressources de Windows, il est possible de voir combien de RAM est utilisée pour le caching (affiché comme "Standby").

Si vous remarquez que votre RAM est effectivement utilisée ou en mode veille, le fichier de pagination vous sera utile. Si la combinaison de vos tâches et de la RAM disponible est telle qu'une partie importante de la mémoire apparaît comme inutilisée ("Libre"), je pense qu'il n'y a pas besoin de solliciter le disque dur juste par respect pour quelqu'un qui "sait mieux et dit cela ici".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X