Réduisez l'utilisation de la mémoire du «métafichier»?


8

Mon ordinateur de travail (Windows 7 64 bits) passe beaucoup de temps à permuter la mémoire lorsque je change de programme. Cela me surprend car j'ai 4 Go de RAM, et les programmes que j'utilise n'ont pas particulièrement faim (Outlook, Emacs, p4win, Firefox, divers outils de build). J'ai téléchargé RAMMap , et cela montre plus d'un gigaoctet de mémoire utilisé par "Metafile".

Du blog de Sysinternals :

Le métafichier fait partie du cache système et se compose de métadonnées NTFS. Les métadonnées NTFS incluent le MFT ainsi que les autres divers fichiers de métadonnées NTFS. ... Dans la MFT, chaque enregistrement d'attribut de fichier prend 1k et chaque fichier a au moins un enregistrement d'attribut. Ajoutez à cela les autres fichiers de métadonnées NTFS et vous comprendrez pourquoi la catégorie Métafichier peut devenir assez volumineuse sur des serveurs contenant de nombreux fichiers.

Je comprends donc ce que sont les données du "métafichier" ... Je travaille sur de grandes versions comprenant des centaines de milliers de fichiers (aucun n'est si gros, mais elles totalisent plusieurs gigaoctets). Ma question est de savoir comment puis-je réduire la quantité de mémoire utilisée par "Metafile"? Je n'utilise pas activement tous ces fichiers à la fois, alors pourquoi Windows a-t-il besoin de conserver les informations dans la RAM? Redémarrer ma machine chaque fois que je synchronise une nouvelle version est vraiment ennuyeux.


4
Les builds nécessitent beaucoup d'E / S, et donc Windows conserve un grand cache de système de fichiers pour améliorer les performances. Malheureusement, les outils de construction utilisent également beaucoup de mémoire et généralement dans de grands pics, ce qui est probablement à l'origine du débordement. Comme cela est en concurrence avec le cache système. La meilleure solution pourrait être d'ajouter plus de mémoire.
tgiphil

@tgiphil, Il est compréhensible que beaucoup de mémoire soit utilisée lors de l'extraction ou de la création. Cependant, il est toujours utilisé et provoque toujours une raclée beaucoup plus tard lorsque je ne travaille que dans une petite zone. Malheureusement, l'informatique ne me donnera plus de mémoire.
Jay Conrod

Je pense que Windows 7 optimise déjà vos performances avec la mise en cache. Donc, pour augmenter la mémoire disponible et réduire l'échange, fermez toutes les applications inutiles. Vous pouvez récupérer une bonne partie de la mémoire en fermant Outlook et Firefox, par exemple. Si vous utilisez Visual Studio et n'avez besoin que de compiler, essayez plutôt une génération de ligne de commande. J'espère que ça aide. BTW. Avec une mémoire si faible (6 Go sous 100 $), c'est un excellent investissement en productivité.
tgiphil

Réponses:


4

Je pense que le cache système libère sa mémoire en cas de besoin, mais des problèmes peuvent survenir. Voici quelques possibilités.

Votre système 64 bits alloue la mémoire vidéo dans les 4 premiers Go de mémoire. Donc, si votre carte vidéo a beaucoup de mémoire, cette mémoire est perdue, comme décrit dans:
La mémoire utilisable peut être inférieure à la mémoire installée sur les ordinateurs Windows 7

Vous pouvez examiner l'utilisation de la mémoire sur l'ordinateur en ouvrant le Gestionnaire de périphériques et dans le menu Affichage, choisissez "Ressources par connexion". Développez le nœud Mémoire et voyez si vous pouvez déterminer ce qui, le cas échéant, occupe la mémoire. Dans certains cas, la mémoire peut être augmentée en désactivant les périphériques inutilisés tels que le FireWire.

Vous pouvez également essayer de faire exactement le contraire de ce qui est décrit dans cet article:
augmenter la taille du cache de mémoire FileSystem dans Windows 7

Vous pouvez également essayer de désactiver Windows 7 SuperFetch .

Si rien n'y fait, il vous serait utile de publier une capture d'écran de l'onglet Gestionnaire des tâches nommé Performances.


Le +1 est pour "Désactiver Superfetch".

Pas de déclassement, mais Superfetch augmente très probablement ses performances - pas les diminue - car les exécutables de build sont généralement exécutés fréquemment et bénéficieront de la mise en cache. Quant à la carte vidéo affectant la mémoire disponible, elle n'est pas applicable sur Windows 7 64 bits avec seulement 4 Go. La carte vidéo serait mappée au-dessus de 4 Go, dans ce cas.
tgiphil

@tgiphil: De l'article Microsoft cité ci-dessus: "une carte vidéo qui a 256 Mo de mémoire intégrée, cette mémoire doit être mappée dans les 4 premiers Go d'espace d'adressage".
harrymc

Dans mon organisation, nous avons également des tonnes de petits fichiers et un énorme métafichier NTFS en RAM. D'après ce que je peux dire, Windows ne met pas le métafichier en cache comme tout le reste et ne le libère jamais vraiment de la RAM. L'ordinateur utilisera jusqu'à 100% de mémoire et toutes vos applications se bloqueront par manque de mémoire. Bien sûr, ce n'est pas Windows 7, c'est Windows Server 2008 R2.
Phil

Le lien "Augmenter le cache de la mémoire du système de fichiers" indique également les éléments qui ne fonctionnent pas réellement. Voir tweakhound.com/blog/?p=1164
Phil

0

Windows Server 2008 R2 rencontre exactement le même problème de «cache» de métafichier, car trop d'informations sur le métafichier sont conservées dans la mémoire active, de sorte que les fonctions de cache n'ont pas l'autorisation d'autoriser la libération de cette mémoire en cas de pression de mémoire.

J'ai écrit un script PowerShell sur la page serverfault.com Utilisation de la RAM du métafichier Windows Server 2008 R2 qui définit la mémoire active maximale du métafichier à quelque chose de raisonnable. Le reste est déplacé vers la mémoire de secours, et les fonctions de cache normales peuvent alors hiérarchiser les choses de manière appropriée. Windows 7 x64 et Server 2008 R2 x64 ont tous deux des limites maximales de mémoire active par défaut pour les données de métafichier de 1 To. Oui TB, pas GB.

Work exécute maintenant ce script sur tous nos sites sur nos serveurs qui organisent les sauvegardes du site, qui traitent quotidiennement des millions de fichiers pendant son cycle de sauvegarde. Ces serveurs de sauvegarde exécutent également un programme Java gourmand en mémoire (VMware vSphere), 2 serveurs SQL et WSUS avec son propre serveur SQL. Le logiciel de sauvegarde lisant d'abord les métadonnées (nom, taille, date de modification, autorisations, attributs, etc.) pour déterminer la liste des fichiers qu'il sauvegardera et qui le transmet TRÈS rapidement remplit le cache du métafichier. Même en faisant tout cela, ils naviguent bien avec seulement 4 Go de RAM.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.