RAM, mémoire virtuelle, fichier de page et gestion de la mémoire dans Windows

Produits concernés : Windows 7 Service Pack 1, Windows Server 2012 R2
Numéro de la base de connaissances d’origine : 2160852

Résumé

Cet article contient des informations de base sur l’implémentation de la mémoire virtuelle dans les versions 32 bits de Windows.

Dans les systèmes d’exploitation modernes tels que Windows, les applications et de nombreux processus système référencent toujours la mémoire à l’aide d’adresses de mémoire virtuelle. Les adresses de mémoire virtuelle sont automatiquement traduites en adresses réelles (RAM) par le matériel. Seules les parties principales du noyau du système d’exploitation contournent cette traduction d’adresses et utilisent directement des adresses mémoire réelles.

La mémoire virtuelle est toujours utilisée, même lorsque la mémoire requise par tous les processus en cours d’exécution ne dépasse pas le volume de RAM installé sur le système.

Processus et espaces d’adressage

Tous les processus (par exemple, les exécutables d’application) qui s’exécutent sous les versions 32 bits de Windows se voient attribuer des adresses de mémoire virtuelle (un espace d’adressage virtuel), allant de 0 à 4 294 967 295 (2*32-1 = 4 Go), quelle que soit la quantité de RAM installée sur l’ordinateur.

Dans la configuration Windows par défaut, 2 gigaoctets (Go) de cet espace d’adressage virtuel sont désignés pour l’utilisation privée de chaque processus, et les 2 Autres Go sont partagés entre tous les processus et le système d’exploitation. En règle générale, les applications (par exemple, Bloc-notes, Word, Excel et Acrobat Reader) n’utilisent qu’une fraction des 2 Go d’espace d’adressage privé. Le système d’exploitation affecte des cadres de page RAM uniquement aux pages de mémoire virtuelle utilisées.

L’extension d’adresse physique (PAE) est la fonctionnalité de l’architecture Intel 32 bits qui étend l’adresse de mémoire physique (RAM) à 36 bits. PaE ne change pas la taille de l’espace d’adressage virtuel (qui reste à 4 Go), mais seulement le volume de RAM réel qui peut être traité par le processeur.

La traduction entre l’adresse de mémoire virtuelle 32 bits utilisée par le code qui s’exécute dans un processus et l’adresse RAM 36 bits est gérée automatiquement et en toute transparence par le matériel informatique en fonction des tables de traduction gérées par le système d’exploitation. Toute page de mémoire virtuelle (adresse 32 bits) peut être associée à n’importe quelle page DE RAM physique (adresse 36 bits).

La liste suivante décrit la quantité de RAM prise en charge par les différentes versions et éditions de Windows (à compter de mai 2010) :

Version de Windows Mémoire RAM
Windows NT 4.0 4 Go
Windows 2000 Professionnel 4 Go
Windows 2000 Standard Server 4 Go
Windows 2000 Advanced Server 8 Go
Windows 2000 Datacenter Server 32 Go
Windows XP Professionnel 4 Go
Windows Server 2003 Web Edition 2 Go
Windows Server 2003 Standard Edition 4 Go
Windows Server 2003 Êdition Entreprise 32 Go
Windows Server 2003 Datacenter Edition 64 Go
Windows Vista 4 Go
Windows Server 2008 Standard 4 Go
Windows Server 2008 Enterprise 64 Go
Windows Server 2008 Datacenter 64 Go
Windows 7 4 Go

Fichier d'échange

La RAM est une ressource limitée, alors que pour la plupart des raisons pratiques, la mémoire virtuelle est illimitée. Il peut y avoir de nombreux processus, et chaque processus a son propre 2 Go d’espace d’adressage virtuel privé. Lorsque la mémoire utilisée par tous les processus existants dépasse la RAM disponible, le système d’exploitation déplace les pages (morceaux de 4 Ko) d’un ou plusieurs espaces d’adressage virtuels vers le disque dur de l’ordinateur. Cela libère cette trame ram pour d’autres utilisations. Dans les systèmes Windows, ces pages paginées sont stockées dans un ou plusieurs fichiers (fichiers Pagefile.sys) à la racine d’une partition. Il peut y avoir un fichier de ce type dans chaque partition de disque. L’emplacement et la taille du fichier de page sont configurés dans Propriétés système (cliquez sur Avancé, sur Performances, puis sur le bouton Paramètres ).

