web-dev-qa-db-fra.com

Tout avantage ou inconvénient de supprimer un fichier d'échange sur une machine de 8 Go RAM machine?

J'utilise Windows 7 sur un processeur AMD double cœur x64 avec 8 Go de RAM.

Ai-je même besoin d'un fichier d'échange?

Sa suppression aidera-t-elle ou nuira-t-elle aux performances?

Cela ferait-il une différence s'il s'agit d'un serveur ou d'un ordinateur de bureau?

Windows 7 vs Windows 2008 fait-il une différence avec un fichier d'échange?

213
Jason

TL; version DR: laissez Windows gérer vos paramètres de mémoire/fichier d'échange. Les employés de MS ont passé beaucoup plus d'heures à réfléchir à ces problèmes que la plupart d'entre nous, administrateurs système.

Beaucoup de gens semblent supposer que Windows pousse les données dans le fichier d'échange à la demande. EG: quelque chose veut beaucoup de mémoire, et il n'y a pas assez RAM pour combler le besoin, donc Windows commence à écrire follement des données de RAM sur le disque à ce dernière minute, afin qu'il puisse libérer RAM pour les nouvelles demandes.

Ceci est une erreur. Il y a plus de choses sous le capot. De manière générale, Windows conserve un magasin de sauvegarde , ce qui signifie qu'il veut voir tout ce qui est en mémoire sur le disque quelque part. Maintenant, quand quelque chose arrive et demande beaucoup de mémoire, Windows peut effacer RAM très rapidement, car ces données sont déjà sur le disque, prêt à être paginé dans RAM si cela est demandé. On peut donc dire qu'une grande partie de ce qui se trouve dans le fichier d'échange est aussi dans RAM; les données ont été préventivement placées dans le fichier d'échange pour accélérer nouveau les demandes d'allocation de mémoire.

Décrire les mécanismes spécifiques impliqués prendrait de nombreuses pages (voir le chapitre 7 de Windows Internals , et notez qu'un nouvelle édition sera bientôt disponible), mais il y a quelques bonnes choses À noter. Tout d'abord, une grande partie de ce qui se trouve dans RAM est intrinsèquement déjà sur le disque - code de programme récupéré à partir d'un fichier exécutable ou d'un DLL par exemple. Donc cela ne fait pas doivent être écrites dans le fichier d'échange; Windows peut simplement garder la trace d'où les bits ont été récupérés à l'origine. Deuxièmement, Windows garde une trace des données dans RAM est le plus fréquemment utilisé, et donc efface de RAM les données qui ont duré le plus longtemps sans être accessibles.

La suppression complète du fichier d'échange peut entraîner une surcharge du disque. Imaginez un scénario simple où certaines applications se lancent et nécessitent 80% de la RAM existante. Cela forcerait le code exécutable actuel hors de RAM - peut-être même le code du système d'exploitation. Maintenant, chaque fois que ces autres applications - ou le système d'exploitation lui-même (!!) ont besoin d'accéder à ces données, le système d'exploitation doit les paginer provenant du magasin de sauvegarde sur le disque, ce qui entraîne beaucoup de débordements. Parce que sans fichier d'échange pour servir de magasin de sauvegarde pour les données transitoires, les seules choses qui peuvent être paginées sont les exécutables et les DLL qui avaient des magasins de sauvegarde inhérents pour commencer.

Il existe bien sûr de nombreux scénarios de ressources/utilisation. Il n'est pas impossible que vous ayez l'un des scénarios dans lesquels il n'y aurait aucun effet négatif de la suppression du fichier d'échange, mais ce sont la minorité. Dans la plupart des cas, la suppression ou la réduction du fichier d'échange entraînera une baisse des performances dans les scénarios d'utilisation de ressources maximales.

Quelques références:

dmo noté un récent Eric Lippert post qui aide à la compréhension de la mémoire virtuelle (bien que moins lié à la question). Je le mets ici parce que je soupçonne que certaines personnes ne défileront pas vers d'autres réponses - mais si vous le trouvez utile, vous devez dmo un vote , alors utilisez le lien pour y arriver!

302
quux

Eric Lippert a récemment écrit un entrée de blog décrivant comment Windows gère la mémoire. En bref, le modèle de mémoire Windows peut être considéré comme un magasin de disques où RAM agit comme un cache améliorant les performances.

80
dmo

Comme je le vois dans les autres réponses, je suis le seul à avoir désactivé le fichier d'échange et je ne l'ai jamais regretté. Génial: -)

