Det uppstår prestandaproblem i program och tjänster när systemfilcachen förbrukar det mesta av det fysiska RAM-minnet

Gäller för
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

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.

10214DE2-59A3-F4C0-07FB-5F75A3CBCD47

Figur 2. Exempel på RamMap-utdata där datorn inte har problemet.

26eb9766-30fb-0aba-069b-b9f6b636a812

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.

5A390908-DB40-E825-D4FD-348CD86D33EB

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.

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

  2. Om du vill ha Windows Dynamic Cache Service kan du ladda ned den här.

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

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

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

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

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

LargeSystemCache TechNet-ämne

RamMap blogginlägg

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".