Symptom
Det uppstår prestandaproblem i program och tjänster i olika versioner av Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 och Windows Server 2008 R2. Dessutom märker du följande symptom:
- Det tillgängliga minnet är nästan slut.
- Systemfilcachen förbrukar det mesta av det fysiska RAM-minnet.
- Det finns en kontinuerlig och stor volym av cachelagrade läsförfrågningar till hårddisken.
Orsak
Minneshanteringen i Microsoft Windows-operativsystem använder en efterfrågebaserad algoritm. Om någon process begär och använder en stor mängd minne ökar storleken på processens arbetsminne (antalet minnessidor i det fysiska RAM-minnet). Om dessa begäranden är kontinuerliga och avmarkerade växer processens arbetsminne till att förbruka allt fysiskt RAM-minne. I det här fallet flyttas arbetsuppgifterna för alla andra processer till hårddisken. Det här beteendet försämrar prestanda för program och tjänster eftersom minnessidorna hela tiden skrivs till hårddisken och läses från hårddisken.
Det här gäller även arbetsminnet i systemfilcachen. Om det finns en kontinuerlig och stor volym cachelagrade läsbegäranden från någon process eller drivrutin, kommer arbetsminnets storlek för systemfilcachen att växa för att möta denna efterfrågan. Systemfilcachen förbrukar det fysiska RAM-minnet. Därför är inte tillräckliga mängder fysiskt RAM-minne tillgängligt för andra processer.
I tidigare 32-bitarsversioner av Microsoft Windows än Windows Vista har systemfilcachens arbetsminne en teoretisk minnesgräns på mindre än 1 gigabyte (GB). Begränsningen av det virtuella adressintervallet förhindrar att arbetsuppsättningarna i systemfilcachen tömmer det fysiska RAM-minnet.
I 32-bitarsversioner av Windows Vista allokeras kernelresurser dynamiskt. Arbetsmängden i systemfilcachen ökar för att förbruka det virtuella adressintervallet i kernelläget på bekostnad av andra kernelresurser. Minnesintervallets begränsning är mindre än 2 GB. Om datorn har mer än 2 GB fysiskt RAM-minne kan cacheminnet inte tömma allt fysiskt RAM-minne. Cachen kan dock uttömma det virtuella adressutrymmet i kärnan. Detta kan orsaka allokeringsfel för andra kärnkomponenter.
I 64-bitarsversioner av Windows-operativsystem är storleken på det virtuella adressintervallet vanligtvis större än det fysiska RAM-minnet. I det här fallet kan arbetsminnet för systemfilcachen öka och ta upp det mesta av det fysiska RAM-minnet.
Lösning
Minneshanteringsalgoritmerna i operativsystemen Windows 7 och Windows Server 2008 R2 har uppdaterats för att lösa många filcachelagringsproblem som hittades i tidigare versioner av Windows. Det finns bara vissa unika situationer där du måste implementera den här tjänsten på datorer som kör Windows 7 eller Windows Server 2008 R2.
Så här tar du reda på om systemet påverkas
Om du vill ta reda på om systemet påverkas av det här problemet installerar du verktyget SysInternals RamMap. Du kan hämta verktyget från följande Windows Sysinternals-webbplats:
http://technet.microsoft.com/en-us/sysinternals/ff700229
När du kör verktyget väljer du alternativet Använd antal . Då visas flera kolumner som visar det aktuella mönstret för minnesanvändning. Klicka på kolumnen Aktiv för att sortera efter antalet byte som använts och notera den högsta användningen direkt under summan.
Om det högsta antalet användningsområden är Metafile och en stor del av det tillgängliga minnet används har du problem med systemfilcachen som beskrivs i avsnittet Symptom. Du kan kontrollera detta med hjälp av Prestandaövervakaren för att övervaka räknaren Minne\System Cache Resident Bytes och se hur cachen växer kontinuerligt över tid.
Figur 1. Exempel på RamMap-utdata där datorn har det här problemet.
Figur 2. Exempel på RamMap-utdata där datorn inte har problemet.
Om räknaren Minne\Systemcachens Resident Bytes i Prestandaövervakaren visar en uppåtgående trend över tiden har datorn problem som visas i bild 3.
Figur 3. Exempel på utdata från Prestandaövervakaren där datorn upplever problemet över tid.
Krav för omstart
Du behöver inte starta om datorn när du installerar, avinstallerar eller använder den här tjänsten.
Om du läser den här artikeln för att du arbetar med en kund som tror att de påverkas av det här problemet följer du de här stegen för att lösa problemet.
Kontrollera att kundens RamMap-utdata, prestanda eller poolmon-data bekräftar att systemfilcachen använder det mesta av det fysiska RAM-minnet, enligt beskrivningen ovan.
Om du vill ha Windows Dynamic Cache Service kan du ladda ned den här.
Här följer några av inställningarna för det dynamiska cacheregistret:
filservrar kan du prova med 1 GB.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000400
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064Exchange 2007 kanske du vill prova 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064SQL 2005 och senare, tidigare när du arbetade med SQL EE:er, har använt 2 GB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Mer information
Undvik problemet genom att använda API-funktionen GetSystemFileCacheSize och API-funktionen SetSystemFileCacheSize för att ange högsta eller lägsta storleksvärde för arbetsuppsättningarna i systemfilcachen. Användningen av de här funktionerna är den enda metod som stöds för att begränsa förbrukningen av fysiskt minne i systemfilcachen.
Microsoft Windows Dynamic Cache Service är en exempeltjänst som visar en strategi för att använda dessa API:er för att minimera effekterna av det här problemet.
Att installera och använda Microsoft Dynamic Cache Service medför inte att stöd utesluts för Microsoft Windows. Den här tjänsten och dess källkod tillhandahålls som ett exempel på hur du använder API:er som stöds av Microsoft för att minska tillväxten av filsystemets cacheminne.
Du kan hämta tjänsten och källkoden från följande Microsoft-webbplats:
Ytterligare resurser
Läs kapitel 9 (Minneshantering) och 10 (Cachehanteraren) i Windows Internals, den 5:e utgåvan.
MINNESHANTERING (STORA PROBLEM MED SYSTEMCACHEN) Blogginlägg
Blogginlägget om långsamma problem med stora filer
Minnesgränser för Windows-versioner
976618 Det uppstår prestandaproblem i program och tjänster när systemfilcachen förbrukar det mesta av det fysiska RAM-minnet
918483 Minska växling av buffertpoolminne i 64-bitarsversionen av SQL Server
895932 Saker att tänka på innan du aktiverar systemcacheläge i Windows XP
232271 Optimera Windows NT Server med hjälp av registret
837331 Om Cache Manager i Windows Server 2003
http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx
Status
Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".