Hoppa till innehåll

Minneshanteraren och Windows systemcache: paging, page combining och lazy write

På den här sidan

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.

För varje värde granskades:

  1. den exakta sökvägen i registret och typen;
  2. standardvärdet som anges av koden i Windows 11 25H2;
  3. relaterade värden i samma delsystem;
  4. systemets läskod och när den körs;
  5. intervallbegränsningar, värdekonvertering och måttenheter;
  6. 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.

  • Windows 11 25H2 x64, build 26200.9168.
  • Kernel-parametrarna har jämförts med huvudtabellen för konfiguration ntoskrnl.exe och 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ör HeapDeCommitFreeBlockThreshold har 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.
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

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.

  • 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.

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.

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.

  • 0: sammanslagning av sidor tillåten, Windows standardtillstånd.
  • 1: sammanslagning inaktiverad.
  • Inaktivering minskar minneshanterarens bakgrundsarbete, men kan öka RAM-förbrukningen.

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.

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.

  • 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.

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.

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:

  • 0 omvandlas till 1 enhet, det vill säga 1 MB;
  • värden större än 0x40 begränsas till 0x40;
  • 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.

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”

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.

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.

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.

  • 0 eller ett värde större än 128 ersätts av koden med 8.
  • Arbetsintervall: 1..128 MB.
  • Kodens default: 8 MB.
  • Enheterna för Registry value är just MB, inte byte.

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.

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.

  • 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.

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.

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.

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.

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.

  • 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.