À la maison et au travail, j'ai Vista 64 bits avec 8 Go de RAM. Les deux ont le fichier d'échange désactivé. Au travail, il n'est pas inhabituel pour moi d'avoir quelques instances de Visual Studio 2008, Virtual PC avec Windows XP, 2 instances de SQL Server et Internet Explorer 8 avec beaucoup d'onglets travaillant ensemble. J'atteins rarement 80% de la mémoire.

J'utilise également le sommeil hybride tous les jours (hibernation avec sommeil) sans aucun problème.

J'ai commencé à l'expérimenter avec Windows XP avec 2 Go de RAM et j'ai vraiment vu la différence. Un exemple classique était lorsque les icônes du Panneau de configuration cessaient d'afficher) lui-même un par un, mais tout à la fois. Le temps de démarrage de Firefox/Thunderbird a également augmenté de façon spectaculaire. Tout a commencé à fonctionner immédiatement après que j'ai cliqué sur quelque chose. Malheureusement, 2 Go étaient trop petits pour l'utilisation de mes applications (Visual Studio 2008, Virtual PC et SQL Server ), je l'ai donc réactivé.

Mais en ce moment avec 8 Go, je ne veux jamais revenir en arrière et activer le fichier d'échange.

Pour ceux qui parlent de cas extrêmes, prenez celui-ci de mon Windows XP fois.
Lorsque vous essayez de charger un grand tableau croisé dynamique dans Excel à partir d'une requête SQL, Excel 2000 augmente son utilisation de la mémoire assez rapidement.
Lorsque le fichier d'échange est désactivé - vous attendez un peu, puis Excel explose et le système efface toute la mémoire après.
Lorsque le fichier d'échange est activé - vous attendez un certain temps et lorsque vous remarquerez que quelque chose ne va pas, vous ne pouvez presque rien faire avec votre système. Votre disque dur fonctionne comme l'enfer et même si vous parvenez à exécuter le Gestionnaire des tâches (après quelques minutes d'attente) et à tuer Excel.exe vous devez attendre une minute environ jusqu'à ce que le système charge tout à partir du fichier d'échange.
Comme je l'ai vu plus tard, Excel 2003 gère le même tableau croisé dynamique sans aucun problème avec le fichier d'échange désactivé - il ne s'agissait donc pas d'un "problème de jeu de données trop volumineux".

Donc, à mon avis, un fichier d'échange désactivé vous protège même parfois contre des applications mal écrites.

En bref: si vous êtes conscient de votre utilisation de la mémoire - vous pouvez la désactiver en toute sécurité.

Edit: Je veux juste ajouter que j'ai installé Windows Vista SP2 sans aucun problème.

48
SeeR

Vous voudrez peut-être faire quelques mesures pour comprendre comment votre propre système utilise la mémoire avant d'effectuer des ajustements de fichier d'échange. Ou (si vous voulez toujours faire des ajustements), avant et après lesdits ajustements.

Perfmon est l'outil pour cela; pas Gestionnaire des tâches. Un compteur clé est Mémoire - Saisie de pages/s. Cela représentera graphiquement les défauts de page durs , ceux où une lecture à partir du disque est nécessaire avant qu'un processus puisse continuer. Défauts de page mous (qui sont la majorité des éléments représentés graphiquement dans le défaut Défauts de page/sec compteur; Je recommande d'ignorer ce compteur!) Ne sont pas vraiment un problème; ils montrent simplement les éléments lus à partir de RAM normalement.

Graphique Perfmon http://g.imagehost.org/0383/perfmon-paging.png

Ci-dessus est un exemple d'un système sans soucis, en termes de mémoire. Très occasionnellement, il y a un pic de défauts matériels - ceux-ci ne peuvent pas être évités, car les disques durs sont toujours plus grands que la RAM. Mais le graphique est largement plat à zéro. Ainsi, le système d'exploitation est très rarement paginé depuis le magasin de sauvegarde.

Si vous voyez un graphique Memory - Pages Input/sec qui est beaucoup plus pointu que celui-ci, la bonne réponse consiste soit à réduire l'utilisation de la mémoire (exécuter moins de programmes), soit à ajouter de la RAM. La modification de vos paramètres de fichier d'échange ne changerait pas le fait que la quantité de mémoire requise par le système est supérieure à ce qu'elle a réellement.

Un compteur supplémentaire pratique à surveiller est PhysicalDisk - Moy. Longueur de la file d'attente (toutes les instances). Cela montrera dans quelle mesure vos modifications ont un impact sur l'utilisation du disque. Un système bien élevé affichera ce compteur en moyenne à 4 ou moins par broche.

35
quux

J'ai utilisé ma boîte Vista x64 de 8 Go sans fichier d'échange pendant des années, sans aucun problème.

Des problèmes sont survenus lorsque j'ai vraiment utilisé ma mémoire!

Il y a trois semaines, j'ai commencé à éditer de très gros fichiers image (~ 2 Go) dans Photoshop. Une session d'édition a grugé toute ma mémoire. Problème: je n'ai pas pu enregistrer mon travail car Photoshop a besoin de plus de mémoire pour enregistrer le fichier!

Et comme c'était Photoshop lui-même, qui consommait toute la mémoire, je ne pouvais même pas libérer de la mémoire en fermant les programmes (enfin, je l'ai fait, mais c'était trop peu pour être utile).

Tout ce que je pouvais faire était de supprimer mon travail, d'activer mon fichier de page et de refaire tout mon travail - j'ai perdu beaucoup de travail à cause de cela et je ne peux pas recommander de désactiver votre fichier de page.

Oui, cela fonctionnera très bien la plupart du temps. Mais au moment où il se cassera, cela pourrait être douloureux.

34
Sam

Bien que les réponses ici couvrent assez bien le sujet, je recommanderai toujours cette lecture:

http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

Il parle de la taille PF presque à la fin:

Certains estiment que l'absence de fichier de pagination entraîne de meilleures performances, mais en général, avoir un fichier de pagination signifie que Windows peut écrire des pages sur la liste modifiée (qui représentent des pages qui ne sont pas consultées activement mais qui n'ont pas été enregistrées sur le disque) vers le fichier d'échange, rendant ainsi cette mémoire disponible à des fins plus utiles (processus ou cache de fichiers). Ainsi, bien qu'il puisse y avoir des charges de travail qui fonctionnent mieux sans fichier de pagination, en avoir un signifie généralement plus de mémoire utilisable est disponible pour le système (peu importe que Windows ne sera pas en mesure d'écrire des vidages sur incident du noyau sans un fichier de pagination de grande taille assez pour les tenir).

J'aime vraiment les articles de Mark.

19
Radim Cernej

La meilleure réponse à laquelle je peux penser est que sous une charge normale, vous ne pouvez pas utiliser les 8 Go, mais ce sont les charges inattendues où vous rencontrerez des problèmes.

Avec un fichier d'échange, le système fonctionnera au moins lentement une fois qu'il commencera à atteindre la page. Mais si vous supprimez le fichier d'échange, il mourra (d'après ce que je sais).

De plus, 8 Go semblent beaucoup, mais dans quelques années, cela pourrait être considéré comme la quantité minimale de mémoire pour de nombreux logiciels.

De toute façon - je recommanderais de garder au moins un petit fichier de page; mais d'autres me corrigent si je suis hors de la base.

13
Dave Drager

Vous n'avez pas mentionné s'il s'agit d'une édition 64 bits de Windows, mais je suppose que oui.

Le fichier d'échange sert beaucoup de choses, y compris la génération d'un vidage de mémoire en cas de BSoD (Blue Screen of Death).

Si vous ne disposez pas d'un fichier d'échange, Windows ne pourra pas effectuer de pagination sur le disque s'il n'y a pas assez de mémoire. Vous pensez peut-être qu'avec 8 Go, vous n'atteindrez pas cette limite. Mais il se peut que de mauvais programmes fuient la mémoire au fil du temps.

Je pense que cela ne vous laissera pas passer en veille prolongée/veille sans un fichier d'échange (mais je n'ai pas encore essayé).

