Ridurre l'utilizzo della memoria "Metafile"?


8

Il mio computer di lavoro (Windows 7 a 64 bit) impiega molto tempo a scambiare memoria quando passo da un programma all'altro. Questo mi sorprende poiché ho 4 GB di RAM e i programmi che utilizzo non sono particolarmente affamati di RAM (Outlook, Emacs, p4win, Firefox, vari strumenti di build). Ho scaricato RAMMap , e mostra oltre un gigabyte di memoria utilizzata da "Metafile".

Dal blog di Sysinternals :

Il metafile fa parte della cache di sistema ed è costituito da metadati NTFS. I metadati NTFS includono MFT e altri file di metadati NTFS. ... Nella MFT ogni record di attributi di file prende 1k e ogni file ha almeno un record di attributi. Aggiungi a questo gli altri file di metadati NTFS e puoi vedere perché la categoria Metafile può crescere abbastanza grande su server con molti file.

Quindi capisco quali sono i dati "Metafile" ... Lavoro su build di grandi dimensioni che comprendono centinaia di migliaia di file (nessuno è così grande, ma si sommano a diversi gigabyte). La mia domanda è: come posso ridurre la quantità di memoria utilizzata da "Metafile"? Non sto utilizzando attivamente tutti quei file contemporaneamente, quindi perché Windows deve conservare le informazioni nella RAM? Riavviare la mia macchina ogni volta che sincronizzo una nuova build è davvero fastidioso.


4
Le build sono ad alta intensità di I / O, quindi Windows mantiene una cache di file system di grandi dimensioni per migliorare le prestazioni. Sfortunatamente, anche gli strumenti di costruzione usano molta memoria e di solito in picchi di grandi dimensioni, il che probabilmente sta causando la palude. Poiché questo è in competizione con la cache di sistema. La soluzione migliore potrebbe essere quella di aggiungere più memoria.
tgiphil,

@tgiphil, È comprensibile che venga utilizzata molta memoria durante il check out o la creazione della build. Tuttavia, è ancora in uso e causa ancora il thrash molto più tardi quando lavoro solo in una piccola area. Purtroppo l'IT non mi darà più memoria.
Jay Conrod,

Penso che Windows 7 stia già ottimizzando le prestazioni con la memorizzazione nella cache. Quindi, per aumentare la memoria disponibile e ridurre lo scambio, chiudere tutte le applicazioni non necessarie. Puoi recuperare un buon pezzo di memoria chiudendo Outlook e Firefox, ad esempio. Se usi Visual Studio e devi solo compilare, prova invece a creare una riga di comando. Spero che questo possa essere d'aiuto. BTW. Con una memoria così bassa (6 GB meno di $ 100), è un ottimo investimento per la produttività.
tgiphil,

Risposte:


4

Credo che la cache di sistema rilasci la sua memoria quando richiesto, ma possono verificarsi problemi. Di seguito sono elencate alcune possibilità.

Il sistema a 64 bit alloca la memoria video nei primi 4 GB di memoria. Quindi, se la tua scheda video ha molta memoria, quella memoria viene persa, come descritto in:
La memoria utilizzabile potrebbe essere inferiore alla memoria installata su computer basati su Windows 7

È possibile esaminare l'utilizzo della memoria sul computer aprendo Gestione dispositivi e nel menu Visualizza, selezionare "Risorse per connessione". Espandere il nodo Memoria e vedere se riesci a capire cosa, se non altro, sta occupando la memoria. In alcuni casi, la memoria può essere aumentata disabilitando i dispositivi non utilizzati come il firewire.

Puoi anche provare a fare esattamente l'opposto di quanto descritto in questo articolo:
Aumenta la dimensione della cache della memoria del file system in Windows 7

Puoi anche provare a disabilitare Windows 7 SuperFetch .

Se nulla aiuta, sarebbe utile pubblicare uno screenshot della scheda Task Manager denominata Performance.


Il +1 è per "Disabilita Superfetch".

Nessun down grade, ma Superfetch sta probabilmente aumentando le sue prestazioni - non diminuendole - poiché gli eseguibili di build vengono generalmente eseguiti frequentemente e trarranno vantaggio dalla memorizzazione nella cache. Per quanto riguarda la scheda video che influisce sulla memoria disponibile, non è applicabile su Windows 7 a 64 bit con solo 4 GB. La scheda video verrebbe mappata sopra 4Gb, in questo caso.
tgiphil,

@tgiphil: dall'articolo di Microsoft sopra citato: "una scheda video con 256 MB di memoria integrata, tale memoria deve essere mappata entro i primi 4 GB di spazio degli indirizzi".
harrymc,

Nella mia organizzazione, abbiamo anche tonnellate di piccoli file e un enorme metafile NTFS nella RAM. Da quello che posso dire, Windows non memorizza nella cache il Metafile come tutto il resto e non lo rilascia mai realmente dalla RAM. Il computer aumenterà fino al 100% dell'utilizzo della memoria e quindi tutte le applicazioni inizieranno a bloccarsi a causa della mancanza di memoria. Naturalmente questo non è Windows 7, è Windows Server 2008 R2.
Phil

Anche il link "Aumenta la cache della memoria di FileSystem" avvisa cose che in realtà non funzionano. Vedi tweakhound.com/blog/?p=1164
Phil

0

Windows Server 2008 R2 presenta esattamente lo stesso problema "cache" del metafile, ovvero che troppe informazioni sul metafile vengono mantenute nella memoria attiva, pertanto le funzioni della cache non dispongono dell'autorizzazione per consentire il rilascio di questa memoria in caso di pressione della memoria.

Ho scritto uno script PowerShell nella pagina serverfault.com Utilizzo della RAM del metafile di Windows Server 2008 R2 che imposta la massima memoria attiva del metafile su qualcosa di ragionevole. Il resto viene spostato nella memoria di standby e le normali funzioni della cache sono quindi in grado di dare priorità alle cose in modo appropriato. Windows 7 x64 e Server 2008 R2 x64 hanno entrambi limiti di memoria attiva massima predefiniti per i dati metafile di 1 TB. Sì TB, non GB.

Work ora esegue quello script in tutti i nostri siti sui nostri server che organizzano i backup del sito, che gestiscono ogni giorno milioni di file durante il suo ciclo di backup. Questi server di backup eseguono anche un programma Java pesante di memoria (VMware vSphere), 2 server SQL e WSUS con il proprio server SQL. Con il software di backup che legge prima i metadati (nome, dimensione, data di modifica, autorizzazioni, attributi, ecc.) Per determinare l'elenco dei file che eseguirà il backup in quel passaggio, riempie MOLTO rapidamente la cache del metafile. Anche facendo tutto ciò che viaggiano insieme con solo 4 GB di RAM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.