Memory Manager a systémová cache Windows: paging, page combining a lazy write
Na této stránce
Krátká odpověď
Sekce “Krátká odpověď”V této sérii bylo prověřeno sedm parametrů stránkování, slučování shodných stránek, jádrové haldy a souborové cache. V Windows 11 25H2 byl nalezen kód pro čtení každého z nich. Praktický přínos závisí na parametru a podmínkách provozu.
DisablePageCombining vypíná slučování stránek na pozadí: správce paměti přestává tuto práci vykonávat, ale spotřeba RAM může vzrůst. DisablePagingExecutive udržuje odkládatelný kód ovladačů ve fyzické paměti; přínos je obvykle malý. Ostatní parametry se vztahují pouze na konkrétní úlohy jádra nebo úložišť, případně již mají v 25H2 vhodné výchozí hodnoty.
Co bylo prověřováno
Sekce “Co bylo prověřováno”Pro každou hodnotu bylo prověřováno:
- přesná cesta v registru a typ;
- výchozí hodnota daná kódem Windows 11 25H2;
- související hodnoty téhož subsystému;
- systémový kód pro čtení a okamžik jeho vykonání;
- omezení rozsahu, převod hodnot a jednotky měření;
- přímý efekt a hranice použitelnosti.
Kromě kódu pro čtení jsme prověřovali, kde se parametr uplatňuje, jaké důsledky má jeho změna a ve kterých scénářích může být užitečný. Samotná existence parametru pro doporučení nestačí.
Rozsah výzkumu a důkazy
Sekce “Rozsah výzkumu a důkazy”- Windows 11 25H2 x64, build
26200.9168. - Parametry jádra byly porovnány s hlavní konfigurační tabulkou
ntoskrnl.exea s kódem jejich uplatnění v Memory Manager a Cache Manager. - Přístupy za běhu byly prověřeny systémovým trasováním registru. Čtení ve fázi 0 a na začátku fáze 1 mohou v běžném trasování zavádění chybět: ovladač trasování začíná zapisovat později.
- Pro uživatelské procesy bylo samostatně prověřováno čtení hodnoty v
ntdll.dll. ProHeapDeCommitFreeBlockThresholdbylo v 25H2 nalezeno čtení v jádře, ale haldy uživatelských procesů tento parametr nepoužívají. - Statická analýza systémových komponent nenahrazuje opakování na fyzickém PC, jiném buildu nebo jiném typu úložiště.
Kanonické parametry
Sekce “Kanonické parametry”| Registry path | Value | Type | Default Windows 11 25H2 | Použití |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Stránkování odkládatelného kódu systémových ovladačů |
| stejná cesta | DisablePageCombining |
REG_DWORD |
0 |
Slučování shodných fyzických stránek na pozadí |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) pro kernel heap |
Práh decommit volných bloků kernel-mode heap |
| stejná cesta | ModifiedWriteMaximum |
REG_DWORD |
1 jednotka = 1 MB |
Horní limit modified page writer po clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Asynchronní režim Cache Manager |
| stejná cesta | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Okno unmap za sekvenčním čtením |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Zobrazení cache topology mezi processor groups |
DisablePagingExecutive
Sekce “DisablePagingExecutive”Co dělá
Sekce “Co dělá”Při 0 může správce paměti Windows odkládat sekce systémového kódu a ovladačů, které to umožňují, do záložního úložiště. Při 1 je odkládatelný kód systémových ovladačů udržován ve fyzické paměti.
Kód pro čtení byl nalezen v ntoskrnl.exe v rané fázi inicializace jádra. Hodnota se používá v MmResetDriverPaging, MmPageEntireDriver a při načítání systémových obrazů. Uplatňuje se dříve, než začíná běžné uživatelské trasování registru. Pro uplatnění nového stavu je nutné restartovat.
Hodnoty a omezení
Sekce “Hodnoty a omezení”0: standardní stav Windows, odkládání je povoleno.1: odkládatelné sekce systémových ovladačů jsou udržovány v RAM.- Nastavení spotřebovává RAM, aby omezilo následné načítání systémového kódu zpět do paměti; samotný disk rychleji nepracuje.
Užitečnost
Sekce “Užitečnost”Nastavení zabraňuje následnému odkládání a načítání těchto sekcí ovladačů. Nevypíná samostatné trvale kontrolující vlákno CPU. Na moderním systému s dostatečným objemem RAM je přínos obvykle velmi malý: kód může v paměti zůstat dlouho i bez nastavení. Při nedostatku RAM jeho vynucené udržování prohlubuje nedostatek paměti.
Čtení parametru a směr systémového efektu jsou potvrzeny kódem ntoskrnl.exe.
DisablePageCombining
Sekce “DisablePageCombining”Co dělá
Sekce “Co dělá”Při 0 správce paměti spouští úlohu na pozadí, která vyhledává a slučuje shodné fyzické stránky. Při 1 tato úloha slučování nevykonává.
V ntoskrnl.exe byl nalezen kód slučování stránek na pozadí s pool tagem MmCb, což potvrzuje existenci mechanismu.
Hodnoty a omezení
Sekce “Hodnoty a omezení”0: slučování stránek je povoleno, standardní stav Windows.1: slučování je vypnuto.- Vypnutí omezuje práci správce paměti na pozadí, ale může zvýšit spotřebu RAM.
Užitečnost
Sekce “Užitečnost”Vypnutí je užitečné, pokud slučování stránek vytváří znatelnou zátěž na pozadí a systém má volnou RAM. Obvykle je tato úloha málo aktivní, proto je efekt velmi malý. Při omezeném objemu paměti je úspora RAM ze slučování užitečnější než ušetřený procesorový čas.
Kód pro čtení a úlohu na pozadí je potvrzen v ntoskrnl.exe. Microsoft popisuje slučování stránek a kompromis mezi procesorovou prací a úsporou RAM.
HeapDeCommitFreeBlockThreshold
Sekce “HeapDeCommitFreeBlockThreshold”Co dělá
Sekce “Co dělá”Hodnota určuje práh uvolnění přidělené paměti (decommit) pro volný blok haldy jádra. Při vyšším prahu se tyto operace pro velké volné bloky provádějí méně často.
V Windows 11 25H2 se kód pro čtení nachází v ntoskrnl.exe a uplatnění parametru souvisí s funkcí jádra RtlCreateHeap. V ntdll.dll nebyl odpovídající kód pro čtení pro haldy běžných procesů nalezen.
Hodnoty a omezení
Sekce “Hodnoty a omezení”- Výchozí hodnota v kódu pro haldu jádra:
0x1000(4 KB). 0x40000(256 KB) je přípustný práh pro haldu jádra.- Historické dokumenty Microsoft popisovaly stejnojmenný user-mode scénář starších verzí Windows, proto jej nelze automaticky přenášet na Windows 11 25H2.
Užitečnost
Sekce “Užitečnost”Pro běžné aplikace nemá prakticky žádný přínos: jejich haldy tuto hodnotu nepoužívají. Parametr může měnit četnost uvolňování paměti pouze v haldě jádra. Bez změřeného problému právě s ní je očekávaný efekt velmi malý.
Čtení v režimu jádra je potvrzeno v ntoskrnl.exe. Efekt pro uživatelské procesy v 25H2 potvrzen není.
ModifiedWriteMaximum
Sekce “ModifiedWriteMaximum”Co dělá
Sekce “Co dělá”Parametr určuje horní limit pro mechanismus zápisu změněných stránek (modified page writer). V kódu se používají jednotky po 256 stránkách, tedy jedna jednotka se rovná 1 MB.
Normalizace v Windows 11 25H2:
0se převádí na1jednotku, tedy 1 MB;- hodnoty větší než
0x40jsou omezeny na0x40; - maximální efektivní limit je 64 MB, tedy 16 384 stránek.
Mechanismus začíná aktivně zapisovat přibližně při dosažení čtvrtiny zadaného limitu. Zvýšení limitu mění okamžik spuštění zápisu a objem nahromaděných změněných stránek. Rychlost samotného disku tím neroste.
Užitečnost
Sekce “Užitečnost”Při větším limitu se do začátku aktivního zápisu nahromadí více změněných stránek. Zápis může být spouštěn méně často, ale objem dosud neuložených dat a velikost následující dávky zápisu rostou. Pokud nemáte konkrétní problém se zápisem, ponechte výchozí hodnotu. Efektivní limit je omezen na 64 MB.
Kód pro čtení, jednotky měření a omezení rozsahu jsou potvrzeny v ntoskrnl.exe. Stejnojmenný parametr ze starších dokumentů Microsoft o BitLocker se vztahuje k jinému subsystému; tyto dokumenty zde nejsou použity jako zdroj.
EnableAsyncLazywrite a související hodnoty
Sekce “EnableAsyncLazywrite a související hodnoty”Co dělá
Sekce “Co dělá”EnableAsyncLazywrite řídí asynchronní odložený zápis Cache Manager. V kódu 25H2 je zadána výchozí hodnota 2: tento režim je již zapnutý.
Související hodnoty téhož subsystému:
| Value | Default 25H2 | Role |
|---|---|---|
EnableAsyncLazywrite |
2 |
Obecný async lazy-write mode |
EnableAsyncLazywriteMulti |
2 |
Sousední multi-volume režim |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 vypíná asynchronní odložený zápis. Pro 1 je vyžadován režim samostatného zpracovatele odloženého zápisu na každém svazku. 2 zapíná asynchronní režim bez tohoto požadavku. Cache Manager znovu načítá hodnoty při práci s konfigurací svazků.
Užitečnost
Sekce “Užitečnost”Explicitní zápis 2 opakuje standardní konfiguraci Windows 11 25H2 a nic dalšího nezlepšuje. Nastavení je vhodné především pro diagnostiku: hodnota 0 umožňuje vypnout mechanismus, který je ve výchozím stavu zapnutý.
Čtení bylo pozorováno v systémovém trasování a potvrzeno v ntoskrnl.exe. Výchozí hodnota 2 je potvrzena kódem a nezávislým popisem parametrů registru sestaveným na základě reverzního inženýrství.
CacheUnmapBehindLengthInMB
Sekce “CacheUnmapBehindLengthInMB”Co dělá
Sekce “Co dělá”Parametr určuje vzdálenost v megabajtech, po jejímž překročení Cache Manager uvolní zakešované pohledy, které zůstaly pozadu za aktuální pozicí sekvenčního čtení.
Kód pro čtení a uplatnění parametru se nachází v ntoskrnl.exe a je volán při mapování a čtení cache. Parametr se vztahuje na sekvenční čtení velkých souborů; celou souborovou cache nevypíná.
Hodnoty a clamp
Sekce “Hodnoty a clamp”0nebo hodnota větší než128je kódem nahrazena za8.- Pracovní rozsah:
1..128MB. - Výchozí hodnota v kódu:
8MB. - Jednotky Registry value jsou právě MB, nikoli bajty.
Užitečnost
Sekce “Užitečnost”Parametr má smysl pouze pro specializované úlohy sekvenčního čtení velkých souborů. Při větším okně je mapování cache pozadu za aktuální pozicí zachováno déle, při menším je uvolněno dříve. Pro běžnou práci se hodí standardní hodnota 8 MB; přínos ručního nastavení je obvykle malý.
Kód pro čtení, uplatnění a omezení rozsahu je potvrzen v ntoskrnl.exe. Moderní veřejná dokumentace Microsoft pro tento interní parametr nebyla nalezena.
SplitLargeCaches
Sekce “SplitLargeCaches”Co dělá
Sekce “Co dělá”Při 0 API pro popis topologie cache vrací jediný záznam pro odpovídající strukturu zahrnující několik skupin procesorů. Při 1 jsou záznamy rozděleny podle skupin procesorů.
Kód pro čtení se nachází v ntoskrnl.exe. Parametr se používá při zpracování vztahu RelationCache v KeQueryLogicalProcessorRelationship.
Mění se pouze popis topologie, který vrací systémové API. Přidělené fyzické bloky paměti se nerozdělují a pravděpodobnost nedostatku souvislého bloku se sama o sobě nesnižuje.
Hodnoty a omezení
Sekce “Hodnoty a omezení”0: výchozí hodnota.1: rozdělovat záznamy topologie podle skupin procesorů.- Praktický efekt je možný především na systémech s několika skupinami procesorů, obvykle při více než 64 logických procesorech.
- Na běžném jednoskupinovém systému je efekt nulový.
Užitečnost
Sekce “Užitečnost”Parametr je potřebný pouze pro programy, které dotazují topologii cache na stroji s několika skupinami procesorů. Práci cache ani přidělování paměti nemění. Pro běžný stolní počítač nemá přínos.
Kód pro čtení a uplatnění je potvrzen v ntoskrnl.exe. Hodnota a účel byly ověřeny s veřejným popisem reverzního inženýrství KiSplitLargeCaches.
Celková užitečnost
Sekce “Celková užitečnost”| Parametr | Praktické hodnocení |
|---|---|
DisablePagingExecutive |
Obvykle dává velmi malý přínos, udržuje více kódu v RAM |
DisablePageCombining |
Užitečný při potvrzené zátěži slučování stránek na pozadí a velké rezervě RAM |
HeapDeCommitFreeBlockThreshold |
Působí pouze v jádře; pro běžné aplikace nemá praktický přínos |
ModifiedWriteMaximum |
Mění podmínky zápisu změněných stránek; bez zjištěného problému ponechte standardní hodnotu |
EnableAsyncLazywrite |
Standardní hodnota 2 již mechanismus zapíná; opakovaný zápis nic nezlepšuje |
CacheUnmapBehindLengthInMB |
Nastavení sekvenčního čtení; standardní 8 MB se hodí pro běžnou práci |
SplitLargeCaches |
Mění popis topologie pro několik skupin procesorů; na běžném systému nemá efekt |
Co je potvrzeno a co nebylo měřeno
Sekce “Co je potvrzeno a co nebylo měřeno”Jsou potvrzeny výše uvedené cesty, typy, výchozí hodnoty, kód a okamžik čtení parametrů a také omezení rozsahů. Výsledky se vztahují na Windows 11 25H2 build 26200.9168. Chování se může lišit při jiné aktualizaci Windows, objemu RAM, typu úložiště nebo topologii CPU.
Jak zopakovat dynamickou část pozorování — viz Jak ověřit samostatně.
Obnovení stavu
Sekce “Obnovení stavu”Pro návrat obnovte standardní hodnoty parametrů nebo odstraňte volitelné záznamy. Část hodnot se uplatní při příštím spuštění Windows.
Výzkum a nástroje v něm použité patří vývojáři BoosterX, proto má vývojář na výsledcích přímý zájem. Metodika a hranice použitelnosti jsou popsány v tomto článku; závěry lze ověřit podle otevřených dat a níže uvedených veřejných zdrojů.
Veřejné zdroje
Sekce “Veřejné zdroje”- Memory combining, Microsoft Learn: účel page combining a kompromis CPU/RAM, ověřeno 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: sémantika
DisablePagingExecutive, ověřeno 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, historická dokumentace Microsoft: starý user-mode scénář a práh 256 KB, ověřeno 2026-09-01.
- Windows system configuration descriptions, veřejný RE popis
SplitLargeCaches, ověřeno 2026-09-01.
Tvrzení o kódu byla ověřena statickou analýzou systémových komponent Windows 11 25H2. Dekompilovaný kód, offsety, zdrojová trasování a interní materiály se nezveřejňují.
Veřejné zdroje ověřeny: 2026-09-02.
Historie změn
Sekce “Historie změn”- 2026-09-20: přidán disclaimer o střetu zájmů a odkaz na samostatné ověření dynamických pozorování v metodice.
- 2026-09-02: první publikace; potvrzeny cesty, defaults, clamps a kód pro čtení parametrů, přidány hranice praktického přínosu.