Windows 7/2008/Vista ne modifie pas l'utilisation du fichier d'échange.

J'ai vu une explication de Mark Russinovich (Microsoft Fellow) expliquant que Windows peut être plus lent sans fichier de page qu'avec un fichier de page (même avec beaucoup de RAM). Mais je ne peux pas retrouver la cause profonde.

Vous manquez d'espace disque? Je garderais un minimum de 1 Go pour pouvoir avoir un vidage du noyau en cas de BSoD.

6
Mathieu Chateau

La seule personne qui peut vous dire si vos serveurs ou postes de travail "ont besoin" d'un fichier d'échange est vous, avec une utilisation prudente de l'analyseur de performances ou de son nom actuel. Quelles applications utilisez-vous, quelle utilisation voient-elles et quelle est la plus grande utilisation de mémoire possible que vous pourriez voir?

La stabilité vaut-elle la peine d'être compromise pour économiser une minute sur des disques durs plus petits?

Que se passe-t-il lorsque vous téléchargez un très gros patch, par exemple un service pack. Si le service d'installation décide qu'il a besoin de plus de mémoire que vous ne le pensiez pour décompresser le patch, que se passe-t-il alors? Si votre antivirus décide (à juste titre) d’analyser ce très gros pack, de quel type d’utilisation de la mémoire aura-t-il besoin pendant qu’il déballe et analyse ce fichier de correctif - j’espère que le fichier d’archive de correctif ne contient pas lui-même d’archives, car cela meurtre chiffres d'utilisation de la mémoire.

