Vous rencontrez des problèmes de performances dans les applications et les services lorsque le cache de fichiers système consomme la majeure partie de la RAM physique

S’applique à
Microsoft Windows XP Professional x64 Edition Windows Vista Home Basic Windows Vista Home Premium Windows Vista Business Windows Vista Enterprise Windows Vista Ultimate Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Enterprise 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Server 2008 Datacenter without Hyper-V Windows Server 2008 Enterprise without Hyper-V Windows Server 2008 Standard without Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 for Itanium-Based Systems Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard

Symptômes

Vous rencontrez des problèmes de performances dans les applications et les services de différentes versions de Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 et Windows Server 2008 R2. En outre, vous remarquez les symptômes suivants :

  • La mémoire disponible est presque épuisée.
  • Le cache de fichiers système consomme la majeure partie de la mémoire RAM physique.
  • Il existe un volume élevé et continu de demandes de lecture mises en cache sur le disque dur.

Cause

La gestion de la mémoire dans les systèmes d’exploitation Microsoft Windows utilise un algorithme basé sur la demande. Si un processus demande et utilise une grande quantité de mémoire, la taille de la plage de travail (le nombre de pages de mémoire dans la RAM physique) du processus augmente. Si ces requêtes sont continues et non contrôlées, la plage de travail du processus s’agrandit pour consommer toute la RAM physique. Dans ce cas, les plages de travail de tous les autres processus sont paginées sur le disque dur. Ce comportement diminue les performances des applications et des services, car les pages mémoire sont continuellement écrites sur le disque dur et lues sur le disque dur.

Ce comportement s’applique également à la plage de travail du cache de fichiers système. En cas de volume élevé et continu de demandes de lecture mises en cache provenant d’un processus ou d’un pilote, la taille de la plage de travail du cache de fichiers système augmente pour répondre à cette demande. Le cache de fichiers système consomme la RAM physique. Par conséquent, les quantités de mémoire RAM physique ne sont pas suffisantes pour les autres processus.

Sur les versions 32 bits des systèmes d’exploitation Microsoft Windows antérieures à Windows Vista, les groupes de travail du cache de fichiers système ont une limite théorique de mémoire inférieure à 1 gigaoctet (Go). La limitation de la plage d’adresses virtuelles empêche les plages de travail du cache de fichiers système d’épuiser la RAM physique.

Sur les versions 32 bits des systèmes d’exploitation Windows Vista, les ressources du noyau sont allouées de manière dynamique. La plage de travail du cache de fichiers système augmente pour consommer la plage d’adresses virtuelles du mode noyau au détriment des autres ressources du noyau. La limite de cette plage de mémoire est inférieure à 2 Go. Si l’ordinateur dispose de plus de 2 Go de RAM physique, le cache ne peut pas épuiser toute la RAM physique. Toutefois, le cache peut épuiser l’espace d’adressage virtuel dans le noyau. Cela peut entraîner des échecs d’allocation pour d’autres composants du noyau.

Sur les versions 64 bits des systèmes d’exploitation Windows, la taille de la plage d’adresses virtuelles est généralement supérieure à celle de la RAM physique. Dans ce cas, la plage de travail du cache de fichiers système peut augmenter au point d’utiliser la majeure partie de la mémoire RAM physique.

Résolution

Les algorithmes de gestion de la mémoire des systèmes d’exploitation Windows 7 et Windows Server 2008 R2 ont été mis à jour pour résoudre de nombreux problèmes de mise en cache de fichiers rencontrés dans les versions antérieures de Windows. Il n’existe que certaines situations uniques dans lesquelles vous devez implémenter ce service sur les ordinateurs qui exécutent Windows 7 ou Windows Server 2008 R2.

Comment déterminer si votre système est affecté

Pour déterminer si votre système est affecté par ce problème, installez l’outil RamMap de SysInternals. Vous pouvez obtenir l’outil sur le site web Windows Sysinternals à l’adresse suivante :

http://technet.microsoft.com/en-us/sysinternals/ff700229
Lorsque vous exécutez l’outil, sélectionnez l’option Utiliser les nombres . Cela permet d’afficher plusieurs colonnes qui illustrent le modèle actuel d’utilisation de la mémoire. Cliquez sur la colonne Active pour trier selon le nombre d’octets utilisés et notez l’utilisation principale directement sous le total.

Si le nombre d’utilisations le plus important est « Métafichier » et si une grande partie de la mémoire disponible est utilisée, vous rencontrez le problème de cache de fichiers système décrit dans la section « Symptômes ». Vous pouvez vérifier cela en utilisant l’analyseur de performances pour surveiller le compteur d’octets résidents du cache mémoire\système et voir le cache augmenter continuellement au fil du temps.

