Symptomer
Du oplever problemer med ydeevnen i programmer og tjenester i forskellige versioner af Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 og Windows Server 2008 R2. Derudover bemærker du følgende symptomer:
- Den tilgængelige hukommelse er næsten opbrugt.
- Systemfilens cache bruger det meste af den fysiske RAM.
- Der er en kontinuerlig og stor mængde cachelagrede læseanmodninger til harddisken.
Årsag
Hukommelsesstyring i Microsoft Windows-operativsystemer bruger en behovsbaseret algoritme. Hvis en proces anmoder om og bruger en stor mængde hukommelse, øges størrelsen på arbejdssættet (antallet af hukommelsessider i den fysiske RAM) for processen. Hvis disse anmodninger er kontinuerlige og ikke er markerede, vokser arbejdssættet i processen til at forbruge al den fysiske RAM. I denne situation bladres arbejdssættene for alle de andre processer ud på harddisken. Denne funktionsmåde reducerer ydeevnen af applikationer og tjenester, fordi hukommelsessiderne løbende skrives til harddisken og læses fra harddisken.
Denne funktionsmåde gælder også for arbejdssættet i systemfilcachen. Hvis der er en kontinuerlig og stor mængde cachelagrede læseanmodninger fra en proces eller fra en driver, vokser arbejdssættets størrelse på systemfilens cache for at imødekomme dette behov. Systemfilens cache forbruger den fysiske RAM. Derfor er der ikke tilstrækkelige mængder fysisk RAM til rådighed til andre processer.
I 32-bit versioner af Microsoft Windows-operativsystemer, der er tidligere end Windows Vista, har arbejdssættene i systemfilcachen en teoretisk hukommelsesgrænse på mindre end 1 gigabyte (GB). Begrænsningen af det virtuelle adresseområde forhindrer, at arbejdssættene i systemfilens cache opbruger den fysiske RAM.
I 32-bit versioner af Windows Vista-operativsystemer allokeres kerneressourcer dynamisk. Arbejdssættet for systemfilcachen øges for at forbruge det virtuelle adresseområde for kernetilstanden på bekostning af andre kerneressourcer. Begrænsningen for dette hukommelsesområde er mindre end 2 GB. Hvis computeren har mere end 2 GB fysisk RAM, kan cachen ikke opbruge al fysisk RAM. Men cachen kan opbruge det virtuelle adresseområde i kernen. Dette kan medføre allokeringsfejl for andre kernekomponenter.
I 64-bit versioner af Windows-operativsystemer er størrelsen af det virtuelle adresseområde typisk større end den fysiske RAM. I denne situation kan arbejdssættet for systemfilens cache øges for at forbruge det meste af den fysiske RAM.
Løsning
Hukommelsesstyringsalgoritmerne i operativsystemerne Windows 7 og Windows Server 2008 R2 blev opdateret for at løse mange problemer med cachelagring af filer, som blev fundet i tidligere versioner af Windows. Der er kun visse entydige situationer, hvor du skal implementere denne tjeneste på computere, der kører Windows 7 eller Windows Server 2008 R2.
Sådan finder du ud af, om systemet er påvirket
For at finde ud af, om dit system er påvirket af dette problem, skal du installere SysInternals RamMap-værktøjet. Du kan hente værktøjet på følgende Windows Sysinternals-websted:
http://technet.microsoft.com/en-us/sysinternals/ff700229
Når du kører værktøjet, skal du vælge indstillingen Brug antal . Dette viser flere kolonner, der viser det aktuelle mønster for hukommelsesforbrug. Klik på kolonnen Aktiv for at sortere efter antallet af bytes, der bruges, og notér det største forbrug direkte under det samlede antal.
Hvis det største antal brugere er "metafil", og hvis en stor del af den tilgængelige hukommelse bruges, oplever du det problem med systemfilcachen, der er beskrevet i afsnittet "Symptomer". Du kan kontrollere dette ved at bruge Ydelsesmåler til at overvåge Memory\System Cache Resident Bytes-tælleren og se cachen vokse løbende over tid.
Figur 1. Eksempel på RamMap-output, hvor computeren oplever problemet.
Figur 2. Eksempel på RamMap-output, hvor computeren ikke oplever problemet.
Hvis tælleren Memory\System Cache Resident Bytes i Ydelsesmåler viser en opadgående tendens over tid, oplever computeren problemet, som vist i figur 3.
Figur 3. Eksempel på output fra Ydelsesmåler, hvor computeren oplever problemet over tid.
Krav til genstart
Du behøver ikke genstarte computeren, når du installerer, fjerner eller bruger denne tjeneste.
Hvis du læser denne artikel, fordi du arbejder med en kunde, der mener, at de er påvirket af dette problem, skal du følge disse trin for at løse problemet.
Kontrollér, at kundens RamMap-output-, perfmon- eller poolmon-data bekræfter, at systemfilcachen bruger det meste af den fysiske RAM, som beskrevet tidligere.
For at få Windows Dynamic Cache Service, skal du downloade den her.
Nogle indstillinger i registreringsdatabasen for dynamisk cache er følgende:
Filservere, kan du prøve 1GB.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000400
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064Med Exchange 2007 kan du prøve 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064SQL 2005 og nyere har tidligere brugt 2 GB, når der arbejdes med SQL EE'er:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Flere oplysninger
Du kan løse dette problem ved at bruge API-funktionen GetSystemFileCacheSize og API-funktionen SetSystemFileCacheSize til at angive den maksimale eller minimale størrelsesværdi for arbejdssættene for systemfilcachen. Brugen af disse funktioner er den eneste understøttede metode til at begrænse forbruget af fysisk hukommelse i systemfilcachen.
Microsoft Windows Dynamic Cache Service er en eksempeltjeneste, der demonstrerer én strategi til at bruge disse API'er til at minimere virkningerne af dette problem.
Installation og brug af Microsoft Dynamic Cache Service medfører ikke udelukkelse af understøttelse af Microsoft Windows. Denne tjeneste og dens kildekode leveres som et eksempel på, hvordan du kan bruge de Microsoft-understøttede API'er til at reducere væksten i filsystemets cache.
Du kan hente tjenesten og kildekoden på følgende Microsoft-websted:
Yderligere ressourcer
Læs kapitel 9 (Hukommelsesstyring) og kapitel 10 (Cachestyring) af Windows Internals, den 5. udgave.
HUKOMMELSESSTYRING (PROBLEMER MED STOR SYSTEMCACHE) Blogindlæg
Blogindlæg om problemer med langsom kopiering af store filer
Hukommelsesgrænser for Windows-versioner
976618 Du oplever problemer med ydeevnen i programmer og tjenester, når systemfilens cache optager det meste af den fysiske RAM
918483 Sådan reduceres sideinddelingen af buffergruppehukommelse i 64-bit versionen af SQL Server
895932 ting, du skal overveje, inden du aktiverer systemcachetilstanden i Windows XP
232271 Sådan optimerer du Windows NT Server ved hjælp af registreringsdatabasen
837331 om Cachestyring i Windows Server 2003
http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx
Status
Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".