Mémoire
virtuelle sous XP : mythes et réalité (Réagir sur le sujet)
J'ai fait un sujet récemment sur la
mémoire virtuelle pour Win 9x/ME, j'avais promis de compléter pour XP dès
que je trouvais les renseignements. Je précise directement que
contrairement à mon sujet sur 9x, je n'ai presque pas d'expérience sous
XP, j'ai pu utiliser quelques fois un PC avec XP mais sans avoir la
possibilité de tester le fonctionnement de la mémoire. Ce qui suit est
basé sur un texte trouvé sur un site (en anglais) très bien documenté sur
Windows, c'est d'ailleurs suite à un article de ce site sur 9x que j'avais
eu l'idée de faire le sujet d'il y a quelques mois. J'ai gardé la
substance en changeant la forme.
Je n'ai pas pour habitude de
répondre à des questions sur des sujets que je ne connais pas ou que je
n'ai pas testés. Encore moins de poster des sujets. Ce post est donc une
exception à la règle, disons qu'il y a tout de même beaucoup de choses en
commun entre 9x et XP, ce qui me permet d'en parler. Je réponds ainsi à de
nombreuses questions posées ici et ailleurs, la documentation en français
au sujet de la gestion mémoire de XP est assez rare, pour le moment du
moins.
J'abrège mémoire virtuelle en MV, par
facilité.
Pendant un an, certaines personnes ont testé XP dans des
conditions très différentes et il y a des publications sur le
fonctionnement de la MV, permettant de bien paramétrer la taille du
fichier d'échange. Les gens qui ont publié ici http://www.aumha.org/a/xpvm.htm sont des MVP (most
valuable professional), un titre décerné par MS à des bénévoles qui ont
montré leur bonne connaissance des produits MS et qui aident dans les
newsgroups. Ils sont souvent anglophones mais il y en a quelques-uns qui
sont francophones, je pense à JC Bellamy dont le site est parfois
mentionné sur ce forum. Je précise donc que les gens qui ont publié ne
font pas partie de MS mais qu'ils ont des liens privilégiés avec certaines
personnes de MS sans pour ça avoir accès à des informations "sensibles".
Je veux dire qu'ils ont parfois des renseignements "de source anonyme"
mais qui sont valables, il y a une espèce d'arrangement entre MS et eux
pour ne pas divulguer certaines informations ou certaines sources.
Néanmoins, Jim Eshelman (le webmaster) écrit ceci à propos de la MV (je
traduis) :
nous avons des contacts avec des programmeurs de MS
ayant travaillé sur XP et jusqu'à présent, ou bien ils ne comprennent pas
nos questions, ou bien ils ne connaissent pas les réponses ou bien, pour
des raisons inexplicables, ils refusent de répondre à ces questions, même
sous couvert d'anonymat. C'est frustrant et mystérieux, même des MVP comme
nous n'ont pas accès à tout. Donc l'investigation s'est faite par
essai/erreur et par l'expérimentation quotidienne.
Voici un
autre lien de ce site où j'avais posé des questions à propos de la MV sous
XP : http://www.aumha.org/forum/viewtopic.php?t=409
Le
terme "swap file" n'est plus utilisé (pour la série NT/2K/XP), on parle
plutôt de "page file" (fichier de pagination), le fichier lui-même
s'appelant pagefile.sys (attribut "caché").
Ce qui a poussé
l'auteur de l'article à publier, c'est que le paramétrage par défaut de la
MV que MS propose ne tient pas compte de la manière spécifique dont XP
gère la mémoire. Ce qui est un comble évidemment mais qui n'est pas
étonnant en soi, MS nous a habitués à ne pas paramétrer par défaut
correctement toute une série de valeurs, que ce soit pour la mémoire, la
taille des paquets IP (IPMTU) utilisés pour les connections à Internet,
etc.
Petit rappel de ce qu'est la MV. Un processeur 32 bits peut
accéder jusqu'à 4 GB de mémoire, une partie de RAM et une autre d'espace
disque, celle-ci est évidemment moins rapide. La MV est une espèce de
prolongement de la RAM, pour schématiser. Pour qu'un programme
puisse être exécuté, il DOIT se trouver en RAM. Donc, lorsqu'un programme
a été placé dans le fichier de pagination et qu'il doit être exécuté, le
gestionnaire de mémoire fait de la place dans la RAM en déplaçant sur
disque (dans la MV) un autre programme qui n'est pas actif à ce moment-là.
Ce procédé est assez lent et provoque des ralentissements, c'est pour ça
qu'on conseille souvent une quantité de RAM assez élevée pour éviter
l'écriture sur disque de ces programmes.
Qu'est-ce XP écrit dans
la RAM ?
- La zone non-paginable, c'est-à-dire des programmes
qui sont nécessaires au bon fonctionnement de XP. Il y a donc une zone de
la mémoire qui ne sera jamais paginée. Lorsqu'on a un message d'erreur
indiquant "défaillance de page dans une zone non-paginable", ça indique
très souvent un problème hardware (barrettes mémoire défectueuses ou
disque dur endommagé). Mais certains logiciels comme Norton peuvent aussi
utiliser cette zone, donc, si la défaillance apparaît juste après une
installation de logiciel, on peut le désinstaller et voir si l'erreur se
reproduit. Pour tester votre RAM avec des logiciels
spécialisés.
-
Le reste de la RAM est appelé "Page Pool", qu'on pourrait traduire par
"réservoir de pages mémoire". XP y stocke les programmes que nous
utilisons, des bouts de fichiers qui ont été modifiés ainsi qu'une taille
fixe pour le cache disque, c'est-à-dire les fichiers récemment lus ou
écrits mais qui ne sont plus utilisés. S'il reste de la RAM disponible, XP
va agrandir le cache disque.
Pourquoi y a-t-il si peu de RAM
libre ?
On va tordre le cou ici à des mythes concernant les
programmes qui libèrent la RAM sous XP. En effet, XP va utiliser toute la
mémoire RAM possible selon l'adage "de la mémoire RAM libre est de la
mémoire gaspillée". En pratique, imaginez que vous ouvrez un gros
fichier avec Word. XP va charger Word en mémoire, puis, votre fichier.
Vous quittez Word, XP va laisser en mémoire le programme Word et votre
fichier, dans la zone du cache disque. Il ne les éjectera que si un autre
programme doit être exécuté et qu'il n'y a plus de RAM disponible, le
cache disque va alors diminuer de taille. Le terme "mémoire RAM libre" est
donc impropre, il est plus correct de dire "mémoire pour laquelle XP n'a
pas encore trouvé d'usage". Voilà pourquoi les programmes censés libérer
de la RAM sont des leurres, au pire, ils font grossir le page file
inutilement et les performances sont réduites, exactement l'inverse de
l'effet attendu.
Faut-il laisser le page file sur le disque C:
?
Si on a plus d'un disque physique, on peut mettre le page
file sur un autre disque que le C. Mais il est conseillé de garder un
morceau (environ 2 MB de taille initiale avec un maximum de 50 MB) sur le
C, de manière à pouvoir être utilisé en urgence. On peut en effet avoir
plusieurs "page file" disséminés sur différents disques. Si vous
utilisez la possibilité du minidump, il faut alors laisser le page file
sur le C avec une taille minimum de 200 MB (pour un dump du kernel) ou de
la taille de la RAM (pour un dump de toute la mémoire).
Peut-on
désactiver la MV si on a beaucoup de RAM ?
Littéralement
parlant, la MV est toujours opérationnelle et ne peut être désactivée.
Donc, quand on dit qu'on veut désactiver la MV, ça signifie "indiquer à XP
de ne pas utiliser d'espace disque pour le page file".
Ce faisant,
on gaspille beaucoup de RAM. En effet, la manière dont XP gère la mémoire
de ce point de vue est différente de 9x/ME. La raison est que certains
programmes allouent de grosses quantités de mémoire quand on les exécute,
même si ces programmes ne vont pas utiliser cette mémoire (cette quantité
peut parfois grimper jusqu'à plusieurs centaines de MB). Ces adresses
mémoire doivent être allouées quelque part et sans page file, c'est dans
la RAM qu'elles seront allouées, ce qui va rapidement conduire à un
engorgement inutile de la RAM.
Quelle taille pour le page file
?
Voici où aller pour changer la taille :
Panneau de
configuration -> Système -> onglet Avancé -> Paramètres de
performances -> onglet Avancé, Modifier la Mémoire
virtuelle.
Si on utilise la "bascule rapide utilisateur", il y
a d'autres paramètres expliqués plus loin.
Quelques mythes au sujet
de la taille de ce fichier :
- il doit avoir une taille mini égale
à la taille maxi pour ne pas se fragmenter - il doit être 2,5 fois plus
gros que la taille de la RAM (ou un autre multiple)
Ces deux
affirmations sont fausses dans un système d'exploitation moderne, avec un
seul utilisateur. On les retrouve malheureusement un peu partout, et même
sur des sites très sérieux et réputés pour la qualité de l'information,
c'est d'autant plus dommage et MS ne contribue pas à briser ce mythe, voir
les liens plus bas.
J'en profite pour dire que ces mythes sont
tenaces sur PCAstuces aussi puisque je viens de lire encore aujourd'hui
que quelqu'un conseille 2,5 fois la quantité de la RAM en valeur maxi. Il
se pourrait que, par hasard, cette règle convienne à une personne.
Mais comme je l'explique ci-dessous, il n'y a pas de règles standard
pour la taille de la MV, il faut arrêter d'imaginer qu'on peut en une
phrase donner un bon conseil à quelqu'un à ce sujet. La MV est quelque
chose de très complexe qu'on ne résume pas en 3 mots. Pour la taille
fixe du page file, il est temps de tordre le cou à cette autre rumeur qui
veut que les performances se dégradent à cause d'une fragmentation de ce
fichier. C'est une bêtise qu'on voit encore trop souvent car c'est une
méconnaissance totale du fonctionnement de la MV que d'imaginer qu'il se
fragmente parce qu'il a l'air d'avoir grossi en taille.
XP va
agrandir le page file si la valeur minimale est trop basse et le faire
diminuer s'il est plus grand que nécessaire. C'est donc payant de mettre
une valeur minimale suffisamment grande pour éviter que le page file
change de taille. Cette valeur donnera les avantages prétendus d'un page
file de taille fixe. Cette taille minimale suffisamment grande servira par
exemple si on ouvre exceptionnellement un très gros fichier mais aussi
pour assigner les pages de MV réservées par des programmes mais jamais
utilisées. Jusqu'au moment où elles vont être utilisées -si elles le
sont-, le page file ne sera pas réellement actif. Il n'y a pas
d'inconvénient dans le fait d'avoir cette place disponible dans le page
file.
Les valeurs par défaut que XP alloue au page file ne tiennent
pas compte d'un paramètre important : peu importe la charge de travail, le
besoin en adresses virtuelles (RAM + page file) ne dépend pas uniquement
de la quantité de la RAM. Ce qui signifie que pour un PC avec peu de
RAM, la taille du page file sera plus grande (et non plus petite) que sur
une machine avec beaucoup de RAM. Malheureusement, XP va assigner un
énorme page file avec un PC qui a beaucoup de RAM et un petit page file
avec peu de RAM.
La taille du page file dépend fort de la charge de
travail. Si on utilise uniquement un traitement de texte et un
gestionnaire de mail, on peut se contenter d'une petite quantité de RAM +
page file. C'est ce que j'appelle une charge de travail "normale". Si
on manipule de gros fichiers graphiques ou si on fait du montage vidéo, on
aura besoin de beaucoup d'adresses virtuelles.
Pour une charge de
travail "normale", on conseille ± 500 MB (RAM + page file).
Ce qui
donne les chiffres suivants pour la valeur minimale du page file
:
Si on a 128 MB de RAM : on met 400 MB de page file Si on a 256
MB de RAM : on met 250 MB de page file Si on a plus de 256 MB de RAM :
on met 100 MB de page file
Dans tous les cas de figure, donc même
avec un 1 GB de RAM, on aura un page file de minimum 100 MB
Comme
taille maximale, on conseille 700 ou 800 MB ou même plus, si on a
assez de place disque. Vous pouvez doubler cette valeur si vous êtes dans
la catégorie montage vidéo et fichiers graphiques. Ce n'est que de
l'espace disque qui pourrait être alloué, il faut évidemment tenir compte
de ce qu'il vous reste de libre mais les HD d'aujourd'hui sont
énormes.
Si on constate via Explorer que la taille réelle du
fichier Pagefile.sys est supérieure à celle qu'on a spécifié comme taille
minimale, c'est que cette valeur minimale est trop basse. On peut
tester s'il est nécessaire de rajouter de la RAM en mettant une taille
initiale assez basse, disons 50 MB. Puis, on utilise ses applications
courantes et on vérifie la taille du page file. S'il est toujours à 50 MB,
il n'est pas nécessaire de rajouter de la RAM.
Ces paramètres ont
changé en comparaison avec les versions précédentes de NT, les valeurs
indiquées dans le gestionnaire de tâches, onglet performance "page file
utilisé" incluent les pages réservées mais qui ne sont pas (encore ?)
utilisées. Cette valeur donne une bonne idée de la taille maximale du page
file mais pas de la taille minimale. En clair, ça veut dire qu'on
pourrait avoir dans le gestionnaire de tâches une valeur de 170 MB de page
file utilisé mais le fichier Pagefile.sys aurait une taille de 40 ou 50 MB
seulement, la différence entre 50 et 170 étant les fameuses pages
réservées. Ne vous étonnez donc pas de voir une telle différence qui
n'existe pas avec les anciennes versions de Windows. Il existe un
utilitaire pour tracer l'usage réel du page file, les liens sont en bas de
page. La valeur maximum renseignée après plusieurs jours d'observation
pourra servir de base comme valeur minimale du page file.
J'ai
trouvé sur un forum francophone une autre manière de voir la consommation
de RAM :
Ouvrir le gestionnaire de tâches (par CTRL+alt+suppr)
-> onglet Performances.
Il y a une partie "charge dédiée" avec 3
valeurs : Total (=maxi actuel), Limite (=maxi possible), Pic (=maxi jusque
maintenant).
Ensuite, démarrer un maximum d'applications, de
manière à saturer la RAM, tout en essayant de rester dans une situation
plausible, je veux dire que vous pouvez lancer les applications que vous
utilisez habituellement mais pour une fois, lancez-les toutes en même
temps. Cela va provoquer une demande énorme de RAM et la valeur "Pic"
devrait vous donner une bonne idée de la valeur Maxi à spécifier pour la
MV. Attention, je n'ai pas testé cette situation, je ne sais pas si
elle est valide. Je l'ai indiquée afin que vous la testiez, merci
d'indiquer vos commentaires avec les valeurs "Pic" mais aussi votre
quantité de RAM et les valeurs de MV mini et maxi du page file au moment
du test, j'indique plus bas comment accéder aux paramètres de la MV. De
toute façon, une valeur maxi très élevée ne fait jamais de mal, ça permet
de pallier à une situation extrême.
Si vous êtes débutant, je vous
conseille de passer au paragraphe suivant car celui-ci est un peu
technique.
En fait, ces mythes viennent d'une mauvaise connaissance
du fonctionnement de la MV. J'ouvre une parenthèse Win9x car c'est depuis
ce moment-là que le mythe du swap de taille fixe est né. Déjà sous
Win9x, beaucoup de gens s'imaginaient que leur page file (fichier swap)
était très utilisé par Windows car ils voyaient sa taille changer sans
arrêt, il grandissait quand on démarrait des applications et diminuait
quand on les arrêtait. C'est un raisonnement logique que je comprends
parfaitement mais la réalité est tout autre. La seule chose qui prouve
qu'un page file est utilisé, c'est son usage et non sa taille.
Pour faire simple, un usage = 0 pendant plusieurs jours signifie que
vous avez assez de RAM, en rajouter n'apporterait rien. Il est courant
sous 9x d'avoir un swap de 100 MB mais son usage est à zéro. C'est avec
l'utilitaire sysmon que vous pourrez le constater. Ce qui veut dire que si
vous voyez votre fichier swap qui passe de 40 MB à 100 MB mais toujours
avec un usage à zéro, Windows n'a rien écrit dedans, il s'est
contenté d'allouer de la place, comme une réservation. J'ai déjà vu mon
swap passer de 0 MB à 85 MB en une fraction de seconde, comment imaginer
que Windows ait écrit 85 MB en si peu de temps ? L'usage était toujours à
0 et Windows a juste réservé de la place en mettant la FAT à jour.
L'argument "performances" mis en avant par les partisans du page file de
taille fixe s'écroule du coup. Ceux qui continuent à prétendre que c'est
mieux n'ont pas pris la peine de tester pendant une période assez longue
les valeurs du page file, taille ET usage et confondent taille avec usage.
Fin de la parenthèse 9x.
Qu'en est-il de la "bascule rapide
utilisateur" ?
Cette fonctionnalité permet à plusieurs
utilisateurs de travailler sur le même PC, comme si c'était des PC
différents. Mais pour ça, il faut sauver sur disque les données en RAM de
l'utilisateur non-actif, le page file doit alors être plus gros que ce qui
est préconisé ci-dessus. Il est difficile de donner une valeur adéquate,
c'est seulement en expérimentant qu'on trouvera la bonne taille du page
file. On peut commencer en mettant comme taille minimale l'équivalent de
la moitié de la RAM pour chaque utilisateur. Ce qui signifie que si on a
512 MB de RAM et qu'on a 3 utilisateurs, ça fait 256 MB x 3, soit 768 MB
de page file.
Problèmes avec la MV
XP signale parfois
des messages du genre "mémoire insuffisante" ou "mémoire virtuelle
insuffisante", voici certaines causes possibles :
- la taille
maximale pour le page file est trop basse ou l'espace disque encore
disponible est trop faible. Voir ci-dessus l'explication concernant la
manière dont XP gère le page file, c'est uniquement de la réservation
d'espace disque que réclame XP.
- le page file est corrompu,
peut-être lors d'un mauvais shutdown. Pour régler ce problème, il faut
désactiver la MV (en cliquant dans la case prévue) et redémarrer XP. On
peut alors détruire le fichier pagefile.sys (qui a les attributs "caché")
sur chacun des disques, si on a plusieurs page file. Puis, on peut
réactiver la MV et redémarrer afin que XP recrée ce fichier.
- le
page file a été mis sur un disque différent que le C mais sans laisser un
minimum sur le C (voir ci-dessus)
- il y a un problème avec des
logiciels extérieurs à XP : ça peut être causé par Norton Live update mais
aussi par une ancienne version de l' "Application Accelerator" d'Intel
(avant 2.1), il faut le désinstaller et charger la mise à jour à partir du
site d'Intel.
- il peut y avoir un problème de pilote pour les
disques durs IDE, il faut supprimer le contrôleur disque dans le
gestionnaire de périphériques et redémarrer afin que le Plug and Play le
redétecte.
- avec un système de fichiers en NTFS, les permissions
pour le répertoire racine du disque où a été créé le page file doivent
être "Full control" pour SYSTEM. Si ce n'est pas le cas, il se peut qu'au
démarrage, on ait un message disant qu'il n'est pas possible de créer un
page file.
Voici quelques liens vers la base de connaissances de MS
(en anglais) :
{How to Set Performance Options}
{How to Configure Paging Files for Optimization &
Recovery in Win XP}
pour XP, c'est dans ces 2 articles qu'on
trouve les conseils erronés sur les valeurs du page file mais il y a
d'autres choses valables.
{Configuring Page Files for Optimization and
Recovery} pour NT/2K
Un outil pour tracer l'usage du page file
(pour 2K et XP)
http://billsway.com/notes_public/WinXP_Tweaks Ça
s'appelle 'WinXP-2K_Pagefile'
http://www.dougknox.com/xp/utils/xp_pagefilemon.htm
C'est une version compilée en VBasic.
Je répète que je n'ai pas
pu tester ce qui est indiqué mais j'ai entière confiance en les gens qui
ont publié. Vous pouvez évidemment commenter et poser des questions, je ne
suis pas sûr de pouvoir y répondre mais je ferai ce que je peux pour
obtenir une réponse concrète. N'oubliez pas que personne ne peut vous
donner les valeurs optimales du page file, vous êtes les seuls à savoir ce
que vous faites sur votre PC et les valeurs indiquées ci-dessus le sont à
titre indicatif. Vous pouvez par exemple utiliser votre PC de manière
"bureautique" pendant un certain temps et puis, vous mettre à faire du
montage vidéo, de la manipulation de grosses images, etc., c'est-à-dire
des applications très gourmandes en ressources mémoire et CPU. Ce qui va
vous amener à modifier les valeurs qui ne sont plus valables puisque vous
avez changé l'usage de votre PC. Ce sujet n'a pour ambition que de vous
guider et d'éclaircir un peu le brouillard autour de la gestion
mémoire. Merci de m'avoir lu jusqu'au bout !
|