Memory Manager und System-Cache in Windows: Paging, Page Combining und Lazy Write
Auf dieser Seite
Kurze Antwort
Abschnitt betitelt „Kurze Antwort“In dieser Serie wurden sieben Parameter für Paging, das Zusammenführen identischer Seiten, Kernel-Heaps und den Dateicache geprüft. In Windows 11 25H2 wurde der Lesecode für jeden dieser Parameter gefunden. Der praktische Nutzen hängt vom Parameter und den Betriebsbedingungen ab.
DisablePageCombining deaktiviert das Hintergrund-Zusammenführen von Seiten: Der Speichermanager führt diese Arbeit nicht mehr aus, aber der RAM-Verbrauch kann steigen. DisablePagingExecutive hält auslagerbaren Treibercode im physischen Speicher; der Nutzen ist meist gering. Die übrigen Parameter gelten nur für einzelne Kernel- oder Datenträgeraufgaben oder haben in 25H2 bereits passende Standardwerte.
Was geprüft wurde
Abschnitt betitelt „Was geprüft wurde“Für jeden Wert wurde geprüft:
- der genaue Registry-Pfad und Typ;
- der Standardwert, der durch den Code von Windows 11 25H2 festgelegt wird;
- verwandte Werte derselben Subsystem;
- der System-Lesecode und der Zeitpunkt seiner Ausführung;
- Bereichsgrenzen, Wertumwandlung und Maßeinheiten;
- der direkte Effekt und die Grenzen der Anwendbarkeit.
Neben dem Lesecode wurde geprüft, wo der Parameter angewendet wird, welche Folgen seine Änderung hat und in welchen Szenarien sie nützlich sein kann. Das bloße Vorhandensein eines Parameters reicht für eine Empfehlung nicht aus.
Untersuchungsbereich und Belege
Abschnitt betitelt „Untersuchungsbereich und Belege“- Windows 11 25H2 x64, build
26200.9168. - Die Kernel-Parameter wurden mit der Hauptkonfigurationstabelle
ntoskrnl.exeund dem Code ihrer Anwendung im Memory Manager und Cache Manager abgeglichen. - Zugriffe zur Laufzeit wurden mit einer System-Registry-Trace geprüft. Lesevorgänge in Phase 0 und zu Beginn von Phase 1 können in einer normalen Start-Trace fehlen: Der Trace-Treiber beginnt später mit der Aufzeichnung.
- Für Benutzerprozesse wurde das Lesen des Werts in
ntdll.dllseparat geprüft. FürHeapDeCommitFreeBlockThresholdwurde in 25H2 ein Lesevorgang im Kernel gefunden, aber die Heaps von Benutzerprozessen verwenden diesen Parameter nicht. - Die statische Analyse der Systemkomponenten ersetzt keine Wiederholung auf einem physischen PC, einem anderen build oder einem anderen Datenträgertyp.
Kanonische Parameter
Abschnitt betitelt „Kanonische Parameter“| Registry path | Value | Type | Default Windows 11 25H2 | Anwendung |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Paging pageable-Code von Systemtreibern |
| derselbe Pfad | DisablePageCombining |
REG_DWORD |
0 |
Hintergrund-Zusammenführen identischer physischer Seiten |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) für kernel heap |
Schwellenwert für decommit freier Blöcke des kernel-mode heap |
| derselbe Pfad | ModifiedWriteMaximum |
REG_DWORD |
1 Einheit = 1 MB |
Obergrenze des modified page writer nach clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Asynchroner Modus des Cache Manager |
| derselbe Pfad | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Unmap-Fenster hinter dem sequenziellen Lesen |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Darstellung der cache topology zwischen processor groups |
DisablePagingExecutive
Abschnitt betitelt „DisablePagingExecutive“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“Bei 0 kann der Windows-Speichermanager auslagerbare Abschnitte von Systemcode und Treibern in den Auslagerungsspeicher auslagern. Bei 1 wird auslagerbarer Code von Systemtreibern im physischen Speicher gehalten.
Der Lesecode wurde in ntoskrnl.exe in einer frühen Phase der Kernel-Initialisierung gefunden. Der Wert wird in MmResetDriverPaging, MmPageEntireDriver und beim Laden von Systemabbildern verwendet. Er wird angewendet, bevor die normale Benutzer-Registry-Trace beginnt. Damit der neue Zustand wirksam wird, ist ein Neustart erforderlich.
Werte und Einschränkungen
Abschnitt betitelt „Werte und Einschränkungen“0: Standardzustand von Windows, Paging erlaubt.1: auslagerbare Abschnitte von Systemtreibern werden im RAM gehalten.- Die Einstellung verbraucht RAM, um spätere Ladevorgänge von Systemcode zurück in den Speicher zu verkürzen; der Datenträger selbst wird nicht schneller.
Die Einstellung verhindert das spätere Auslagern und Laden dieser Treiberabschnitte. Einen separaten permanent prüfenden CPU-Thread deaktiviert sie nicht. Auf einem modernen System mit ausreichend RAM ist der Nutzen meist sehr gering: Der Code kann auch ohne die Einstellung lange im Speicher bleiben. Bei RAM-Mangel verstärkt sein erzwungenes Halten den Speichermangel.
Das Lesen des Parameters und die Richtung des Systemeffekts wurden durch den Code von ntoskrnl.exe bestätigt.
DisablePageCombining
Abschnitt betitelt „DisablePageCombining“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“Bei 0 startet der Speichermanager eine Hintergrundaufgabe, die identische physische Seiten sucht und zusammenführt. Bei 1 führt diese Aufgabe keine Zusammenführung aus.
In ntoskrnl.exe wurde der Code für das Hintergrund-Zusammenführen von Seiten mit dem Pool-Tag MmCb gefunden, was das Vorhandensein des Mechanismus bestätigt.
Werte und Einschränkungen
Abschnitt betitelt „Werte und Einschränkungen“0: Zusammenführen von Seiten erlaubt, Standardzustand von Windows.1: Zusammenführen deaktiviert.- Die Deaktivierung reduziert die Hintergrundarbeit des Speichermanagers, kann aber den RAM-Verbrauch erhöhen.
Die Deaktivierung ist nützlich, wenn das Zusammenführen von Seiten eine spürbare Hintergrundlast erzeugt und das System über freien RAM verfügt. Normalerweise ist diese Aufgabe wenig aktiv, daher ist der Effekt sehr gering. Bei begrenztem Speichervolumen ist die RAM-Einsparung durch das Zusammenführen nützlicher als die eingesparte Prozessorzeit.
Der Lesecode und die Hintergrundaufgabe wurden in ntoskrnl.exe bestätigt. Microsoft beschreibt das Zusammenführen von Seiten und den Kompromiss zwischen Prozessorarbeit und RAM-Einsparung.
HeapDeCommitFreeBlockThreshold
Abschnitt betitelt „HeapDeCommitFreeBlockThreshold“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“Der Wert legt den Schwellenwert für die Freigabe (decommit) von zugewiesenem Speicher für einen freien Block des Kernel-Heaps fest. Bei einem größeren Schwellenwert erfolgen solche Vorgänge für große freie Blöcke seltener.
In Windows 11 25H2 befindet sich der Lesecode in ntoskrnl.exe, und die Anwendung des Parameters ist mit der Kernel-Funktion RtlCreateHeap verbunden. In ntdll.dll wurde kein entsprechender Lesecode für Heaps gewöhnlicher Prozesse gefunden.
Werte und Einschränkungen
Abschnitt betitelt „Werte und Einschränkungen“- Standardwert im Code für den Kernel-Heap:
0x1000(4 KB). 0x40000(256 KB) ist ein zulässiger Schwellenwert für den Kernel-Heap.- Historische Microsoft-Dokumente beschrieben ein gleichnamiges User-Mode-Szenario älterer Windows-Versionen, daher kann es nicht automatisch auf Windows 11 25H2 übertragen werden.
Für gewöhnliche Anwendungen gibt es praktisch keinen Nutzen: Ihre Heaps verwenden diesen Wert nicht. Der Parameter kann die Häufigkeit der Speicherfreigabe nur im Kernel-Heap ändern. Ohne ein gemessenes Problem genau damit ist der erwartete Effekt sehr gering.
Das Lesen im Kernel-Modus wurde in ntoskrnl.exe bestätigt. Der Effekt für Benutzerprozesse in 25H2 wurde nicht bestätigt.
ModifiedWriteMaximum
Abschnitt betitelt „ModifiedWriteMaximum“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“Der Parameter legt die Obergrenze für den Mechanismus zum Schreiben geänderter Seiten (modified page writer) fest. Im Code werden Einheiten von 256 Seiten verwendet, das heißt eine Einheit entspricht 1 MB.
Normalisierung in Windows 11 25H2:
0wird in1Einheit umgewandelt, das heißt 1 MB;- Werte größer als
0x40werden auf0x40begrenzt; - die maximal effektive Grenze beträgt 64 MB, oder 16 384 Seiten.
Der Mechanismus beginnt mit dem aktiven Schreiben etwa beim Erreichen eines Viertels des festgelegten Limits. Eine Erhöhung des Limits ändert den Zeitpunkt des Schreibbeginns und das Volumen der angesammelten geänderten Seiten. Die Geschwindigkeit des Datenträgers selbst steigt dadurch nicht.
Bei einem größeren Limit sammeln sich vor Beginn des aktiven Schreibens mehr geänderte Seiten an. Das Schreiben kann seltener ausgelöst werden, aber das Volumen der noch nicht gespeicherten Daten und die Größe der nächsten Schreibcharge wachsen. Wenn kein konkretes Problem mit dem Schreiben vorliegt, lassen Sie den Standardwert. Die effektive Grenze ist auf 64 MB begrenzt.
Der Lesecode, die Maßeinheiten und die Bereichsbegrenzung wurden in ntoskrnl.exe bestätigt. Der gleichnamige Parameter aus alten Microsoft-Dokumenten zu BitLocker gehört zu einem anderen Subsystem; diese Dokumente werden hier nicht als Quelle verwendet.
EnableAsyncLazywrite und verwandte Werte
Abschnitt betitelt „EnableAsyncLazywrite und verwandte Werte“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“EnableAsyncLazywrite steuert das asynchrone verzögerte Schreiben des Cache Manager. Im Code von 25H2 ist der Standardwert 2 festgelegt: Dieser Modus ist bereits aktiviert.
Verwandte Werte desselben Subsystems:
| Value | Default 25H2 | Rolle |
|---|---|---|
EnableAsyncLazywrite |
2 |
Allgemeiner async lazy-write mode |
EnableAsyncLazywriteMulti |
2 |
Benachbarter multi-volume Modus |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 deaktiviert das asynchrone verzögerte Schreiben. Für 1 ist der Modus eines separaten Handlers für verzögertes Schreiben auf jedem Volume erforderlich. 2 aktiviert den asynchronen Modus ohne diese Anforderung. Der Cache Manager liest die Werte bei der Arbeit mit der Volume-Konfiguration erneut.
Das explizite Setzen von 2 wiederholt die Standardkonfiguration von Windows 11 25H2 und verbessert nichts zusätzlich. Die Einstellung eignet sich vor allem zur Diagnose: Der Wert 0 ermöglicht es, den standardmäßig aktiven Mechanismus zu deaktivieren.
Das Lesen wurde in der System-Trace beobachtet und in ntoskrnl.exe bestätigt. Der Standardwert 2 wurde durch den Code und eine unabhängige Beschreibung der Registry-Parameter bestätigt, die anhand der Ergebnisse der Rückwärtsanalyse erstellt wurde.
CacheUnmapBehindLengthInMB
Abschnitt betitelt „CacheUnmapBehindLengthInMB“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“Der Parameter legt den Abstand in Megabyte fest, nach dem der Cache Manager zwischengespeicherte Ansichten freigibt, die hinter der aktuellen Position des sequenziellen Lesens zurückgeblieben sind.
Der Code zum Lesen und Anwenden des Parameters befindet sich in ntoskrnl.exe und wird beim Abbilden und Lesen des Caches aufgerufen. Der Parameter betrifft das sequenzielle Lesen großer Dateien; den gesamten Dateicache deaktiviert er nicht.
Werte und clamp
Abschnitt betitelt „Werte und clamp“0oder ein Wert größer als128wird vom Code durch8ersetzt.- Arbeitsbereich:
1..128MB. - Code-Default:
8MB. - Die Einheiten des Registry value sind MB, nicht Bytes.
Der Parameter ist nur für spezialisierte Aufgaben des sequenziellen Lesens großer Dateien sinnvoll. Bei einem größeren Fenster bleibt die Cache-Abbildung hinter der aktuellen Position länger erhalten, bei einem kleineren wird sie früher freigegeben. Für den normalen Betrieb passt der Standardwert 8 MB; der Nutzen manueller Anpassung ist meist gering.
Der Code zum Lesen, Anwenden und zur Bereichsbegrenzung wurde in ntoskrnl.exe bestätigt. Eine moderne öffentliche Microsoft-Dokumentation für diesen internen Parameter wurde nicht gefunden.
SplitLargeCaches
Abschnitt betitelt „SplitLargeCaches“Was es bewirkt
Abschnitt betitelt „Was es bewirkt“Bei 0 gibt die API zur Beschreibung der Cache-Topologie einen einheitlichen Eintrag für die entsprechende Struktur zurück, die mehrere Prozessorgruppen umfasst. Bei 1 werden die Einträge nach Prozessorgruppen getrennt.
Der Lesecode befindet sich in ntoskrnl.exe. Der Parameter wird bei der Verarbeitung der Beziehung RelationCache in KeQueryLogicalProcessorRelationship verwendet.
Geändert wird nur die Beschreibung der Topologie, die die System-API zurückgibt. Zugewiesene physische Speicherblöcke werden nicht getrennt, und die Wahrscheinlichkeit eines Mangels an einem zusammenhängenden Block verringert sich dadurch nicht von selbst.
Werte und Einschränkungen
Abschnitt betitelt „Werte und Einschränkungen“0: Standardwert.1: Topologie-Einträge nach Prozessorgruppen trennen.- Ein praktischer Effekt ist vor allem auf Systemen mit mehreren Prozessorgruppen möglich, üblicherweise bei mehr als 64 logischen Prozessoren.
- Auf einem gewöhnlichen System mit einer Gruppe gibt es keinen Effekt.
Der Parameter wird nur von Programmen benötigt, die die Cache-Topologie auf einem Rechner mit mehreren Prozessorgruppen abfragen. Die Arbeit des Caches und die Speicherzuweisung ändert er nicht. Für einen gewöhnlichen Desktop-Computer gibt es keinen Nutzen.
Der Code zum Lesen und Anwenden wurde in ntoskrnl.exe bestätigt. Wert und Zweck wurden mit der öffentlichen Beschreibung der Rückwärtsanalyse KiSplitLargeCaches abgeglichen.
Allgemeiner Nutzen
Abschnitt betitelt „Allgemeiner Nutzen“| Parameter | Praktische Bewertung |
|---|---|
DisablePagingExecutive |
Bringt meist sehr geringen Nutzen, indem mehr Code im RAM gehalten wird |
DisablePageCombining |
Nützlich bei bestätigter Last durch das Hintergrund-Zusammenführen von Seiten und großem RAM-Reserve |
HeapDeCommitFreeBlockThreshold |
Wirkt nur im Kernel; für gewöhnliche Anwendungen gibt es keinen praktischen Nutzen |
ModifiedWriteMaximum |
Ändert die Bedingungen für das Schreiben geänderter Seiten; ohne erkanntes Problem lassen Sie den Standardwert |
EnableAsyncLazywrite |
Der Standardwert 2 aktiviert den Mechanismus bereits; erneutes Setzen verbessert nichts |
CacheUnmapBehindLengthInMB |
Einstellung für sequenzielles Lesen; die Standardwerte 8 MB passen für den normalen Betrieb |
SplitLargeCaches |
Ändert die Topologie-Beschreibung für mehrere Prozessorgruppen; auf einem gewöhnlichen System gibt es keinen Effekt |
Was bestätigt wurde und was nicht gemessen wurde
Abschnitt betitelt „Was bestätigt wurde und was nicht gemessen wurde“Bestätigt wurden die oben genannten Pfade, Typen, Standardwerte, der Code und der Zeitpunkt des Lesens der Parameter sowie die Bereichsbegrenzungen. Die Ergebnisse beziehen sich auf Windows 11 25H2 build 26200.9168. Das Verhalten kann bei einem anderen Windows-Update, RAM-Volumen, Datenträgertyp oder einer anderen CPU-Topologie abweichen.
Wie der dynamische Teil der Beobachtungen wiederholt werden kann — siehe Wie man selbst prüft.
Wiederherstellung des Zustands
Abschnitt betitelt „Wiederherstellung des Zustands“Zur Rückkehr stellen Sie die Standardwerte der Parameter wieder her oder löschen Sie die optionalen Einträge. Ein Teil der Werte wird beim nächsten Start von Windows angewendet.
Die Untersuchung und die darin verwendeten Werkzeuge gehören dem Entwickler von BoosterX, daher hat der Entwickler ein direktes Interesse an den Ergebnissen. Die Methodik und die Grenzen der Anwendbarkeit sind in diesem Artikel beschrieben; die Schlussfolgerungen können anhand offener Daten und der unten aufgeführten öffentlichen Quellen überprüft werden.
Öffentliche Quellen
Abschnitt betitelt „Öffentliche Quellen“- Memory combining, Microsoft Learn: Zweck des page combining und CPU/RAM trade-off, geprüft am 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: Semantik von
DisablePagingExecutive, geprüft am 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, historische Microsoft-Dokumentation: altes User-Mode-Szenario und Schwellenwert 256 KB, geprüft am 2026-09-01.
- Windows system configuration descriptions, öffentliche RE-Beschreibung von
SplitLargeCaches, geprüft am 2026-09-01.
Die Aussagen zum Code wurden durch statische Analyse der Systemkomponenten von Windows 11 25H2 geprüft. Dekompilierter Code, Offsets, ursprüngliche Traces und interne Materialien werden nicht veröffentlicht.
Öffentliche Quellen geprüft: 2026-09-02.
Änderungsverlauf
Abschnitt betitelt „Änderungsverlauf“- 2026-09-20: Disclaimer zum Interessenkonflikt und Link zur Selbstprüfung der dynamischen Beobachtungen in der Methodik hinzugefügt.
- 2026-09-02: erste Veröffentlichung; Pfade, defaults, clamps und Lesecode der Parameter bestätigt, Grenzen des praktischen Nutzens hinzugefügt.
