Simptomi
Probleme s performansama možete doživjeti u aplikacijama i servisima u različitim verzijama sustava Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 i Windows Server 2008 R2. Osim toga, primijetit ćete sljedeće simptome:
-
Dostupna je memorija gotovo iscrpljena.
-
Predmemorija sistemske datoteke troši većinu fizičkog RAM-a.
-
Na tvrdom disku postoji stalan i visok volumen predmemoriranih zahtjeva za čitanje.
Uzrok
Upravljanje memorijom u operacijskim sustavima Microsoft Windows koristi algoritam utemeljen na potražnji. Ako bilo koji zahtjev za postupak i koristi veliku količinu memorije, povećava se veličina radnog skupa (broj memorijskih stranica u fizičkom RAM-u). Ako su te zahtjeve kontinuirano i neprovjereno, radni skup procesa će rasti da bi se konzumirao sav fizički RAM. U toj se situaciji skupovi rada za sve druge procese zovu na tvrdi disk. To ponašanje smanjuje performanse aplikacija i servisa jer se memorijske stranice kontinuirano zapisuju na tvrdi disk i čitaju s tvrdog diska.
To se ponašanje primjenjuje i na radni skup predmemorije sistemske datoteke. Ako postoji stalan i visok volumen predmemoriranih zahtjeva za čitanje iz bilo kojeg postupka ili bilo kojeg upravljačkog programa, veličina radne datoteke predmemorije sustava bit će razvijen da bi zadovoljili tu potražnju. Predmemorija sistemske datoteke troši fizički RAM. Stoga dovoljne količine fizičkog RAM-a nisu dostupne za druge procese.
U 32-bitnim verzijama operacijskog sustava Microsoft Windows starijim od sustava Windows Vista radni skupovi predmemorije sistemskih datoteka imaju teoretsku memorijsku ograničenje manje od 1 gigabajta (GB). Ograničenje virtualnog adresnog raspona sprječava radne skupove predmemorirane sistemske datoteke da bi se iscrpljuje fizički RAM.
U 32-bitnim verzijama operativnih sustava Windows Vista Radni skup predmemorije sistemskih datoteka povećava se radi korištenja virtualnog adresnog raspona jezgrenog načina rada na račun ostalih resursa jezgre. Ograničenje tog raspona memorije manje je od 2 GB. Ako računalo ima više od 2 GB fizičkog RAM-a, predmemorija ne može iscrpiti sve fizičke RAM-a. No predmemorija može iscrpiti virtualni adresni razmak u jezgri. To može prouzročiti neuspjehe alokacije za druge komponente jezgre.
Na 64-bitnim verzijama operacijskog sustava Windows veličina virtualnog adresnog raspona obično je veća od fizičkog RAM-a. U tom se slučaju radni skup za predmemoriranje datoteka sustava može povećati tako da potroši većinu fizičkog RAM-a.
Rješenje
Algoritmi za upravljanje memorijom u operacijskim sustavima Windows 7 i Windows Server 2008 R2 ažurirani su za rješavanje mnogih problema s predmemoriranjem datoteka koje su pronađene u starijim verzijama sustava Windows. Postoje samo određene jedinstvene situacije u kojima morate implementirati ovaj servis na računalima sa sustavom Windows 7 ili Windows Server 2008 R2.
Kako utvrditi je li vaš sustav utjecao
Da biste utvrdili je li vaš sustav utjecao na taj problem, instalirajte alat za SysInternals RamMap. Alat možete nabaviti na sljedećem web-mjestu sustava Windows Sysinternals:
http://technet.Microsoft.com/en-US/Sysinternals/ff700229
Kada pokrenete alat, odaberite mogućnost koristi brojanje. Prikazat će se nekoliko stupaca koji prikazuju sadašnji uzorak korištenja memorije. Kliknite aktivan stupac da biste sortirali prema broju korištenih bajtova i primjetite najvišu upotrebu izravno ispod ukupnog zbroja.
Ako je broj vrha koristi "metadatoteka", a ako se koristi veliki dio dostupne memorije, pojavljuje se problem s predmemorijom sistemske datoteke opisan u odjeljku "simptomi". To možete provjeriti pomoću monitora performansi da biste nadzirali Memori\međuspremnik Resident bytes brojač i pogledajte kako će predmemorija stalno rasti tijekom vremena.
Slika 1. Ogledni izlazni izlaz u kojem računalo doživljava problem.
Slika 2. Ogledni izlazni prikaz u kojem računalo ne doživljava problem.
Ako brojač sažetaka bajtova Memory\System u predmemoriji na monitoru performansi prikazuje uzlazni trend tijekom vremena, računalo doživljava problem, kao što je prikazano na slici 3.
Slika 3. Ogledni izlazni monitor performansi u kojem računalo doživljava problem tijekom vremena.
Preduvjeti za ponovno pokretanje
Kada instalirate, deinstalirate ili koristite ovaj servis, ne morate ponovno pokrenuti računalo.
Ako čitate ovaj članak jer radite s klijentom koji vjeruje da je taj problem utjecao na njih, slijedite ove korake da biste riješili problem.
-
Provjerite jesu li podaci programa RamMap izlazni, perfmon ili Poolmon potvrdili da predmemorija sistemske datoteke konzumira većinu fizičkog RAM-a, kao što je prethodno opisano.
-
Da biste nabavili servis za dinamičku predmemoriranje sustava Windows, preuzmite ga ovdje.
-
Neke postavke registra dinamičke predmemorije nalaze se na sljedeći način:
Poslužitelji datoteka, možda želite isprobati 1GB.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"Maxsystemcachembajta" = d Word: 00000400
"Minsystemcachembajta" = d Word: 00000064
"SampleIntervalSecs" = d Word: 0000003c
"Cacheupdatepraldembajta" = d Word: 00000064
Exchange 2007, možda želite isprobati 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"Maxsystemcachembajta" = DWORD: 000001F4
"Minsystemcachembajta" = d Word: 00000064
"SampleIntervalSecs" = d Word: 0000003c
"Cacheupdatepraldembajta" = d Word: 00000064
SQL 2005 i noviji, u prošlosti kada ste radili sa sustavom SQL, koristili ste 2GB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"Maxsystemcachembajta" = d Word: 000007D 0
"Minsystemcachembajta" = d Word: 00000064
"SampleIntervalSecs" = d Word: 0000003c
"Cacheupdatepraldembajta" = d Word: 00000064
Dodatne informacije
Da biste zaobišli taj problem, upotrijebite funkciju GetSystemFileCacheSize API i funkcija SetSystemFileCacheSize API da biste postavili maksimalnu vrijednost ili minimalnu veličinu za radne skupove predmemorije sustava. Korištenje tih funkcija jedini je podržani način ograničavanja potrošnje fizičke memorije pomoću predmemorije sistemske datoteke.
Servis za dinamičku predmemoriranje sustava Microsoft Windows ogledni je servis koji pokazuje jednu strategiju koja koristi te API-je za minimiziranje efekata tog problema.
Instalacija i korištenje Microsoftova servisa za dinamičku predmemoriranje ne izaziva izuzeće podrške za Microsoft Windows. Ovaj servis i njezin izvorni kod osiguravaju se kao primjer korištenja dodatka Microsoftove podržane API-ja da biste smanjili rast predmemorije datotečnog sustava.
Servis i izvorni kod možete nabaviti na sljedećem Microsoftovu web-mjestu:
Dodatni resursi
Pročitajte poglavlja 9 (upravljanje memorijom) i 10 (Upravitelj predmemorije) sustava Windows internals, peto izdanje.
Upravljanje memorijom (veliki problemi u memoriji sustava) objavljivanje bloga
Sporo veliko kopiranje problema s objavom bloga
Ograničenja memorije za izdanja
sustava Windows 976618 možete iskusiti probleme s performansama u aplikacijama i servisima kada predmemorija sistemske datoteke potroši većinu fizičkog RAM-a
918483 kako smanjiti straničnu memoriju na bazenu međuspremnika u 64-bitnim verzijama sustava SQL Server
895932 stvari za razmotrite prije omogućivanja načina predmemorije sustava u sustavu Windows XP
232271 optimiziranje sustava Windows NT Server pomoću registra
837331 o upravitelju predmemorije u sustavu Windows Server 2003
http://technet2.Microsoft.com/windowsserver/en/Library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx
largesystemcache TechNet tema
RAMMAP blog post
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".