Les utilisateurs demandent fréquemment quelle taille dois-je faire le fichier de page ? Il n’existe pas de réponse unique à cette question, car elle dépend de la quantité de RAM installée et de la quantité de mémoire virtuelle requise par la charge de travail. Si aucune autre information n’est disponible, la recommandation classique de 1,5 fois la RAM installée est un bon point de départ. Sur les systèmes serveurs, vous souhaitez généralement disposer de suffisamment de RAM pour qu’il n’y ait jamais de pénurie et que le fichier de page ne soit pas utilisé. Sur ces systèmes, il peut être inutile de conserver un fichier de page volumineux. En revanche, si l’espace disque est abondant, la maintenance d’un fichier de page volumineux (par exemple, 1,5 fois la RAM installée) ne provoque pas de problème, ce qui élimine également la nécessité de vous soucier de la taille à atteindre.

Performances, limites architecturales et RAM

Sur n’importe quel système informatique, à mesure que la charge augmente (le nombre d’utilisateurs, le volume de travail), les performances diminuent, mais de manière non linéaire. Toute augmentation de la charge ou de la demande, au-delà d’un certain point, entraîne une diminution significative des performances. Cela signifie que certaines ressources sont extrêmement courtes et sont devenues un goulot d’étranglement.

À un moment donné, la ressource qui est en pénurie ne peut pas être augmentée. Cela signifie qu’une limite architecturale a été atteinte. Voici quelques-unes des limites architecturales fréquemment signalées dans Windows :

  • 2 Go d’espace d’adressage virtuel partagé pour le système (noyau)
  • 2 Go d’espace d’adressage virtuel privé par processus (mode utilisateur)
  • 660 Mo de stockage PTE système (Windows Server 2003 et versions antérieures)
  • 470 Mo de stockage de pool paginé (Windows Server 2003 et versions antérieures)
  • 256 Mo de stockage de pool non paginé (Windows Server 2003 et versions antérieures)

Cela s’applique spécifiquement à Windows Server 2003, mais cela peut également s’appliquer à Windows XP et à Windows 2000. Toutefois, Windows Vista, Windows Server 2008 et Windows 7 ne partagent pas tous ces limites architecturales. Les limites de mémoire utilisateur et noyau (nombres 1 et 2 ici) sont les mêmes, mais les ressources du noyau telles que les PTE et les différents pools de mémoire sont dynamiques. Cette nouvelle fonctionnalité active la mémoire paginée et non paginée. Cela permet également aux PTP et au pool de sessions de croître au-delà des limites abordées précédemment, jusqu’au point où le noyau entier est épuisé.

Instructions fréquemment trouvées et entre guillemets telles que les suivantes :

Avec un serveur Terminal Server, les 2 Go d’espace d’adressage partagé sont entièrement utilisés avant l’utilisation de 4 Go de RAM.

Cela peut être vrai dans certains cas. Toutefois, vous devez surveiller votre système pour savoir s’ils s’appliquent ou non à votre système particulier. Dans certains cas, ces instructions sont des conclusions d’environnements Windows NT 4.0 ou Windows 2000 spécifiques et ne s’appliquent pas nécessairement à Windows Server 2003. Des modifications importantes ont été apportées à Windows Server 2003 afin de réduire la probabilité que ces limites architecturales soient effectivement atteintes dans la pratique. Par exemple, certains processus qui se trouvaient dans le noyau ont été déplacés vers des processus autres que le noyau pour réduire la mémoire utilisée dans l’espace d’adressage virtuel partagé.

Surveillance de l’utilisation de la mémoire virtuelle et de la RAM