Graphique 1. Exemple de sortie RamMap dans laquelle l’ordinateur rencontre le problème.

10214de2-59a3-f4c0-07fb-5f75a3cbcd47

Graphique 2. Exemple de sortie RamMap dans laquelle l’ordinateur ne rencontre pas le problème.

26eb9766-30fb-0aba-069b-b9f6b636a812

Si le compteur Mémoire\Octets résidents du cache système dans l’Analyseur de performances affiche une tendance à la hausse au fil du temps, l’ordinateur rencontre le problème, comme illustré dans la Figure 3.

Graphique 3. Exemple de sortie de l’analyseur de performances dans lequel l’ordinateur rencontre le problème au fil du temps.

5a390908-db40-e825-d4fd-348cd86d33eb

Exigences en matière de redémarrage

Vous ne devez pas redémarrer l’ordinateur lorsque vous installez, désinstallez ou utilisez ce service.

Si vous lisez cet article parce que vous travaillez avec un client qui pense être affecté par ce problème, suivez ces étapes pour aider à résoudre le problème.

  1. Vérifiez que les données de sortie RamMap, perfmon ou poolmon du client confirment que le cache de fichiers système consomme la majeure partie de la RAM physique, comme décrit précédemment.

  2. Pour obtenir le service de cache dynamique Windows, téléchargez-le ici.

  3. Certains paramètres du Registre de cache dynamique sont les suivants :

    des serveurs de fichiers, vous pouvez essayer 1 Go.
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    « MaxSystemCacheMBytes"=dword :00000400
    « MinSystemCacheMBytes"=dword :00000064
    « SampleIntervalSecs"=dword :0000003c
    « CacheUpdateThresholdMBytes"=dword :00000064

    Exchange 2007, vous pouvez essayer 500 Mo :
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    « MaxSystemCacheMBytes"=dword :000001F4
    « MinSystemCacheMBytes"=dword :00000064
    « SampleIntervalSecs"=dword :0000003c
    « CacheUpdateThresholdMBytes"=dword :00000064

    SQL 2005 et versions ultérieures, dans le passé, lorsqu’elles travaillaient avec SQL EE, utilisaient 2 Go :
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    « MaxSystemCacheMBytes"=dword :000007D0
    « MinSystemCacheMBytes"=dword :00000064
    « SampleIntervalSecs"=dword :0000003c
    « CacheUpdateThresholdMBytes"=dword :00000064

Informations supplémentaires

Pour contourner ce problème, utilisez les fonctions d’API GetSystemFileCacheSize et SetSystemFileCacheSize pour définir la valeur de taille maximale ou minimale des plages de travail du cache de fichiers système. L’utilisation de ces fonctions est la seule méthode prise en charge pour limiter la consommation de mémoire physique par le cache de fichiers système.

Le service de cache dynamique Microsoft Windows est un exemple de service qui illustre une stratégie d’utilisation de ces API pour minimiser les effets de ce problème.

L’installation et l’utilisation du service de cache dynamique Microsoft n’entraînent pas l’exclusion de la prise en charge de Microsoft Windows. Ce service et son code source sont fournis en tant qu’exemple d’utilisation des API prises en charge par Microsoft pour réduire la croissance du cache du système de fichiers.

Vous pouvez obtenir le service et le code source sur le site web Microsoft suivant :

http://www.microsoft.com/download/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=en

Ressources supplémentaires

Lisez les chapitres 9 (gestion de la mémoire) et 10 (Gestionnaire de cache) de Windows Internals, la 5e édition.

GESTION DE LA MÉMOIRE (PROBLÈMES DE CACHE SYSTÈME VOLUMINEUX) Billet de blog

Problèmes de copie de fichiers volumineux lents Billet de blog

Limites de mémoire pour les versions Windows

976618 Vous rencontrez des problèmes de performances dans les applications et les services lorsque le cache de fichiers système consomme la majeure partie de la RAM physique

918483 Comment faire pour réduire la pagination de la mémoire du pool de mémoires tampons dans la version 64 bits de SQL Server

895932 Remarques à prendre en compte avant d’activer le mode cache système dans Windows XP

232271 Optimiser un serveur Windows NT à l’aide du Registre

837331 À propos du gestionnaire de cache dans Windows Server 2003

http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx

Sujet TechNet LargeSystemCache

Billet de blog RamMap

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».