Příznaky
Problémy s výkonem aplikací a služeb se mohou vyskytnout v různých verzích systémů Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 a Windows Server 2008 R2. Kromě toho si všimnete následujících příznaků:
-
Dostupná paměť je téměř vyčerpaná.
-
Systémová souborová mezipaměť spotřebovává většinu fyzické paměti RAM.
-
Na pevném disku je průběžný a vysoký objem žádostí o čtení v mezipaměti.
Příčina
Správa paměti v operačních systémech Microsoft Windows používá algoritmus založený na vyžádání. Pokud nějaký proces požaduje a využívá velké množství paměti, zvětšuje se velikost pracovní sady (počet stránek paměti ve fyzické paměti RAM). Pokud jsou tyto žádosti průběžné a nezaškrtnuté, bude se pracovní sada tohoto procesu zvětšovat, aby spotřebovává všechnou fyzickou paměť RAM. V této situaci jsou pracovní sady pro všechny ostatní procesy zasuněné na pevný disk. Toto chování snižuje výkon aplikací a služeb, protože stránky paměti jsou průběžně zapisovat na pevný disk a čtou se z pevného disku.
Toto chování platí také pro pracovní sadu systémových souborová mezipaměť. Pokud z jakéhokoli procesu nebo z libovolného ovladače pochází průběžný a velký objem žádostí o čtení v mezipaměti, bude velikost pracovní sady systému souborová mezipaměť tak, aby tuto žádost splňovala. Systémová souborová mezipaměť spotřebovává fyzickou paměť RAM. V jiných procesech proto není k dispozici dostatek fyzické paměti RAM.
V 32bitových verzích operačních systémů Microsoft Windows starších než Windows Vista mají pracovní sady operačního systému souborová mezipaměť standardní limit paměti nižší než 1 gigabajt (GB). Omezení rozsahu virtuálních adres brání tomu, aby pracovní sady systému vyčerpaly fyzickou souborová mezipaměť paměti RAM.
V 32bitových verzích operačních systémů Windows Vista jsou prostředky kernel přidělovány dynamicky. Pracovní sada dat systému souborová mezipaměť spotřebovává virtuální oblast adres režimu kernel na náklady jiných zdrojů s kernel. Omezení této oblasti paměti je menší než 2 GB. Pokud má počítač fyzickou paměť RAM větší než 2 GB, nemůže mezipaměť vyčerpá všechnou fyzickou paměť RAM. Mezipaměť však může vyčerpá virtuální adresní prostor v kernelu. U jiných komponent kernel to může způsobit chyby přidělení.
V 64bitových verzích operačních systémů Windows je velikost oblasti virtuálních adres obvykle větší než fyzická paměť RAM. V takové situaci se může zvýšit pracovní sada souborová mezipaměť systému a využívat většinu fyzické paměti RAM.
Řešení
Algoritmus správy paměti v operačních systémech Windows 7 a Windows Server 2008 R2 byly aktualizovány tak, aby řešit mnoho problémů s ukládáním souborů do mezipaměti, které byly nalezeny v dřívějších verzích systému Windows. V určitých situacích musíte implementovat tuto službu na počítačích s Windows 7 nebo Windows Server 2008 R2.
Jak zjistit, jestli je ovlivněný váš systém
Pokud chcete zjistit, jestli se váš systém týká tohoto problému, nainstalujte nástroj SysInternals RamMap. Nástroj můžete získat z následujícího webu Windows Sysinternals:
http://technet.microsoft.com/en-us/sysinternals/ff700229
Po spuštění nástroje vyberte možnost Použít počty. Zobrazí se několik sloupců, které ukazují aktuální vzorek využití paměti. Klikněte na sloupec Aktivní, pokud chcete řadit podle počtu použitých bajtů, a všimněte si nejvyššího využití přímo pod celkovým součtem.
Pokud je počet použití nahoře "Metasoubor", a pokud se používá velká část dostupné paměti, dochází k problému s mezipamětí systémových souborů popsaným v části Příznaky. Můžete to ověřit pomocí Sledování výkonu ke sledování počítaných bajtů mezipaměti Memory\System Cache a zjistit, jak se mezipaměť v průběhu času průběžně zvětšuje.
Obrázek 1. Example RamMap output in which the computer is experiencing the issue.
Obrázek 2. Example RamMap output in which the computer is not experiencing the issue.
Pokud počítaný počet rezidentních bajtů paměti\systémové mezipaměti na monitoru výkonu v průběhu času ukazuje vzestupný trend, dochází u počítače k tomuto problému, jak ukazuje obrázek 3.
Obrázek 3. Příklad výstupu Sledování výkonu, ve kterém počítač dochází k problému v průběhu času.
Požadavky na restartování
Při instalaci, odinstalaci nebo používání této služby není nutné restartovat počítač.
Pokud si tento článek čtete, protože pracujete se zákazníkem, který si myslí, že se ho tento problém týká, můžete tento problém vyřešit tímto postupem.
-
Ověřte, jestli výstup RamMapu zákazníka, údaje perfmon nebo poolmon potvrzuje, že system file cache využívá většinu fyzické paměti RAM, jak jsme popsali výše.
-
Službu Windows Dynamic Cache získáte stažením tady.
-
Některá nastavení registru dynamické mezipaměti jsou následující:
Souborové servery, zkuste 1 GB.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000400
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Exchange 2007, zkuste třeba 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
SQL 2005 a novější používají v minulosti při práci s SQL EE 2 GB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Další informace
Tento problém můžete vyřešit tak, že pomocí funkce GetSystemFileCacheSize API a funkce SetSystemFileCacheSize API nastavíte maximální nebo minimální velikost pracovních sad systémové souborová mezipaměť. Jedinou podporovanou metodou omezení spotřeby fyzické paměti systémem je použití těchto funkcí souborová mezipaměť.
Služba Microsoft Windows Dynamic Cache je ukázková služba, která ukazuje jednu strategii používání těchto rozhraní API k minimalizaci důsledků tohoto problému.
Instalací a používáním služby Microsoft Dynamic Cache nezpůsobíte vyloučení podpory pro Microsoft Windows. Tato služba a její zdrojový kód jsou uvedeny jako příklad použití rozhraní API podporovaných společností Microsoft ke snížení růstu mezipaměti systému souborů.
Službu a zdrojový kód můžete získat z následujícího webu Microsoftu:
Další materiály
Přečtěte si kapitoly 9 (Správa paměti) a 10 (Správce mezipaměti) interních systémů Windows, 5. edice.
Příspěvek na blog SPRÁVA PAMĚTI (PROBLÉMY S VELKOU MEZIPAMĚŤ SYSTÉMU)
Příspěvek na blog Slow Large File Copy Issues
Limity paměti pro vydání windows
976618 Dochází k problémům s výkonem aplikací a služeb v případě, že systém souborová mezipaměť spotřebovává většinu fyzické paměti RAM 918483. Jak zmenšit stránkování paměti fondu paměti vyrovnávací paměti v 64bitové verzi SQL Serveru 895932 Co byste měli zvážit, než ve Windows XP 232271 povolíte režim mezipaměti systému, jak optimalizovat server Windows NT pomocí Registru 837331 o Správci mezipaměti ve
Windows
Serveru 2003
http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx
LargeSystemCache TechNet Topic
RamMap Blog post
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.