Ce que je peux vous dire, c'est que la suppression de votre fichier de page a beaucoup plus de chances de vous blesser que d'aider. Je ne vois pas pourquoi vous n'en auriez pas - je suis sûr qu'il pourrait y avoir quelques cas spécialisés où je me trompe sur celui-ci, mais c'est un tout autre domaine.

5
Rob Moir

J'ai désactivé mon fichier d'échange (8 Go sur un ordinateur portable x86) et j'ai eu deux problèmes même avec 2500 Mo d'espace libre:

  1. Erreur ASP.NET lors de l'activation du service WCF : la vérification des portes mémoire a échoué car la mémoire libre (399 556 608 octets) représente moins de 5% de la mémoire totale. Par conséquent, le service ne sera pas disponible pour les demandes entrantes. Pour résoudre ce problème, réduisez la charge sur la machine ou ajustez la valeur de minFreeMemoryPercentageToActivateService sur l'élément de configuration serviceHostingEnvironment.

    Comme 3,7 Go, c'est moins de 5% de 8 Go, je ne le saurai jamais !!

  2. Obtenir Fermer les programmes pour éviter la perte d'informations boîte de dialogue: Lorsque 75% de mon RAM est utilisé, j'obtiens une boîte de dialogue indiquant moi pour fermer les programmes. Vous pouvez désactiver cela avec une modification du registre (ou peut-être en désactivant le 'Diagnostics Policy Service').

Finalement, j'ai décidé de le réactiver. Windows simplement et simplement n'a jamais été conçu pour être utilisé sans fichier d'échange. Il est optimisé pour fonctionner avec la pagination, non sans. Si vous envisagez d'utiliser plus de 75% de votre mémoire et que vous ne voulez pas jouer avec votre registre, ce n'est peut-être pas pour vous.

5
Simon

Il semble que beaucoup de personnes très limitées aient une opinion sur ce sujet mais n'aient jamais essayé de faire fonctionner leur ordinateur sans un fichier d'échange.

Peu, sinon presque, ont essayé. Encore moins semblent savoir comment Windows traite le fichier d'échange. Il ne se remplit pas "simplement" lorsque vous manquez de RAM physique. Je parie que la plupart d'entre vous ne savaient même pas que votre "gratuit" RAM est utilisé comme cache de fichiers!

Vous POUVEZ obtenir des améliorations de performances massives en désactivant votre fichier d'échange. Votre système sera plus sensible aux erreurs de mémoire insuffisante (et savez-vous comment vos applications réagissent dans ce scénario - pour la plupart, le système d'exploitation met simplement fin à l'application). Les temps de démarrage à partir de la veille ou de longues périodes d'inactivité seront beaucoup plus rapides.

Si Microsoft vous autorisait réellement à définir une option permettant au fichier d'échange d'être utilisé UNIQUEMENT en dehors de la physique RAM (et tous les tampons de fichiers ont été supprimés), alors je penserais qu'il y avait peu à gagner à désactiver le fichier d'échange.

2
PP.

Votre mémoire totale disponible est votre fichier d'échange + mémoire réelle.

La question clé est de savoir si votre utilisation totale prévue de la mémoire pour toutes les applications et l'utilisation du système d'exploitation approchent de 8 Go. Si votre utilisation moyenne de mem est de 2 Go et votre utilisation maximale de mémoire n'est que de 4 Go, alors avoir un fichier d'échange est inutile. Si votre utilisation maximale de la mémoire est plus proche de 6-7 Go ou plus, c'est une bonne idée d'avoir un fichier d'échange.

PS: N'oubliez pas de permettre la croissance à l'avenir!

2
John Lim