Minneshanteraren och Windows systemcache: paging, page combining och lazy write
På den här sidan
Kort svar
Section titled “Kort svar”I den här serien har sju parametrar för växling, sammanslagning av identiska sidor, kernel-heap och filcache granskats. I Windows 11 25H2 har läskoden för var och en av dem hittats. Den praktiska nyttan beror på parametern och driftförhållandena.
DisablePageCombining inaktiverar bakgrundssammanslagning av sidor: minneshanteraren slutar utföra detta arbete, men RAM-förbrukningen kan öka. DisablePagingExecutive håller utbytbara drivrutinssektioner kvar i fysiskt minne; nyttan är vanligtvis liten. Övriga parametrar är endast tillämpliga på enskilda kernel- eller lagringsuppgifter, eller har redan lämpliga standardvärden i 25H2.
Vad som granskades
Section titled “Vad som granskades”För varje värde granskades:
- den exakta sökvägen i registret och typen;
- standardvärdet som anges av koden i Windows 11 25H2;
- relaterade värden i samma delsystem;
- systemets läskod och när den körs;
- intervallbegränsningar, värdekonvertering och måttenheter;
- direkt effekt och tillämpningsgränser.
Utöver läskoden granskade vi var parametern tillämpas, vilka konsekvenser en ändring har och i vilka scenarier den kan vara användbar. Enbart förekomsten av en parameter är inte tillräckligt för en rekommendation.
Undersökningsområde och bevisning
Section titled “Undersökningsområde och bevisning”- Windows 11 25H2 x64, build
26200.9168. - Kernel-parametrarna har jämförts med huvudtabellen för konfiguration
ntoskrnl.exeoch koden för deras tillämpning i Memory Manager och Cache Manager. - Åtkomster under körning verifierades med systemets registerspårning. Läsningar i fas 0 och i början av fas 1 kan saknas i ett vanligt startspår: spårningsdrivrutinen börjar skriva senare.
- För användarprocesser verifierades läsningen av värdet separat i
ntdll.dll. FörHeapDeCommitFreeBlockThresholdhar en läsning i kerneln hittats i 25H2, men heapar i användarprocesser använder inte denna parameter. - Statisk analys av systemkomponenter ersätter inte en upprepning på en fysisk PC, en annan build eller en annan typ av lagringsenhet.
Kanoniska parametrar
Section titled “Kanoniska parametrar”| Registry path | Value | Type | Default Windows 11 25H2 | Tillämpning |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Växling av pageable-kod för systemdrivrutiner |
| samma sökväg | DisablePageCombining |
REG_DWORD |
0 |
Bakgrundssammanslagning av identiska fysiska sidor |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) för kernel heap |
Tröskel för decommit av fria block i kernel-mode heap |
| samma sökväg | ModifiedWriteMaximum |
REG_DWORD |
1 enhet = 1 MB |
Övre gräns för modified page writer efter clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Asynkront läge för Cache Manager |
| samma sökväg | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Fönster för unmap bakom sekventiell läsning |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Representation av cache topology mellan processor groups |
DisablePagingExecutive
Section titled “DisablePagingExecutive”Vad den gör
Section titled “Vad den gör”Vid 0 kan Windows minneshanterare växla ut sektioner av systemkod och drivrutiner som tillåter detta till reservlagring. Vid 1 hålls utbytbara sektioner av systemdrivrutiner kvar i fysiskt minne.
Läskoden har hittats i ntoskrnl.exe i ett tidigt skede av kernelinitieringen. Värdet används i MmResetDriverPaging, MmPageEntireDriver och vid inläsning av systemavbildningar. Det tillämpas innan den vanliga användarspårningen av registret börjar. En omstart krävs för att det nya tillståndet ska tillämpas.
Värden och begränsningar
Section titled “Värden och begränsningar”0: Windows standardtillstånd, växling tillåten.1: utbytbara sektioner av systemdrivrutiner hålls kvar i RAM.- Inställningen förbrukar RAM för att minska efterföljande inläsningar av systemkod tillbaka till minnet; själva disken blir inte snabbare.
Nyttan
Section titled “Nyttan”Inställningen förhindrar efterföljande utväxling och inläsning av dessa drivrutinssektioner. Den stänger inte av någon separat ständigt kontrollerande CPU-tråd. På ett modernt system med tillräcklig mängd RAM är nyttan vanligtvis mycket liten: koden kan stanna kvar i minnet länge även utan inställningen. Vid RAM-brist förstärker den påtvingade kvarhållningen bristen på minne.
Läsningen av parametern och riktningen för systemeffekten har bekräftats av koden i ntoskrnl.exe.
DisablePageCombining
Section titled “DisablePageCombining”Vad den gör
Section titled “Vad den gör”Vid 0 startar minneshanteraren en bakgrundsuppgift som söker efter och slår samman identiska fysiska sidor. Vid 1 utför denna uppgift ingen sammanslagning.
I ntoskrnl.exe har koden för bakgrundssammanslagning av sidor hittats med pool-taggen MmCb, vilket bekräftar att mekanismen finns.
Värden och begränsningar
Section titled “Värden och begränsningar”0: sammanslagning av sidor tillåten, Windows standardtillstånd.1: sammanslagning inaktiverad.- Inaktivering minskar minneshanterarens bakgrundsarbete, men kan öka RAM-förbrukningen.
Nyttan
Section titled “Nyttan”Inaktivering är användbar om sammanslagning av sidor skapar en märkbar bakgrundsbelastning och systemet har ledigt RAM. Vanligtvis är denna uppgift lågaktiv, så effekten är mycket liten. Vid begränsad minnesmängd är RAM-besparingen från sammanslagning mer värdefull än den sparade processortiden.
Läskoden och bakgrundsuppgiften har bekräftats i ntoskrnl.exe. Microsoft beskriver sammanslagning av sidor och avvägningen mellan processorarbete och RAM-besparing.
HeapDeCommitFreeBlockThreshold
Section titled “HeapDeCommitFreeBlockThreshold”Vad den gör
Section titled “Vad den gör”Värdet anger tröskeln för frigöring av allokerat minne (decommit) för ett fritt block i kernel-heapen. Vid en högre tröskel sker sådana operationer mer sällan för stora fria block.
I Windows 11 25H2 finns läskoden i ntoskrnl.exe, och tillämpningen av parametern är kopplad till kernelfunktionen RtlCreateHeap. I ntdll.dll har ingen motsvarande läskod hittats för heapar i vanliga processer.
Värden och begränsningar
Section titled “Värden och begränsningar”- Standardvärdet i koden för kernel-heapen:
0x1000(4 KB). 0x40000(256 KB) är en giltig tröskel för kernel-heapen.- Historiska Microsoft-dokument beskrev ett user-mode-scenario med samma namn i äldre versioner av Windows, så det kan inte automatiskt överföras till Windows 11 25H2.
Nyttan
Section titled “Nyttan”För vanliga program finns i praktiken ingen nytta: deras heapar använder inte detta värde. Parametern kan endast ändra frekvensen för minnesfrigöring i kernel-heapen. Utan ett uppmätt problem just med den är den förväntade effekten mycket liten.
Läsningen i kernel-läge har bekräftats i ntoskrnl.exe. Effekten för användarprocesser i 25H2 har inte bekräftats.
ModifiedWriteMaximum
Section titled “ModifiedWriteMaximum”Vad den gör
Section titled “Vad den gör”Parametern anger den övre gränsen för mekanismen för att skriva ändrade sidor (modified page writer). I koden används enheter om 256 sidor, det vill säga en enhet är lika med 1 MB.
Normalisering i Windows 11 25H2:
0omvandlas till1enhet, det vill säga 1 MB;- värden större än
0x40begränsas till0x40; - den maximala effektiva gränsen är 64 MB, eller 16 384 sidor.
Mekanismen börjar aktiv skrivning ungefär när en fjärdedel av den angivna gränsen uppnås. En ökning av gränsen ändrar när skrivningen startar och mängden ackumulerade ändrade sidor. Själva diskens hastighet ökar inte av detta.
Nyttan
Section titled “Nyttan”Vid en högre gräns ackumuleras fler ändrade sidor innan den aktiva skrivningen börjar. Skrivningen kan starta mer sällan, men mängden ännu inte sparade data och storleken på nästa skrivomgång ökar. Om det inte finns något specifikt problem med skrivningen, behåll standardvärdet. Den effektiva gränsen är begränsad till 64 MB.
Läskoden, måttenheterna och intervallbegränsningen har bekräftats i ntoskrnl.exe. Parametern med samma namn från äldre Microsoft-dokument om BitLocker tillhör ett annat delsystem; dessa dokument används inte här som källa.
EnableAsyncLazywrite och relaterade värden
Section titled “EnableAsyncLazywrite och relaterade värden”Vad den gör
Section titled “Vad den gör”EnableAsyncLazywrite styr Cache Managers asynkrona fördröjda skrivning. I koden för 25H2 är standardvärdet 2: detta läge är redan aktiverat.
Relaterade värden i samma delsystem:
| Value | Default 25H2 | Roll |
|---|---|---|
EnableAsyncLazywrite |
2 |
Allmänt async lazy-write mode |
EnableAsyncLazywriteMulti |
2 |
Närliggande multi-volume-läge |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 inaktiverar asynkron fördröjd skrivning. För 1 krävs ett läge med en separat hanterare för fördröjd skrivning på varje volym. 2 aktiverar asynkront läge utan detta krav. Cache Manager läser om värdena vid hantering av volymkonfigurationen.
Nyttan
Section titled “Nyttan”En explicit inställning av 2 upprepar standardkonfigurationen i Windows 11 25H2 och förbättrar ingenting ytterligare. Inställningen är främst användbar för diagnostik: värdet 0 gör det möjligt att inaktivera den mekanism som är aktiverad som standard.
Läsningen observerades i systemets spårning och har bekräftats i ntoskrnl.exe. Standardvärdet 2 har bekräftats av koden och av en oberoende beskrivning av registerparametrarna som sammanställts utifrån resultaten av omvänd analys.
CacheUnmapBehindLengthInMB
Section titled “CacheUnmapBehindLengthInMB”Vad den gör
Section titled “Vad den gör”Parametern anger avståndet i megabyte efter vilket Cache Manager frigör cachade vyer som ligger kvar bakom den aktuella positionen för sekventiell läsning.
Läskoden och koden för tillämpning av parametern finns i ntoskrnl.exe och anropas vid mappning och läsning av cachen. Parametern avser sekventiell läsning av stora filer; den stänger inte av hela filcachen.
Värden och clamp
Section titled “Värden och clamp”0eller ett värde större än128ersätts av koden med8.- Arbetsintervall:
1..128MB. - Kodens default:
8MB. - Enheterna för Registry value är just MB, inte byte.
Nyttan
Section titled “Nyttan”Parametern är endast meningsfull för specialiserade uppgifter med sekventiell läsning av stora filer. Vid ett större fönster behålls cachens mappning bakom den aktuella positionen längre, vid ett mindre frigörs den tidigare. För vanligt arbete passar standardvärdet 8 MB; nyttan av manuell inställning är vanligtvis liten.
Läskoden, tillämpningskoden och intervallbegränsningen har bekräftats i ntoskrnl.exe. Ingen modern offentlig Microsoft-dokumentation för denna interna parameter har hittats.
SplitLargeCaches
Section titled “SplitLargeCaches”Vad den gör
Section titled “Vad den gör”Vid 0 returnerar API:et för beskrivning av cache-topologi en enhetlig post för den motsvarande strukturen som omfattar flera processor groups. Vid 1 delas posterna upp per processor group.
Läskoden finns i ntoskrnl.exe. Parametern används vid hantering av relationen RelationCache i KeQueryLogicalProcessorRelationship.
Endast topologibeskrivningen som system-API:et returnerar ändras. Tilldelade fysiska minnesblock delas inte upp, och sannolikheten för brist på ett sammanhängande block minskar inte i sig.
Värden och begränsningar
Section titled “Värden och begränsningar”0: standardvärdet.1: dela upp topologiposter per processor group.- En praktisk effekt är i första hand möjlig på system med flera processor groups, vanligtvis vid fler än 64 logiska processorer.
- På ett vanligt system med en enda group finns ingen effekt.
Nyttan
Section titled “Nyttan”Parametern behövs endast för program som begär cache-topologi på en maskin med flera processor groups. Den ändrar inte cachens funktion eller minnesallokeringen. För en vanlig stationär dator finns ingen nytta.
Läskoden och tillämpningskoden har bekräftats i ntoskrnl.exe. Värdet och syftet har stämts av mot den offentliga beskrivningen av omvänd analys KiSplitLargeCaches.
Allmän nytta
Section titled “Allmän nytta”| Parameter | Praktisk bedömning |
|---|---|
DisablePagingExecutive |
Ger vanligtvis mycket liten nytta genom att hålla mer kod i RAM |
DisablePageCombining |
Användbar vid bekräftad belastning från bakgrundssammanslagning av sidor och stort RAM-överskott |
HeapDeCommitFreeBlockThreshold |
Verkar endast i kerneln; för vanliga program finns ingen praktisk nytta |
ModifiedWriteMaximum |
Ändrar villkoren för skrivning av ändrade sidor; utan ett identifierat problem, behåll standardvärdet |
EnableAsyncLazywrite |
Standardvärdet 2 aktiverar redan mekanismen; en ny inställning förbättrar ingenting |
CacheUnmapBehindLengthInMB |
Inställning för sekventiell läsning; standardvärdet 8 MB passar för vanligt arbete |
SplitLargeCaches |
Ändrar topologibeskrivningen för flera processor groups; på ett vanligt system finns ingen effekt |
Vad som har bekräftats och vad som inte har mätts
Section titled “Vad som har bekräftats och vad som inte har mätts”Sökvägarna, typerna, standardvärdena, koden och tidpunkten för parametrarnas läsning samt intervallbegränsningarna ovan har bekräftats. Resultaten avser Windows 11 25H2 build 26200.9168. Beteendet kan skilja sig vid en annan Windows-uppdatering, RAM-mängd, typ av lagringsenhet eller CPU-topologi.
Hur du upprepar den dynamiska delen av observationerna finns i Hur du verifierar själv.
Återställning av tillstånd
Section titled “Återställning av tillstånd”För att återställa, ange parametrarnas standardvärden eller ta bort de valfria posterna. En del värden tillämpas vid nästa start av Windows.
Undersökningen och de verktyg som använts i den tillhör utvecklaren av BoosterX, så utvecklaren har ett direkt intresse av resultaten. Metoden och tillämpningsgränserna beskrivs i denna artikel; slutsatserna kan verifieras mot öppna data och de offentliga källor som listas nedan.
Offentliga källor
Section titled “Offentliga källor”- Memory combining, Microsoft Learn: syftet med page combining och CPU/RAM-avvägningen, verifierad 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: semantiken för
DisablePagingExecutive, verifierad 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, historisk Microsoft-dokumentation: det gamla user-mode-scenariot och tröskeln 256 KB, verifierad 2026-09-01.
- Windows system configuration descriptions, offentlig RE-beskrivning av
SplitLargeCaches, verifierad 2026-09-01.
Påståenden om koden har verifierats genom statisk analys av systemkomponenter i Windows 11 25H2. Dekompilerad kod, offsetar, ursprungliga spårningar och interna material publiceras inte.
Offentliga källor verifierade: 2026-09-02.
Ändringshistorik
Section titled “Ändringshistorik”- 2026-09-20: en ansvarsfriskrivning om intressekonflikt och en länk till självständig verifiering av dynamiska observationer i metoden har lagts till.
- 2026-09-02: första publiceringen; sökvägar, defaults, clamps och läskod för parametrarna har bekräftats, gränser för praktisk nytta har lagts till.
