Memory Manager og Windows-systemcache: paging, page combining og lazy write
På denne side
Kort svar
Sektion kaldt “Kort svar”I denne serie er syv parametre for paging, sammenlægning af identiske sider, kernel-heaps og filcache undersøgt. I Windows 11 25H2 er der fundet læsekode for hver af dem. Den praktiske nytte afhænger af parameteren og driftsforholdene.
DisablePageCombining deaktiverer baggrundssammenlægning af sider: hukommelsesadministratoren holder op med at udføre dette arbejde, men RAM-forbruget kan stige. DisablePagingExecutive holder driveres sidebare kode i fysisk hukommelse; nytten er normalt lille. De øvrige parametre gælder kun for specifikke kernel- eller lageropgaver eller har allerede passende standardværdier i 25H2.
Hvad blev undersøgt
Sektion kaldt “Hvad blev undersøgt”For hver værdi blev følgende undersøgt:
- den præcise sti i registreringsdatabasen og typen;
- standardværdien fastsat af koden i Windows 11 25H2;
- relaterede værdier i samme undersystem;
- systemets læsekode og tidspunktet for dens udførelse;
- grænser for værdiområdet, konvertering af værdier og måleenheder;
- den direkte effekt og grænserne for anvendelighed.
Ud over læsekoden undersøgte vi, hvor parameteren anvendes, hvilke konsekvenser en ændring har, og i hvilke scenarier den kan være nyttig. Det er ikke tilstrækkeligt, at parameteren blot eksisterer, for at anbefale den.
Undersøgelsesområde og evidens
Sektion kaldt “Undersøgelsesområde og evidens”- Windows 11 25H2 x64, build
26200.9168. - Kernel-parametre er sammenholdt med hovedkonfigurationstabellen
ntoskrnl.exeog koden for deres anvendelse i Memory Manager og Cache Manager. - Adgange under kørsel blev verificeret med systemets registreringssporing. Læsninger i fase 0 og i begyndelsen af fase 1 kan mangle i en almindelig opstartssporing: sporingsdriveren begynder først at registrere senere.
- For brugerprocesser blev læsning af værdien undersøgt separat i
ntdll.dll. ForHeapDeCommitFreeBlockThresholder der i 25H2 fundet læsning i kernen, men heaps i brugerprocesser bruger ikke denne parameter. - Statisk analyse af systemkomponenter erstatter ikke en gentagelse på en fysisk pc, et andet build eller en anden type lagerenhed.
Kanoniske parametre
Sektion kaldt “Kanoniske parametre”| Registry path | Value | Type | Default Windows 11 25H2 | Применение |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Paging af pageable kode i systemdrivere |
| samme sti | DisablePageCombining |
REG_DWORD |
0 |
Baggrundssammenlægning af identiske fysiske sider |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) for kernel heap |
Tærskel for decommit af frie blokke i kernel-mode heap |
| samme sti | ModifiedWriteMaximum |
REG_DWORD |
1 enhed = 1 MB |
Øvre grænse for modified page writer efter clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Asynkron tilstand i Cache Manager |
| samme sti | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Unmap-vindue bag sekventiel læsning |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Gengivelse af cache-topologi mellem processor groups |
DisablePagingExecutive
Sektion kaldt “DisablePagingExecutive”Hvad den gør
Sektion kaldt “Hvad den gør”Ved 0 kan Windows’ hukommelsesadministrator skrive sektioner af systemkode og drivere, der tillader det, ud til backup-lager. Ved 1 holdes sidebar kode i systemdrivere i fysisk hukommelse.
Læsekoden er fundet i ntoskrnl.exe på et tidligt tidspunkt i kernel-initialiseringen. Værdien bruges i MmResetDriverPaging, MmPageEntireDriver og ved indlæsning af systembilleder. Den anvendes tidligere, end den almindelige brugersporing af registreringsdatabasen begynder. Der kræves en genstart for at anvende den nye tilstand.
Værdier og begrænsninger
Sektion kaldt “Værdier og begrænsninger”0: standardtilstanden i Windows, paging er tilladt.1: sidebare sektioner i systemdrivere holdes i RAM.- Indstillingen bruger RAM for at reducere efterfølgende indlæsning af systemkode tilbage i hukommelsen; selve disken bliver ikke hurtigere.
Indstillingen forhindrer efterfølgende udskrivning og indlæsning af disse driversektioner. Den deaktiverer ikke en separat konstant CPU-kontroltråd. På et moderne system med tilstrækkelig RAM er nytten normalt meget lille: koden kan blive i hukommelsen længe selv uden indstillingen. Ved RAM-mangel forstærker den tvungne tilbageholdelse manglen på hukommelse.
Læsningen af parameteren og retningen af systemeffekten er bekræftet af koden i ntoskrnl.exe.
DisablePageCombining
Sektion kaldt “DisablePageCombining”Hvad den gør
Sektion kaldt “Hvad den gør”Ved 0 starter hukommelsesadministratoren en baggrundsopgave, der søger efter og sammenlægger identiske fysiske sider. Ved 1 udfører denne opgave ikke sammenlægningen.
I ntoskrnl.exe er der fundet kode til baggrundssammenlægning af sider med pool-tag MmCb, hvilket bekræfter, at mekanismen findes.
Værdier og begrænsninger
Sektion kaldt “Værdier og begrænsninger”0: sammenlægning af sider er tilladt, standardtilstanden i Windows.1: sammenlægning er deaktiveret.- Deaktivering reducerer hukommelsesadministratorens baggrundsarbejde, men kan øge RAM-forbruget.
Deaktivering er nyttig, hvis sammenlægning af sider skaber en mærkbar baggrundsbelastning, og systemet har ledig RAM. Normalt er denne opgave ikke særlig aktiv, så effekten er meget lille. Ved begrænset hukommelse er RAM-besparelsen fra sammenlægning mere værd end den sparede processortid.
Læsekoden og baggrundsopgaven er bekræftet i ntoskrnl.exe. Microsoft beskriver sammenlægning af sider og afvejningen mellem processorarbejde og RAM-besparelse.
HeapDeCommitFreeBlockThreshold
Sektion kaldt “HeapDeCommitFreeBlockThreshold”Hvad den gør
Sektion kaldt “Hvad den gør”Værdien angiver tærsklen for frigivelse af allokeret hukommelse (decommit) for en fri blok i kernel-heapen. Ved en højere tærskel forekommer sådanne operationer sjældnere for store frie blokke.
I Windows 11 25H2 findes læsekoden i ntoskrnl.exe, og anvendelsen af parameteren er knyttet til kernel-funktionen RtlCreateHeap. I ntdll.dll er der ikke fundet tilsvarende læsekode for heaps i almindelige processer.
Værdier og begrænsninger
Sektion kaldt “Værdier og begrænsninger”- Standardværdien i koden for kernel-heapen:
0x1000(4 KB). 0x40000(256 KB) er en gyldig tærskel for kernel-heapen.- Historiske Microsoft-dokumenter beskrev et user-mode-scenarie med samme navn fra ældre Windows-versioner, så det kan ikke automatisk overføres til Windows 11 25H2.
For almindelige programmer er der praktisk taget ingen nytte: deres heaps bruger ikke denne værdi. Parameteren kan kun ændre hyppigheden af hukommelsesfrigivelse i kernel-heapen. Uden et målt problem netop med denne er den forventede effekt meget lille.
Læsningen i kernel-mode er bekræftet i ntoskrnl.exe. Effekten for brugerprocesser i 25H2 er ikke bekræftet.
ModifiedWriteMaximum
Sektion kaldt “ModifiedWriteMaximum”Hvad den gør
Sektion kaldt “Hvad den gør”Parameteren angiver den øvre grænse for mekanismen til at skrive ændrede sider (modified page writer). I koden bruges enheder på 256 sider, det vil sige, at en enhed er lig med 1 MB.
Normalisering i Windows 11 25H2:
0konverteres til1enhed, det vil sige 1 MB;- værdier større end
0x40begrænses til0x40; - den maksimale effektive grænse er 64 MB, eller 16 384 sider.
Mekanismen begynder aktiv skrivning omtrent, når en fjerdedel af den angivne grænse nås. En forøgelse af grænsen ændrer tidspunktet for, hvornår skrivningen starter, og mængden af akkumulerede ændrede sider. Selve diskens hastighed øges ikke af dette.
Ved en højere grænse akkumuleres flere ændrede sider, før den aktive skrivning begynder. Skrivningen kan starte sjældnere, men mængden af endnu ikke gemte data og størrelsen af den næste skriveportion vokser. Hvis der ikke er et konkret problem med skrivning, så behold standardværdien. Den effektive grænse er begrænset til 64 MB.
Læsekoden, måleenhederne og begrænsningen af værdiområdet er bekræftet i ntoskrnl.exe. Parameteren med samme navn fra ældre Microsoft-dokumenter om BitLocker tilhører et andet undersystem; disse dokumenter bruges ikke som kilde her.
EnableAsyncLazywrite og relaterede værdier
Sektion kaldt “EnableAsyncLazywrite og relaterede værdier”Hvad den gør
Sektion kaldt “Hvad den gør”EnableAsyncLazywrite styrer Cache Managers asynkrone forsinkede skrivning. I koden for 25H2 er standardværdien 2: denne tilstand er allerede aktiveret.
Relaterede værdier i samme undersystem:
| Value | Default 25H2 | Rolle |
|---|---|---|
EnableAsyncLazywrite |
2 |
Generel async lazy-write mode |
EnableAsyncLazywriteMulti |
2 |
Tilgrænsende multi-volume-tilstand |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 deaktiverer asynkron forsinket skrivning. For 1 kræves tilstanden med en separat handler for forsinket skrivning på hver volume. 2 aktiverer asynkron tilstand uden dette krav. Cache Manager genlæser værdierne, når den arbejder med volume-konfigurationen.
En eksplicit angivelse af 2 gentager standardkonfigurationen i Windows 11 25H2 og forbedrer ikke noget yderligere. Indstillingen er først og fremmest egnet til diagnosticering: værdien 0 gør det muligt at deaktivere den mekanisme, der er aktiv som standard.
Læsningen blev observeret i systemets sporing og bekræftet i ntoskrnl.exe. Standardværdien 2 er bekræftet af koden og af en uafhængig beskrivelse af registreringsparametre udarbejdet på grundlag af reverse engineering.
CacheUnmapBehindLengthInMB
Sektion kaldt “CacheUnmapBehindLengthInMB”Hvad den gør
Sektion kaldt “Hvad den gør”Parameteren angiver afstanden i megabyte, hvorefter Cache Manager frigiver cachede visninger, der er efterladt bag den aktuelle position for sekventiel læsning.
Koden til læsning og anvendelse af parameteren findes i ntoskrnl.exe og kaldes ved visning og læsning af cachen. Parameteren vedrører sekventiel læsning af store filer; den deaktiverer ikke hele filcachen.
Værdier og clamp
Sektion kaldt “Værdier og clamp”0eller en værdi større end128erstattes af koden med8.- Arbejdsområde:
1..128MB. - Kode-default:
8MB. - Registry value-enhederne er netop MB, ikke bytes.
Parameteren giver kun mening for specialiserede opgaver med sekventiel læsning af store filer. Ved et større vindue bevares cachevisningen bag den aktuelle position længere, ved et mindre frigives den tidligere. Til almindeligt arbejde passer standardværdien 8 MB; nytten af manuel indstilling er normalt lille.
Koden til læsning, anvendelse og begrænsning af værdiområdet er bekræftet i ntoskrnl.exe. Der er ikke fundet moderne offentlig Microsoft-dokumentation for denne interne parameter.
SplitLargeCaches
Sektion kaldt “SplitLargeCaches”Hvad den gør
Sektion kaldt “Hvad den gør”Ved 0 returnerer API’en til beskrivelse af cache-topologi en samlet post for den pågældende struktur, der omfatter flere processor groups. Ved 1 opdeles posterne efter processor groups.
Læsekoden findes i ntoskrnl.exe. Parameteren bruges ved behandling af relationen RelationCache i KeQueryLogicalProcessorRelationship.
Kun den topologibeskrivelse, som system-API’en returnerer, ændres. Tildelte fysiske hukommelsesblokke opdeles ikke, og sandsynligheden for mangel på en sammenhængende blok reduceres ikke i sig selv.
Værdier og begrænsninger
Sektion kaldt “Værdier og begrænsninger”0: standardværdien.1: opdel topologiposter efter processor groups.- En praktisk effekt er først og fremmest mulig på systemer med flere processor groups, normalt ved mere end 64 logiske processorer.
- På et almindeligt system med én gruppe er der ingen effekt.
Parameteren er kun nødvendig for programmer, der anmoder om cache-topologien på en maskine med flere processor groups. Den ændrer ikke cache-driften eller hukommelsestildelingen. For en almindelig stationær computer er der ingen nytte.
Koden til læsning og anvendelse er bekræftet i ntoskrnl.exe. Værdien og formålet er sammenholdt med den offentlige beskrivelse af reverse engineering KiSplitLargeCaches.
Samlet nytte
Sektion kaldt “Samlet nytte”| Parameter | Praktisk vurdering |
|---|---|
DisablePagingExecutive |
Giver normalt meget lille nytte ved at holde mere kode i RAM |
DisablePageCombining |
Nyttig ved bekræftet belastning fra baggrundssammenlægning af sider og rigelig ledig RAM |
HeapDeCommitFreeBlockThreshold |
Virker kun i kernen; for almindelige programmer er der ingen praktisk nytte |
ModifiedWriteMaximum |
Ændrer betingelserne for skrivning af ændrede sider; behold standardværdien uden et konstateret problem |
EnableAsyncLazywrite |
Standardværdien 2 aktiverer allerede mekanismen; gentagen angivelse forbedrer intet |
CacheUnmapBehindLengthInMB |
Indstilling for sekventiel læsning; standardværdien 8 MB passer til almindeligt arbejde |
SplitLargeCaches |
Ændrer topologibeskrivelsen for flere processor groups; på et almindeligt system er der ingen effekt |
Hvad er bekræftet, og hvad er ikke målt
Sektion kaldt “Hvad er bekræftet, og hvad er ikke målt”De ovennævnte stier, typer, standardværdier, kode og tidspunkt for parametrenes læsning samt begrænsningerne af værdiområderne er bekræftet. Resultaterne gælder for Windows 11 25H2 build 26200.9168. Adfærden kan afvige ved en anden Windows-opdatering, RAM-mængde, type lagerenhed eller CPU-topologi.
Hvordan den dynamiske del af observationerne gentages — se Sådan kontrollerer du selv.
Gendannelse af tilstand
Sektion kaldt “Gendannelse af tilstand”For at gendanne skal du angive parametrenes standardværdier igen eller slette de valgfrie poster. Nogle af værdierne anvendes ved næste opstart af Windows.
Undersøgelsen og de anvendte værktøjer tilhører udvikleren af BoosterX, så udvikleren har en direkte interesse i resultaterne. Metoden og grænserne for anvendelighed er beskrevet i denne artikel; konklusionerne kan kontrolleres ud fra åbne data og de offentlige kilder, der er anført nedenfor.
Offentlige kilder
Sektion kaldt “Offentlige kilder”- Memory combining, Microsoft Learn: formålet med page combining og CPU/RAM-afvejningen, kontrolleret 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: semantikken i
DisablePagingExecutive, kontrolleret 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, historisk Microsoft-dokumentation: det gamle user-mode-scenarie og tærsklen på 256 KB, kontrolleret 2026-09-01.
- Windows system configuration descriptions, offentlig RE-beskrivelse af
SplitLargeCaches, kontrolleret 2026-09-01.
Udsagn om koden er verificeret ved statisk analyse af systemkomponenter i Windows 11 25H2. Dekompileret kode, offsets, rå sporinger og interne materialer offentliggøres ikke.
Offentlige kilder er kontrolleret: 2026-09-02.
Ændringshistorik
Sektion kaldt “Ændringshistorik”- 2026-09-20: tilføjet ansvarsfraskrivelse om interessekonflikt og link til selvstændig kontrol af dynamiske observationer i metoden.
- 2026-09-02: første offentliggørelse; stier, defaults, clamps og læsekode for parametrene er bekræftet, grænserne for praktisk nytte er tilføjet.
