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.
Graphique 2. Exemple de sortie RamMap dans laquelle l’ordinateur ne rencontre pas le problème.
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.
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.
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.
Pour obtenir le service de cache dynamique Windows, téléchargez-le ici.
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 :00000064Exchange 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 :00000064SQL 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 :
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
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».