Comment réduire la forte utilisation de la mémoire causée par Metafile sur Windows Server 2008 R2

J’ai rencontré un problème avec un serveur de fichiers Windows Server 2008 R2 qui était saturé : la RAM était pleine à craquer, ce qui entraînait des ralentissements non seulement pour le serveur, mais aussi pour les applications utilisateur.Étrangement, aucun processus dans le Gestionnaire des tâches ne consommait autant de mémoire. Pourtant, la mémoire système était quasiment pleine et le serveur était extrêmement lent. Il s’est avéré que le problème venait du cache système, et plus précisément des métadonnées stockées par NTFS, qui saturent la RAM bien au-delà de la normale. Ce problème est assez courant sur les serveurs contenant des milliers de fichiers, en particulier sous Windows 64 bits, où la taille des métadonnées NTFS peut presque atteindre celle de la RAM. C’est assez frustrant, car Windows ne propose pas d’outils simples pour gérer ou limiter ce cache. Heureusement, il existe des solutions pour atténuer ce problème sans avoir à redémarrer systématiquement le serveur ni à ajouter de la RAM. L’une d’elles consiste à vider manuellement le cache avec l’outil RAMMap. Une autre, beaucoup plus avancée, consiste à installer un service personnalisé appelé Dynamic Cache, capable de gérer le cache de manière proactive. Les deux solutions valent la peine d’être essayées, selon qu’une solution rapide ou une solution à long terme soit nécessaire.

Comment résoudre le problème de forte utilisation de la mémoire causé par les métadonnées NTFS

Méthode 1 : Vider manuellement le cache du système de fichiers avec RAMMap

Cette méthode est un peu une astuce rapide, mais elle fonctionne si vous avez besoin d’un soulagement immédiat. RAMMap est un utilitaire gratuit de la suite Sysinternals de Microsoft ; vous pouvez le télécharger ici. Exécutez RAMMap en tant qu’administrateur. Une fois ouvert, accédez à l’ onglet « Utilisation » et repérez l’ entrée « Metafile ». Si elle consomme beaucoup de mémoire (par exemple, plus de 10 Go sur un serveur de 25 Go), vous pouvez forcer sa suppression en choisissant « Vider » → « Vider l’ensemble de travail système » dans le menu. Cela indique à Windows de libérer le cache sans redémarrer. Cette solution est semi-permanente, car le bouton « Vider » de RAMMap ne fonctionne que jusqu’à la reconstruction du cache, qui peut être très rapide sur les gros serveurs de fichiers. Sur certaines configurations, cette opération peut réduire l’utilisation de la RAM de plusieurs dizaines de Go et, étonnamment, l’utilisation du processeur peut passer d’un niveau quasi maximal à des niveaux beaucoup plus gérables. Sur d’autres, le cache peut se reconstituer rapidement après un certain temps. Cette solution n’est donc pas parfaite, mais elle est préférable à des redémarrages interminables.

Méthode 2 : Installez le service de cache dynamique pour un meilleur contrôle

Si le cache continue de grossir et que le vidage manuel est fastidieux, l’installation d’un service comme Dynamic Cache peut être la solution. Ce service permet une gestion dynamique du cache MFT, limitant ainsi la quantité de RAM qu’il peut utiliser et évitant sa saturation. L’installation n’est pas instantanée. Commencez par copier DynCache.exe dans %SystemRoot%\System32. Ensuite, créez le service avec une commande similaire à : [commande manquante sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"].Importez ensuite le fichier de registre DynCache.reg (disponible dans l’archive téléchargée) pour définir les paramètres par défaut. Enfin, ajustez les valeurs MaxSystemCacheMBytes et MinSystemCacheMBytes dans le registre, à l’emplacement HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters. Par exemple, vous pouvez définir MaxSystemCacheMBytes sur 4096 (soit 4 Go) et MinSystemCacheMBytes sur une valeur inférieure. Attention, n’exagérez pas : il est déconseillé de configurer le cache à plus de la moitié de votre RAM totale, sauf si vous savez parfaitement ce que vous faites. Enfin, démarrez le service.sc start DynCacheUne fois en fonctionnement, vous devriez constater une réduction significative de la mémoire utilisée pour les métadonnées NTFS. Sur une machine, cette consommation est passée de plus de 10 Go à seulement 4 Go, sans aucun impact sur les performances. Bien entendu, la taille optimale du cache varie selon les configurations ; un ajustement peut donc s’avérer nécessaire.

Oui, cette méthode est un peu technique, mais elle est très efficace une fois mise en place. Et contrairement au débroussaillage manuel, elle ne nécessite pas d’intervention régulière ; c’est plutôt une solution à long terme.

Résumé

  • Utilisez RAMMap pour vider manuellement le cache de fichiers lorsque l’utilisation de la RAM augmente brusquement en raison de l’accumulation de métadonnées.
  • Envisagez d’installer le service de cache dynamique si le nettoyage manuel ne suffit pas ou est trop fastidieux.
  • Ajustez toujours les limites du cache en fonction de votre RAM totale et de votre charge de travail ; plus n’est pas toujours mieux.

Conclure

Gérer une consommation de mémoire soudainement élevée à cause des métadonnées NTFS est plutôt embêtant, mais ces méthodes permettent de la maîtriser sans avoir recours à des mesures drastiques comme un redémarrage ou une mise à niveau matérielle. Sur certaines configurations, un vidage rapide de la RAMMap assure une certaine stabilité pendant un certain temps, et dans les environnements plus exigeants, la configuration du service de cache dynamique offre une solution plus propre et mieux contrôlée. Attention, Windows ne facilite pas toujours la tâche ; il faudra peut-être procéder par essais et erreurs. Espérons que cela permette à certains d’éviter de se retrouver avec un serveur bloqué ou lent en pleine journée.