Menedżer pamięci i pamięć podręczna systemu Windows: stronicowanie, łączenie stron i zapis leniwy
Na tej stronie
Krótka odpowiedź
Dział zatytułowany „Krótka odpowiedź”W tej serii sprawdzono siedem parametrów: stronicowania, łączenia identycznych stron, sterty jądra i bufora plików. W Windows 11 25H2 znaleziono kod odczytu każdego z nich. Praktyczna korzyść zależy od parametru i warunków pracy.
DisablePageCombining wyłącza tło łączenie stron: menedżer pamięci przestaje wykonywać tę pracę, ale zużycie RAM może wzrosnąć. DisablePagingExecutive utrzymuje wyładowywalny kod sterowników w pamięci fizycznej; korzyść jest zwykle niewielka. Pozostałe parametry mają zastosowanie tylko do wybranych zadań jądra lub nośników albo mają już odpowiednie wartości domyślne w 25H2.
Co sprawdzano
Dział zatytułowany „Co sprawdzano”Dla każdej wartości sprawdzano:
- dokładną ścieżkę w rejestrze i typ;
- wartość domyślną ustawioną przez kod Windows 11 25H2;
- powiązane wartości tego samego podsystemu;
- kod odczytu w systemie i moment jego wykonania;
- ograniczenia zakresu, konwersję wartości i jednostki miary;
- bezpośredni efekt i granice stosowalności.
Oprócz kodu odczytu sprawdzaliśmy, gdzie parametr jest stosowany, jakie skutki ma jego zmiana i w jakich scenariuszach może być przydatny. Samo istnienie parametru nie wystarcza do rekomendacji.
Zakres badania i dowody
Dział zatytułowany „Zakres badania i dowody”- Windows 11 25H2 x64, build
26200.9168. - Parametry jądra porównano z główną tabelą konfiguracji
ntoskrnl.exei kodem ich zastosowania w Memory Manager i Cache Manager. - Odwołania w czasie pracy sprawdzano śledzeniem rejestru w systemie. Odczyty w fazie 0 i na początku fazy 1 mogą być nieobecne w zwykłym śladzie rozruchu: sterownik śledzenia zaczyna zapis później.
- Dla procesów użytkownika osobno sprawdzano odczyt wartości w
ntdll.dll. DlaHeapDeCommitFreeBlockThresholdw 25H2 znaleziono odczyt w jądrze, ale sterty procesów użytkownika nie używają tego parametru. - Analiza statyczna komponentów systemowych nie zastępuje powtórzenia na fizycznym PC, innym buildzie lub innym typie nośnika.
Parametry kanoniczne
Dział zatytułowany „Parametry kanoniczne”| Registry path | Value | Type | Default Windows 11 25H2 | Zastosowanie |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Stronicowanie wyładowywalnego kodu sterowników systemowych |
| ta sama ścieżka | DisablePageCombining |
REG_DWORD |
0 |
Tło łączenie identycznych stron fizycznych |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) dla kernel heap |
Próg decommit wolnych bloków kernel-mode heap |
| ta sama ścieżka | ModifiedWriteMaximum |
REG_DWORD |
1 jednostka = 1 MB |
Górny limit modified page writer po clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Asynchroniczny tryb Cache Manager |
| ta sama ścieżka | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Okno unmap za kolejnym odczytem |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Reprezentacja cache topology między processor groups |
DisablePagingExecutive
Dział zatytułowany „DisablePagingExecutive”Co robi
Dział zatytułowany „Co robi”Przy 0 menedżer pamięci Windows może wyładowywać dopuszczające to sekcje kodu systemowego i sterowników do magazynu zapasowego. Przy 1 wyładowywalny kod sterowników systemowych jest utrzymywany w pamięci fizycznej.
Kod odczytu znaleziono w ntoskrnl.exe na wczesnym etapie inicjalizacji jądra. Wartość jest używana w MmResetDriverPaging, MmPageEntireDriver i przy ładowaniu obrazów systemowych. Jest stosowana wcześniej, niż zaczyna się zwykłe śledzenie rejestru w trybie użytkownika. Do zastosowania nowego stanu wymagane jest ponowne uruchomienie.
Wartości i ograniczenia
Dział zatytułowany „Wartości i ograniczenia”0: standardowy stan Windows, stronicowanie dozwolone.1: wyładowywalne sekcje sterowników systemowych są utrzymywane w RAM.- Ustawienie zużywa RAM, aby skrócić późniejsze ładowanie kodu systemowego z powrotem do pamięci; sam dysk nie działa szybciej.
Przydatność
Dział zatytułowany „Przydatność”Ustawienie zapobiega późniejszemu wyładowaniu i ładowaniu tych sekcji sterowników. Nie wyłącza osobnego stale sprawdzającego wątku CPU. Na nowoczesnym systemie z wystarczającą ilością RAM korzyść jest zwykle bardzo mała: kod i bez ustawienia może długo pozostawać w pamięci. Przy niedoborze RAM jego wymuszone utrzymywanie pogłębia deficyt pamięci.
Odczyt parametru i kierunek efektu systemowego potwierdzono kodem ntoskrnl.exe.
DisablePageCombining
Dział zatytułowany „DisablePageCombining”Co robi
Dział zatytułowany „Co robi”Przy 0 menedżer pamięci uruchamia zadanie w tle, które wyszukuje i łączy identyczne strony fizyczne. Przy 1 to zadanie nie wykonuje łączenia.
W ntoskrnl.exe znaleziono kod tła łączenia stron z tagiem puli MmCb, co potwierdza istnienie mechanizmu.
Wartości i ograniczenia
Dział zatytułowany „Wartości i ograniczenia”0: łączenie stron dozwolone, standardowy stan Windows.1: łączenie wyłączone.- Wyłączenie zmniejsza pracę menedżera pamięci w tle, ale może zwiększyć zużycie RAM.
Przydatność
Dział zatytułowany „Przydatność”Wyłączenie jest przydatne, jeśli łączenie stron tworzy zauważalne obciążenie w tle, a system ma wolny RAM. Zwykle to zadanie jest mało aktywne, więc efekt jest bardzo niewielki. Przy ograniczonej ilości pamięci oszczędność RAM z łączenia jest bardziej przydatna niż zaoszczędzony czas procesora.
Kod odczytu i zadania w tle potwierdzono w ntoskrnl.exe. Microsoft opisuje łączenie stron i kompromis między pracą procesora a oszczędnością RAM.
HeapDeCommitFreeBlockThreshold
Dział zatytułowany „HeapDeCommitFreeBlockThreshold”Co robi
Dział zatytułowany „Co robi”Wartość określa próg zwalniania przydzielonej pamięci (decommit) dla wolnego bloku sterty jądra. Przy większym progu takie operacje dla dużych wolnych bloków występują rzadziej.
W Windows 11 25H2 kod odczytu znajduje się w ntoskrnl.exe, a zastosowanie parametru jest związane z funkcją jądra RtlCreateHeap. W ntdll.dll nie znaleziono odpowiedniego kodu odczytu dla stert zwykłych procesów.
Wartości i ograniczenia
Dział zatytułowany „Wartości i ograniczenia”- Wartość domyślna w kodzie dla sterty jądra:
0x1000(4 KB). 0x40000(256 KB) jest dopuszczalnym progiem dla sterty jądra.- Historyczne dokumenty Microsoft opisywały scenariusz user-mode o tej samej nazwie ze starych wersji Windows, dlatego nie można go automatycznie przenosić na Windows 11 25H2.
Przydatność
Dział zatytułowany „Przydatność”Dla zwykłych aplikacji korzyści praktycznie nie ma: ich sterty nie używają tej wartości. Parametr może zmieniać częstotliwość zwalniania pamięci tylko w stercie jądra. Bez zmierzonego problemu właśnie z nią oczekiwany efekt jest bardzo mały.
Odczyt w trybie jądra potwierdzono w ntoskrnl.exe. Efekt dla procesów użytkownika w 25H2 nie został potwierdzony.
ModifiedWriteMaximum
Dział zatytułowany „ModifiedWriteMaximum”Co robi
Dział zatytułowany „Co robi”Parametr określa górny limit dla mechanizmu zapisu zmienionych stron (modified page writer). W kodzie używane są jednostki po 256 stron, czyli jedna jednostka równa się 1 MB.
Normalizacja w Windows 11 25H2:
0jest przekształcane w1jednostkę, czyli 1 MB;- wartości większe niż
0x40są ograniczane do0x40; - maksymalny efektywny limit wynosi 64 MB, czyli 16 384 strony.
Mechanizm zaczyna aktywne zapisywanie w przybliżeniu po osiągnięciu jednej czwartej ustalonego limitu. Zwiększenie limitu zmienia moment rozpoczęcia zapisu i ilość nagromadzonych zmienionych stron. Szybkość samego dysku od tego nie rośnie.
Przydatność
Dział zatytułowany „Przydatność”Przy większym limicie do rozpoczęcia aktywnego zapisu gromadzi się więcej zmienionych stron. Zapis może uruchamiać się rzadziej, ale ilość jeszcze niezapisanych danych i rozmiar następnej porcji zapisu rosną. Jeśli nie ma konkretnego problemu z zapisem, pozostaw wartość domyślną. Efektywny limit jest ograniczony do 64 MB.
Kod odczytu, jednostki miary i ograniczenie zakresu potwierdzono w ntoskrnl.exe. Parametr o tej samej nazwie ze starych dokumentów Microsoft o BitLocker dotyczy innego podsystemu; te dokumenty nie są tu używane jako źródło.
EnableAsyncLazywrite i powiązane wartości
Dział zatytułowany „EnableAsyncLazywrite i powiązane wartości”Co robi
Dział zatytułowany „Co robi”EnableAsyncLazywrite steruje asynchronicznym odroczonym zapisem Cache Manager. W kodzie 25H2 ustawiono wartość domyślną 2: ten tryb jest już włączony.
Powiązane wartości tego samego podsystemu:
| Value | Default 25H2 | Rola |
|---|---|---|
EnableAsyncLazywrite |
2 |
Ogólny async lazy-write mode |
EnableAsyncLazywriteMulti |
2 |
Sąsiedni multi-volume tryb |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 wyłącza asynchroniczny odroczony zapis. Dla 1 wymagany jest tryb osobnego programu obsługi odroczonego zapisu na każdym woluminie. 2 włącza tryb asynchroniczny bez tego wymogu. Cache Manager odczytuje wartości ponownie podczas pracy z konfiguracją woluminów.
Przydatność
Dział zatytułowany „Przydatność”Jawne ustawienie 2 powtarza standardową konfigurację Windows 11 25H2 i niczego dodatkowo nie poprawia. Ustawienie nadaje się przede wszystkim do diagnostyki: wartość 0 pozwala wyłączyć mechanizm działający domyślnie.
Odczyt zaobserwowano w śledzeniu systemowym i potwierdzono w ntoskrnl.exe. Wartość domyślna 2 została potwierdzona kodem i niezależnym opisem parametrów rejestru sporządzonym na podstawie wyników inżynierii odwrotnej.
CacheUnmapBehindLengthInMB
Dział zatytułowany „CacheUnmapBehindLengthInMB”Co robi
Dział zatytułowany „Co robi”Parametr określa odległość w megabajtach, po której Cache Manager zwalnia zbuforowane widoki pozostawione za bieżącą pozycją odczytu sekwencyjnego.
Kod odczytu i zastosowania parametru znajduje się w ntoskrnl.exe i jest wywoływany przy mapowaniu i odczycie bufora. Parametr dotyczy sekwencyjnego odczytu dużych plików; nie wyłącza całego bufora plików.
Wartości i clamp
Dział zatytułowany „Wartości i clamp”0lub wartość większa niż128jest zastępowana przez kod wartością8.- Zakres roboczy:
1..128MB. - Domyślna wartość w kodzie:
8MB. - Jednostki Registry value to właśnie MB, a nie bajty.
Przydatność
Dział zatytułowany „Przydatność”Parametr ma sens tylko dla specjalistycznych zadań sekwencyjnego odczytu dużych plików. Przy większym oknie mapowanie bufora za bieżącą pozycją jest utrzymywane dłużej, przy mniejszym jest zwalniane wcześniej. Do zwykłej pracy odpowiednia jest standardowa wartość 8 MB; korzyść z ręcznego ustawienia jest zwykle mała.
Kod odczytu, zastosowania i ograniczenia zakresu potwierdzono w ntoskrnl.exe. Nie znaleziono współczesnej publicznej dokumentacji Microsoft dla tego wewnętrznego parametru.
SplitLargeCaches
Dział zatytułowany „SplitLargeCaches”Co robi
Dział zatytułowany „Co robi”Przy 0 API opisu topologii bufora zwraca pojedynczy wpis dla odpowiedniej struktury obejmującej kilka grup procesorów. Przy 1 wpisy są rozdzielane według grup procesorów.
Kod odczytu znajduje się w ntoskrnl.exe. Parametr jest używany przy przetwarzaniu relacji RelationCache w KeQueryLogicalProcessorRelationship.
Zmienia się tylko opis topologii zwracany przez API systemowe. Przydzielone fizyczne bloki pamięci nie są rozdzielane, a prawdopodobieństwo niedoboru ciągłego bloku samo w sobie się nie zmniejsza.
Wartości i ograniczenia
Dział zatytułowany „Wartości i ograniczenia”0: wartość domyślna.1: rozdzielać wpisy topologii według grup procesorów.- Praktyczny efekt jest możliwy przede wszystkim w systemach z kilkoma grupami procesorów, zwykle przy więcej niż 64 procesorach logicznych.
- W zwykłym systemie z jedną grupą efekt nie występuje.
Przydatność
Dział zatytułowany „Przydatność”Parametr jest potrzebny tylko programom, które odpytują topologię bufora na maszynie z kilkoma grupami procesorów. Nie zmienia pracy bufora ani przydzielania pamięci. Dla zwykłego komputera stacjonarnego korzyści nie ma.
Kod odczytu i zastosowania potwierdzono w ntoskrnl.exe. Wartość i przeznaczenie zweryfikowano z publicznym opisem inżynierii odwrotnej KiSplitLargeCaches.
Ogólna przydatność
Dział zatytułowany „Ogólna przydatność”| Parametr | Ocena praktyczna |
|---|---|
DisablePagingExecutive |
Zwykle daje bardzo małą korzyść, utrzymując więcej kodu w RAM |
DisablePageCombining |
Przydatny przy potwierdzonym obciążeniu tła łączenia stron i dużym zapasie RAM |
HeapDeCommitFreeBlockThreshold |
Działa tylko w jądrze; dla zwykłych aplikacji nie ma praktycznej korzyści |
ModifiedWriteMaximum |
Zmienia warunki zapisu zmienionych stron; bez wykrytego problemu pozostaw standardową wartość |
EnableAsyncLazywrite |
Standardowa wartość 2 już włącza mechanizm; ponowny zapis niczego nie poprawia |
CacheUnmapBehindLengthInMB |
Ustawienie odczytu sekwencyjnego; standardowe 8 MB są odpowiednie do zwykłej pracy |
SplitLargeCaches |
Zmienia opis topologii dla kilku grup procesorów; w zwykłym systemie efektu nie ma |
Co potwierdzono, a czego nie mierzono
Dział zatytułowany „Co potwierdzono, a czego nie mierzono”Potwierdzono podane wyżej ścieżki, typy, wartości domyślne, kod i moment odczytu parametrów, a także ograniczenia zakresów. Wyniki dotyczą Windows 11 25H2 build 26200.9168. Zachowanie może się różnić przy innej aktualizacji Windows, ilości RAM, typie nośnika lub topologii CPU.
Jak powtórzyć dynamiczną część obserwacji — zobacz Jak sprawdzić samodzielnie.
Przywracanie stanu
Dział zatytułowany „Przywracanie stanu”Aby przywrócić, ustaw standardowe wartości parametrów lub usuń opcjonalne wpisy. Część wartości jest stosowana przy następnym rozruchu Windows.
Badanie i użyte w nim narzędzia należą do dewelopera BoosterX, dlatego deweloper ma bezpośredni interes w wynikach. Metodyka i granice stosowalności są opisane w tym artykule; wnioski można sprawdzić na podstawie otwartych danych i wymienionych poniżej publicznych źródeł.
Publiczne źródła
Dział zatytułowany „Publiczne źródła”- Memory combining, Microsoft Learn: przeznaczenie page combining i kompromis CPU/RAM, sprawdzono 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: semantyka
DisablePagingExecutive, sprawdzono 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, historyczna dokumentacja Microsoft: stary scenariusz user-mode i próg 256 KB, sprawdzono 2026-09-01.
- Windows system configuration descriptions, publiczny opis RE
SplitLargeCaches, sprawdzono 2026-09-01.
Twierdzenia o kodzie zweryfikowano analizą statyczną komponentów systemowych Windows 11 25H2. Zdekompilowany kod, offsety, surowe ślady i materiały wewnętrzne nie są publikowane.
Publiczne źródła sprawdzono: 2026-09-02.
Historia zmian
Dział zatytułowany „Historia zmian”- 2026-09-20: dodano zastrzeżenie o konflikcie interesów i link do samodzielnego sprawdzenia dynamicznych obserwacji w metodyce.
- 2026-09-02: pierwsza publikacja; potwierdzono ścieżki, defaults, clamps i kod odczytu parametrów, dodano granice praktycznej przydatności.
