Sintomi
Si verificano problemi di prestazioni nelle applicazioni e nei servizi in varie versioni di Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 e Windows Server 2008 R2. Inoltre, si notano i sintomi seguenti:
- La memoria disponibile è quasi esaurita.
- La cache dei file di sistema consuma la maggior parte della RAM fisica.
- Esiste un volume elevato e continuo di richieste di lettura memorizzate nella cache al disco rigido.
Causa
La gestione della memoria nei sistemi operativi Microsoft Windows utilizza un algoritmo basato sulla domanda. Se un processo richiede e utilizza una grande quantità di memoria, la dimensione del working set (il numero di pagine di memoria nella RAM fisica) del processo aumenta. Se queste richieste sono continue e non controllate, il working set del processo aumenterà fino a consumare tutta la RAM fisica. In questa situazione, i working set per tutti gli altri processi vengono paginati sul disco rigido. Questo comportamento riduce le prestazioni di applicazioni e servizi perché le pagine di memoria vengono continuamente scritte sul disco rigido e lette dal disco rigido.
Questo comportamento si applica anche al working set della cache dei file di sistema. Se è presente un volume elevato e continuo di richieste di lettura memorizzate nella cache da qualsiasi processo o driver, le dimensioni del working set della cache dei file di sistema aumenteranno per soddisfare questa richiesta. La cache dei file di sistema consuma la RAM fisica. Pertanto, non sono disponibili quantità sufficienti di RAM fisica per altri processi.
Nelle versioni a 32 bit dei sistemi operativi Microsoft Windows precedenti a Windows Vista, i working set della cache dei file di sistema hanno un limite teorico di memoria inferiore a 1 gigabyte (GB). La limitazione dell'intervallo di indirizzi virtuali impedisce ai working set della cache dei file di sistema di esaurire la RAM fisica.
Nelle versioni a 32 bit dei sistemi operativi Windows Vista le risorse del kernel vengono allocate dinamicamente. Il working set della cache dei file di sistema aumenta per consumare l'intervallo di indirizzi virtuali della modalità kernel a scapito di altre risorse del kernel. Il limite di questo intervallo di memoria è inferiore a 2 GB. Se il computer dispone di più di 2 GB di RAM fisica, la cache non può esaurire tutta la RAM fisica. Tuttavia, la cache può esaurire lo spazio degli indirizzi virtuali nel kernel. Ciò può causare errori di allocazione per altri componenti del kernel.
Nelle versioni a 64 bit dei sistemi operativi Windows, le dimensioni dell'intervallo di indirizzi virtuali sono in genere maggiori della RAM fisica. In questa situazione, il working set per la cache dei file di sistema può aumentare fino a consumare la maggior parte della RAM fisica.
Risoluzione
Gli algoritmi di gestione della memoria nei sistemi operativi Windows 7 e Windows Server 2008 R2 sono stati aggiornati per risolvere molti problemi di memorizzazione nella cache dei file rilevati nelle versioni precedenti di Windows. Esistono solo alcune situazioni specifiche in cui è necessario implementare questo servizio nei computer che eseguono Windows 7 o Windows Server 2008 R2.
Come determinare se il sistema è interessato
Per determinare se il sistema è interessato da questo problema, installare lo strumento RamMap di SysInternals. È possibile ottenere lo strumento dal seguente sito Web di Windows Sysinternals:
http://technet.microsoft.com/en-us/sysinternals/ff700229
Quando si esegue lo strumento, selezionare l'opzione Usa conteggi . Vengono visualizzate diverse colonne che mostrano il modello corrente di utilizzo della memoria. Fare clic sulla colonna Attivo per ordinare in base al numero di byte utilizzati e annotare l'utilizzo principale direttamente sotto il totale.
Se il numero di utilizzi principali è "Metafile" e se viene usata gran parte della memoria disponibile, si verifica il problema della cache dei file di sistema descritto nella sezione "Sintomi". È possibile verificarlo usando Monitor prestazioni prestazioni per monitorare il contatore Memoria\Byte residenti della cache di sistema e vedere la cache crescere continuamente nel tempo.
Figura 1. Esempio di output RamMap in cui il computer sta riscontrando il problema.
Figura 2. Esempio di output RamMap in cui il computer non riscontra il problema.
Se il contatore Memoria\Byte residenti della cache di sistema in Monitor prestazioni mostra una tendenza al rialzo nel tempo, il computer sta riscontrando il problema, come illustrato nella Figura 3.
Figura 3. Output di Monitor prestazioni di esempio in cui il computer riscontra il problema nel tempo.
Requisiti per il riavvio
Non è necessario riavviare il computer quando si installa, si disinstalla o si utilizza questo servizio.
Se si sta leggendo questo articolo perché si sta lavorando con un cliente che ritiene di essere interessato dal problema, seguire questa procedura per risolvere il problema.
Verificare che i dati di output RamMap, perfmon o poolmon del cliente confermino che la cache dei file di sistema sta consumando la maggior parte della RAM fisica, come descritto in precedenza.
Per ottenere il servizio cache dinamica di Windows, scaricarlo qui.
Alcune impostazioni del Registro di sistema per la cache dinamica sono le seguenti:
File server, potresti provare 1 GB.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000400
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064Exchange 2007, si consiglia di provare a utilizzare 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064SQL 2005 e versioni successive, in passato quando si lavorava con SQL EE, hanno utilizzato 2 GB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Altre informazioni
Per risolvere questo problema, utilizzare la funzione API GetSystemFileCacheSize e la funzione API SetSystemFileCacheSize per impostare il valore di dimensione massima o minima per i working set della cache dei file di sistema. L'uso di queste funzioni è l'unico metodo supportato per limitare il consumo di memoria fisica da parte della cache dei file di sistema.
Il servizio cache dinamica di Microsoft Windows è un servizio di esempio che illustra una strategia per l'uso di queste API per ridurre al minimo gli effetti di questo problema.
L'installazione e l'utilizzo del Servizio cache dinamica Microsoft non causa l'esclusione del supporto per Microsoft Windows. Questo servizio e il relativo codice sorgente vengono forniti come esempio di come usare le API supportate da Microsoft per ridurre la crescita della cache del file system.
È possibile ottenere il servizio e il codice sorgente dal seguente sito Web Microsoft:
Risorse aggiuntive
Leggi i capitoli 9 (Gestione della memoria) e 10 (Gestione cache) di Windows Internals, 5a edizione.
GESTIONE DELLA MEMORIA (PROBLEMI DI CACHE DI SISTEMA DI GRANDI DIMENSIONI) Post del blog
Post di blog sui problemi di copia di file lenti di grandi dimensioni
Limiti di memoria per le versioni di Windows
976618 Si verificano problemi di prestazioni nelle applicazioni e nei servizi quando la cache dei file di sistema utilizza la maggior parte della RAM fisica
918483 Come ridurre il paging della memoria del pool di buffer nella versione a 64 bit di SQL Server
895932 Aspetti da tenere presenti prima di abilitare la modalità cache di sistema in Windows XP
232271 Come ottimizzare Windows NT Server utilizzando il Registro di sistema
837331 Informazioni su Gestione cache in Windows Server 2003
http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx
Argomento TechNet LargeSystemCache
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".