Quando la cache dei file di sistema utilizza la maggior parte della RAM fisica, si verificano problemi di prestazioni nelle applicazioni e nei servizi

Si applica a
Microsoft Windows XP Professional x64 Edition Windows Vista Home Basic Windows Vista Home Premium Windows Vista Business Windows Vista Enterprise Windows Vista Ultimate Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Enterprise 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Server 2008 Datacenter without Hyper-V Windows Server 2008 Enterprise without Hyper-V Windows Server 2008 Standard without Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 for Itanium-Based Systems Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard

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.

Output di RAMMap Use Counts che mostra un elevato utilizzo della memoria Metafile

Figura 2. Esempio di output RamMap in cui il computer non riscontra il problema.

RAMMap Use Counts Output che mostra l'utilizzo della memoria senza un uso eccessivo di Metafile

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.

Grafico di Monitor prestazioni che mostra l'aumento dei byte residenti nella cache di sistema 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.

  1. 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.

  2. Per ottenere il servizio cache dinamica di Windows, scaricarlo qui.

  3. 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:00000064

    Exchange 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:00000064

    SQL 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:

http://www.microsoft.com/download/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=en

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

RamMap Blog Post

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".