Analyseur de performances est le principal outil de surveillance des performances du système et d’identification de l’emplacement du goulot d’étranglement. Pour démarrer Analyseur de performances, cliquez sur Démarrer, sur Panneau de configuration, sur Outils d’administration, puis double-cliquez sur Analyseur de performances. Voici un résumé de certains compteurs importants et de ce qu’ils vous disent :

  • Mémoire, Octets validés : ce compteur est une mesure de la demande de mémoire virtuelle.

    Cela indique le nombre d’octets alloués par les processus et sur lesquels le système d’exploitation a validé une trame de page RAM ou un emplacement de page dans le fichier de page (ou peut-être les deux). À mesure que les octets validés augmentent par rapport à la RAM disponible, la pagination augmente et la taille du fichier de page utilisé augmente également. À un moment donné, l’activité de pagination commence à affecter considérablement les performances.

  • Process, Working Set, _Total : ce compteur est une mesure de la mémoire virtuelle en cours d’utilisation.

    Ce compteur indique la quantité de RAM nécessaire pour que la mémoire virtuelle utilisée pour tous les processus soit en RAM. Cette valeur est toujours un multiple de 4 096, qui correspond à la taille de page utilisée dans Windows. À mesure que la demande de mémoire virtuelle augmente au-delà de la RAM disponible, le système d’exploitation ajuste la quantité de mémoire virtuelle d’un processus dans son groupe de travail pour optimiser l’utilisation de la RAM disponible et réduire la pagination.

  • Fichier de pagination, %pagefile en cours d’utilisation : ce compteur est une mesure de la quantité de fichier de page réellement utilisée.

    Utilisez ce compteur pour déterminer si le fichier de page est une taille appropriée. Si ce compteur atteint 100, le fichier de page est plein et les choses cessent de fonctionner. Selon la volatilité de votre charge de travail, vous souhaitez probablement que le fichier de page soit suffisamment volumineux pour qu’il ne soit pas utilisé plus de 50 à 075 %. Si une grande partie du fichier de page est utilisée, en avoir plusieurs sur différents disques physiques peut améliorer les performances.

  • Mémoire, pages/s : ce compteur est l’une des mesures les plus mal comprises.

    Une valeur élevée pour ce compteur n’implique pas nécessairement que votre goulot d’étranglement des performances provient d’une pénurie de RAM. Le système d’exploitation utilise le système de pagination à des fins autres que l’échange de pages en raison d’un sur-engagement de mémoire.

  • Mémoire, Sortie des pages/s : ce compteur indique le nombre de pages de mémoire virtuelle écrites dans le fichier de page pour libérer des trames de page RAM à d’autres fins chaque seconde.

    Il s’agit du meilleur compteur à surveiller si vous pensez que la pagination est votre goulot d’étranglement des performances. Même si les octets validés sont supérieurs à la RAM installée, si la sortie pages/s est faible ou nulle la plupart du temps, il n’y a pas de problème de performances significatif dû à une mémoire RAM insuffisante.

  • Mémoire, Octets de cache, Mémoire, Octets non paginés du pool, Mémoire, Octets paginés du pool, Mémoire, Nombre total d’octets du code système, Mémoire, Nombre total d’octets du pilote système :

    La somme de ces compteurs est une mesure de la quantité de 2 Go de la partie partagée de l’espace d’adressage virtuel de 4 Go qui est réellement utilisée. Utilisez-les pour déterminer si votre système atteint l’une des limites architecturales décrites précédemment.

  • Mémoire, Octets disponibles : ce compteur mesure la quantité de RAM disponible pour répondre aux demandes de mémoire virtuelle (nouvelles allocations ou restauration d’une page à partir du fichier de page).

    Lorsque la MÉMOIRE RAM est insuffisante (par exemple, les octets validés sont supérieurs à la RAM installée), le système d’exploitation tente de conserver une certaine fraction de la RAM installée disponible pour une utilisation immédiate en copiant les pages de mémoire virtuelle qui ne sont pas utilisées dans le fichier de page. Par conséquent, ce compteur n’atteint pas zéro et n’est pas nécessairement une bonne indication de si votre système manque de RAM.

References

Extensions de fenêtrage d’adresse