Vous rencontrez des problèmes de performances dans les applications et les services lorsque le cache du système de fichiers utilise le plus de la quantité de RAM physique

S’applique à : Microsoft Windows XP Professional x64 EditionWindows Vista Home BasicWindows Vista Home Premium

Symptômes


Vous rencontrez des problèmes de performances dans les applications et les services dans différentes versions de Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 et Windows Server 2008 R2. En outre, vous notez les problèmes suivants :
  • La mémoire disponible est pratiquement épuisée.
  • Le cache du système de fichiers utilise le plus de la mémoire RAM physique.
  • Il existe un volume continu et important de demandes de lecture mises en cache sur le disque dur.

Cause


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 du jeu de travail (le nombre de pages de mémoire dans la mémoire vive physique) du processus augmente. Si ces demandes sont continues et non contrôlé, le jeu de travail du processus augmentera de consommer toute la mémoire RAM physique. Dans ce cas, les jeux de travail pour tous les autres processus sont paginées sur le disque dur. Ce comportement réduit les performances des applications et des services, car les pages de mémoire sont en permanence écrits sur le disque dur et lire à partir du disque dur.

Ce comportement s’applique également à la plage de travail du cache de fichier système. S’il existe un volume continu et important de demandes de lecture mises en cache à partir de n’importe quel processus ou à partir de n’importe quel pilote, la taille du jeu de travail du cache de fichier système augmentera pour répondre à cette demande. Le cache de fichier système consomme de la mémoire RAM physique. Par conséquent, assez de RAM physique n’est pas disponibles pour d’autres processus.

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

Sur les versions 32 bits des systèmes d’exploitation Windows Vista, les ressources du noyau sont alloués dynamiquement. Le jeu de travail du cache de fichier système augmente à consommer de la plage d’adresse virtuelle du mode noyau au détriment d’autres ressources du noyau. La limitation 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 mémoire RAM physique. Toutefois, le cache peut épuiser l’espace d’adressage virtuel dans le noyau. Cela peut entraîner des échecs d’allocation pour les autres composants de noyau.

Sur les versions 64 bits des systèmes d’exploitation Windows, la taille de la plage d’adresses virtuelles est généralement plus grande que la mémoire RAM physique. Dans ce cas, le jeu de travail pour le cache du système de fichier peut augmenter pour consommer la plupart de la mémoire RAM physique.

Résolution


Les algorithmes de gestion de mémoire dans les systèmes d’exploitation Windows 7 et Windows Server 2008 R2 ont été mis à jour pour corriger le fichier de mise en cache des problèmes rencontrés dans les versions antérieures de Windows. Il n’y a seulement certaines situations uniques dans lesquels vous devez implémenter ce service sur les ordinateurs qui exécutent Windows 7 ou Windows Server 2008 R2.

Comment faire pour déterminer si votre système est affecté.

Pour déterminer si votre système est concerné par ce problème, installez l’outil SysInternals RamMap. Vous pouvez obtenir l’outil à partir du site Windows Sysinternals :
 
Lorsque vous exécutez l’outil, sélectionnez l’option de Nombre d’utilisations . Cette option affiche plusieurs colonnes qui indiquent le motif actuel d’utilisation de la mémoire. Cliquez sur la colonne Active pour trier en fonction du nombre d’octets utilisés et notez l’utilisation supérieure directement sous le total.

Si le haut utiliser count est « Métafichier », et si une grande partie de la mémoire disponible est utilisée, vous rencontrez le problème du Cache de fichier système qui est décrite dans la section « Symptômes ». Vous pouvez le vérifier à l’aide de l’Analyseur de performances pour surveiller le compteur Octets résidents dans le Cache de Memory\System et consultez le cache augmente continuellement au fil du temps.

La figure 1. Exemple de sortie RamMap dans lequel l’ordinateur concerné par le problème.



Figure 2. Exemple de sortie RamMap dans lequel l’ordinateur ne connaît pas le problème.



Si le compteur Octets résidents dans le Cache de Memory\System dans l’Analyseur de performances indique une tendance à la hausse au fil du temps, l’ordinateur concerné par le problème, comme illustré à la Figure 3.

La figure 3. Exemple de sortie de l’Analyseur de performances dans lequel l’ordinateur rencontre le problème dans le temps.

Nécessité d’un redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur lorsque vous installez, désinstallez ou utilisez ce service.
Si vous ne vous lisez cet article, vous travaillez avec un client qui estime qu’ils sont affectés par ce problème, procédez comme suit pour résoudre le problème.
  1. Vérifiez que les données de poolmon, perfmon ou sortie de RamMap du client confirme que le Cache de fichier système consomme la plupart de la mémoire vive physique, comme décrit précédemment.
  2. Pour obtenir le Service de Cache dynamique de Windows, le télécharger ici.
  3. Certains paramètres du Registre de Cache dynamique sont les suivantes :

    Serveurs de fichiers, vous souhaiterez peut-être essayer de 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 souhaiterez peut-être essayer de 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 supérieur, dans le passé lorsque vous travaillez avec des SQL EE, a utilisé 2 Go :
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:000007D0
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

Plus d'informations


Pour contourner ce problème, utilisez la fonction GetSystemFileCacheSize API et la fonction SetSystemFileCacheSize API pour définir la valeur de la taille minimale ou maximale pour les jeux de travail du cache de fichier 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 fichier système.

Le Service de Cache dynamique de Microsoft Windows est un exemple de service qui montre une stratégie pour utiliser ces API afin de minimiser l’impact 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 comme un exemple d’utilisation de Microsoft prise en charge API pour réduire la croissance de la cache du système de fichiers.

Vous pouvez obtenir le service et le code source à partir du site Web Microsoft suivant :
 

Ressources supplémentaires

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

Billet de Blog mémoire gestion (problèmes de CACHE système de grande taille)

Billet de Blog des problèmes de copie de fichiers volumineux est lent

Limites de mémoire pour les versions de Windows

976618 vous rencontrez des problèmes de performances dans les applications et les services lorsque le cache du système de fichiers utilise le plus de la quantité de RAM physique

918483 comment réduire la pagination de la mémoire tampon dans la version 64 bits de SQL Server

895932 les éléments à prendre en compte avant d’activer le mode cache système dans Windows XP

232271 comment optimiser l’utilisation du Registre de Windows NT Server

837331 sur le Gestionnaire de Cache dans Windows Server 2003

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

Rubrique de TechNet LargeSystemCache

Billet de Blog de RamMap

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».