Die Tiefen des Windows-Speichers (Teil 2) — Das Leben einer physischen Seite: fünf Listen und die Wahrheit über die Auslagerungsdatei

· Aktualisiert am: · · Windows, Speicherverwaltung, Auslagerungsdatei, Working Set, Standby, RAMMap, Leistungsüberwachung

Änderungsverlauf (Erstfassung, veröffentlicht am 20. Aug 2026)
Erstveröffentlichung
Diesen Artikel zitieren(DOI (registriertes Archiv): 10.5281/zenodo.22176102)

Die folgenden DOIs verweisen auf bereits archivierte Versionen, die vom aktuellen Text abweichen können. Verwenden Sie die URL dieser Seite, um auf den aktuellen Text zu verweisen.

Go Komura (2026). Die Tiefen des Windows-Speichers (Teil 2) — Das Leben einer physischen Seite: fünf Listen und die Wahrheit über die Auslagerungsdatei. KomuraSoft LLC. https://comcomponent.com/de/blog/windows-memory-internals-page-lifecycle-pagefile/

DOI (registriertes Archiv)
10.5281/zenodo.22176102
DOI (zuletzt registrierte Version)
10.5281/zenodo.22279017

„Das Working Set ist geschrumpft. Liegt die Seite dann nicht mehr im RAM?“ Teil 2 verfolgt diese Frage von der Seite der physischen Seite aus.

Im vorherigen Artikel „Die Tiefen des Windows-Speichers (Teil 1) — Der Moment, in dem eine virtuelle Adresse zu physischem RAM wird“ sind wir so weit gefolgt, bis der Seitenfehler-Handler beim ersten Anfassen einer committeten Seite eine physische Seite zuweist. Auch nach dem Verlassen des Working Set verschwindet diese Seite nicht unbedingt sofort, und sie wandert nicht unbedingt sofort in die Auslagerungsdatei.

Eine unveränderte Seite kann mit erhaltenem Inhalt nach Standby wandern. Eine geänderte Seite wartet zuerst auf Modified auf das Zurückschreiben. Bei der Wiederverwendung kann sie Free oder Zeroed durchlaufen, und wenn dieselben Inhalte wieder gebraucht werden, kann sie per Soft Fault aus Standby zurückkehren.

Dieser Artikel nimmt die PFN-Datenbank als Achse und folgt wie eine einzelne physische Seite durch Active, Modified, Standby, Free und Zeroed wandert. Das Lesen der Zahlen selbst setzt den Einführungsartikel „Was bedeutet Windows’ „Speicherauslastung“ eigentlich?“ voraus.

„Die Tiefen des Windows-Speichers“ — alle 3 Teile

Diese Reihe geht in der Reihenfolge eine physische Seite erhalten → dem Fluss von Residenthalten und Rückgewinnung folgen → Teilen und Privatisieren verstehen vor.

Teil Thema Was dieser Teil verfolgt
Teil 1 Virtuelle Adressen und Seitenfehler Wann ein mit VirtualAlloc angelegter Bereich physischen RAM erhält
Teil 2 (dieser Artikel) Das Leben einer physischen Seite Die Zustandsübergänge einer Seite, die das Working Set verlässt, und die Rolle der Auslagerungsdatei
Teil 3 Abschnittsobjekte und Copy-on-Write Wie DLLs, Dateizuordnungen und gemeinsamer Speicher physische Seiten teilen

Die Frage, die Teil 2 beantwortet, ist nur eine.

Verschwindet eine physische Seite, die das Working Set verlässt, geht sie auf die Platte, oder bleibt sie im RAM?

Bevor Sie lesen Inhalt
Zielgruppe Entwickler und Betrieb, die vom Mechanismus her verstehen wollen, warum Available hoch ist und Standby ebenfalls, das Verhalten nach Working-Set-Trim, die Auslagerungsdatei-Konfiguration und Speicherkompression
Voraussetzungen Windows 10/11 oder aktuelles Windows Server
Erforderlicher Hintergrund Grundlagen von Working Set, Commit sowie Soft-/Hard-Faults
Schwierigkeit Mittelstufe. Wir verwenden interne Begriffe wie PFN und Seitenlisten

Ohne Kernel-Debugger konzentrieren wir uns auf das, was sich mit RAMMap und PerfMon beobachten lässt.

In der Abbildung kennzeichnet eine durchgezogene Linie eine stets geltende Beziehung und eine gestrichelte Linie eine bedingte (die Bedingungen stehen bei jeder Beziehung auf der Detailseite). Die vollständige Liste der Beziehungen (18 insgesamt, mit Beleg und Sicherheitsgrad) und die Definitionen der wichtigsten Konzepte sind auf der Detailseite der Wissenskarte (auf Japanisch) zusammengestellt. Daten: JSON-LD / Turtle

1. Zuerst das Fazit

Wohin eine physische Seite geht, lässt sich in drei Punkten ordnen.

  1. Das Working Set zu verlassen und den Inhalt zu verlieren, sind verschiedene Dinge. Eine saubere Seite bleibt auf Standby und kann ohne Plattenlesen zurückkehren, wenn dieselben Inhalte gebraucht werden. Eine geänderte Seite wird erst wiederverwendet, nachdem der Inhalt in der Auslagerungsdatei oder der zugehörigen Datei gehalten werden kann.
  2. Standby ist Cache und zugleich Available. Sie behält den vorherigen Inhalt, kann aber für einen anderen Zweck wiederverwendet werden, sobald er gebraucht wird. Available enthält Standby, Free und Zeroed.1
  3. Die Auslagerungsdatei stützt nicht nur das Schreiben, sondern auch Commit und Abbilder. Das Schreiben ist keine Sammelverarbeitung nach vollständiger RAM-Erschöpfung, sondern läuft im Hintergrund je nach Modified-Liste und Speicherdruck. Deaktivieren behebt kein Leck und kann Commit Limit, Wahlmöglichkeiten der RAM-Wiederverwendung und die Fähigkeit, Abbilder zu erzeugen, verringern.234

In einem Satz: Windows prüft, bevor es eine Seite verwirft, ob sie wieder gebraucht werden kann und wo sich der ursprüngliche Inhalt wiederherstellen lässt.

Was Sie wissen wollen Abschnitt
Wohin eine Seite nach dem Verlassen des Working Set geht Abschnitte 2 bis 6
Unterschiede von Standby, Free, Zeroed und Kompression Abschnitte 7 bis 8
Ob und in welcher Größe eine Auslagerungsdatei nötig ist Abschnitte 9 bis 10
Mit RAMMap oder Testlimit nachprüfen Abschnitte 11 bis 12

2. Die PFN-Datenbank — das Verzeichnis auf der Seite des physischen RAM

Die PTE aus Teil 1 stand für die Umsetzung von virtueller Seite zu physischer Seite. Dasselbe von der physischen Seite aus zu betrachten und zu verfolgen, „wofür diese RAM-Seite gerade verwendet wird“, ist die PFN-Datenbank. PFN ist die Abkürzung für Page Frame Number, die Nummerierung des physischen RAM in Seiten.

Ein PFN-Eintrag verfolgt begrifflich die folgenden Informationen.

  • den aktuellen Zustand der physischen Seite
  • Referenz- und Share-Zählungen
  • die zugehörige PTE
  • ob sie geändert ist
  • welcher Seitenliste sie angehört
  • Informationen zu NUMA-Knoten und Priorität

Wählen Sie die Anzeige des Werkzeugs nach der betrachteten Granularität. Mit WinDbg und RAMMap können Sie wie folgt prüfen.567

Was Sie prüfen wollen Anzeige / Befehl
Informationen zu einer bestimmten PFN !pfn in WinDbg
Nutzung des physischen Speichers und Zusammenfassung der Seitenlisten !memusage in WinDbg
Verwendung und Seitenlisten Use Counts in RAMMap
Standby nach Priorität Priority Summary in RAMMap
Nutzung je Seite Physical Pages in RAMMap

Mit RAMMap können Sie ohne Kernel-Debugger beobachten.

3. Fünf Zustände auf einem Blatt verbinden

Hier vereinfachen wir den Fluss einer physischen Seite auf fünf Zustände. Lesen Sie zuerst danach, ob sie jetzt verwendbar ist, ob sie Inhalt behält und ob vor der Wiederverwendung Vorbereitung nötig ist.

Zustand Lesart in diesem Teil
Active / Valid Über eine gültige PTE aus dem Working Set und Vergleichbarem referenziert
Modified Geändert, wartet auf Zurückschreiben
Standby Wiederverwendungskandidat, der den vorherigen Inhalt behält
Free Zuweisbar, aber alte Bitfolgen können bleiben
Zeroed Nullgesetzt und als neue Benutzermodusseite übergebbar

Das ist keine Abbildung aller Zustände. Aktuelles Windows hat auch priorisierte Standby-Listen, Transition, Bad und mehr. Active ist außerdem weniger eine einzelne „Active-Liste“ als der Zustand, über eine gültige PTE referenziert zu werden. Mit dieser Unterscheidung nutzen wir die Abbildung, um das Speicherverhalten einer App zu verfolgen.

Vereinfachte Abbildung, wie eine physische Windows-Seite durch Active, Modified, Standby, Free und Zeroed wandert

Abbildung 1: Eine im Working Set referenzierte Seite wandert, wenn sie sauber ist, nach Standby, wenn sie dirty ist, nach Modified. Bei denselben Inhalten kehrt sie zurück; für einen anderen Zweck wird sie direkt wiederverwendet oder geht über Free/Zeroed, wenn Nullsetzen nötig ist.

Mermaid-Quelle zu Abbildung 1
flowchart LR
    zeroed["Zeroed\nnullgesetzt"] -->|erster Touch| active["Active / Valid\nim Working Set referenziert"]
    active -->|sauber trimmen| standby["Standby\nWiederverwendungskandidat mit Inhalt"]
    active -->|dirty trimmen| modified["Modified\nwartet auf Zurückschreiben"]
    modified -->|Zurückschreiben fertig| standby
    standby -->|Rückkehr per Soft Fault| active
    standby -->|alte Identität verwerfen| free["Free\nnicht nullgesetzt"]
    standby -->|direkte Wiederverwendung für anderen Zweck| active
    free -->|für Zuweisung, die Null braucht| zeroed

Zwei Punkte soll die Abbildung festhalten.

Auch nach dem Verlassen des Working Set geht der Inhalt nicht unbedingt verloren. Werden dieselben Inhalte wieder gebraucht, kann die verbliebene Seite zurückkehren.

Auch bei Wiederverwendung für einen anderen Zweck durchläuft sie nicht unbedingt Free/Zeroed der Reihe nach. Soll sie als neue Demand-Zero-Privatseite an den Benutzermodus gehen, muss der alte Inhalt verschwinden. Für einen Zweck, der die ganze Seite überschreibt, etwa das Einlesen von Dateiinhalt, kann die Standby-Identität entfernt und die Seite direkt wiederverwendet werden.

4. Active / Valid — die physische Seite, die jetzt referenzierbar ist

Eine Active/Valid-Seite wird über eine gültige PTE aus dem Working Set des Prozesses oder dem Systemraum referenziert. Die CPU erreicht sie über die gewöhnliche Adressumsetzung, deshalb braucht dieser Zugriff selbst keinen Seitenfehler.

Es gibt jedoch keine Garantie, dass die Seite Active bleibt. Der Speicher-Manager trimmt Kandidatenseiten, um verfügbaren Speicher zu halten, anhand der Working-Set-Größe und der kürzlichen Nutzung. Auch Microsofts Working-Set-Erläuterung beschreibt, dass der Speicher-Manager Seiten aus dem Working Set entfernt, um verfügbaren Speicher zu erzeugen.8

4.1. Trim ist keine Freigabe

Was Working-Set-Trim ändert, ist vor allem der residente Zustand, der jetzt über eine gültige PTE referenzierbar ist. Die folgenden vier sind jeweils getrennte Ereignisse.

  • aus dem Working Set entfernen
  • Commit freigeben
  • den virtuellen Adressbereich freigeben
  • die Originaldaten verlieren

Auch EmptyWorkingSet oder „Trim Working Set“ in einem Werkzeug ersetzen weder VirtualFree noch Heap-Freigabe. Wird dieselbe Seite wieder angefasst, kehrt sie per Soft Fault aus Standby oder per Hard Fault aus dem Backing Store zurück. „Das Working Set ist kleiner geworden“ bedeutet deshalb nicht „ein Leck ist behoben“.

5. Eine saubere Seite geht nach Standby

Auch wenn eine Seite das Working Set verlässt, kann sie nach Standby, wenn der Inhalt noch mit der Originaldatei übereinstimmt oder bereits einen sicheren Backing Store hat. Typische Beispiele:

  • unveränderter EXE-/DLL-Code
  • eine unveränderte speicherabgebildete Datei
  • eine bereits zurückgeschriebene private Seite
  • Daten, die im Dateicache bleiben

Zu denselben Inhalten zurückkehren oder für einen anderen Zweck verwenden

Eine Standby-Seite behält die Zuordnung zum vorherigen Inhalt. Brauchen derselbe oder ein anderer Prozess diesen Inhalt, kann sie solange sie noch nicht wiederverwendet wurde allein durch Wiederverbinden der PTE per Soft Fault zurückkehren.

Braucht andererseits eine andere Zuweisung eine physische Seite, kann die alte Standby-Identität verworfen und die Seite wiederverwendet werden. Braucht das Ziel eine nullinitialisierte private Benutzermodusseite, wird Zeroed vorbereitet; für einen Zweck, der die ganze Seite überschreibt, etwa Dateiinhalt, kann ohne Nullsetzen direkt neu zugewiesen werden.

Diese Doppelgesichtigkeit ist der Grund, warum Standby Cache und zugleich Available ist.

5.1. Warum Available Standby enthält

MEMORYSTATUSEX.ullAvailPhys steht für physischen Speicher, der ohne Schreiben auf die Platte sofort wiederverwendbar ist, und ist die Summe aus Standby, Free und Zeroed.1

Die drei Seitenlisten, die Available bildenDer verfügbare physische Speicher ist die Summe aus Standby, Free und Zeroed; Active-Seiten, die aus dem Working Set referenziert werden, sind nicht enthaltennicht enthaltenStandby (Wiederverwendungskandidat mit Inhalt)Available (verfügbarer physischer Speicher)Free (nicht nullgesetzter freier Speicher)Zeroed (nullgesetzter freier Speicher)Active (im Working Set referenziert)

Abbildung 2: Available ist die Summe aus Standby, Free und Zeroed. Auch Standby, das den Inhalt behält, zählt als „verfügbar“.

Deshalb ist die Anzeige im Task-Manager „Free ist wenig, Cached/Standby ist viel, Available reicht“ kein Widerspruch.

Windows lässt freien RAM nicht brachliegen und behält kürzlich verwendete Dateien und Code auf Standby. Denselben Inhalt bedient es als Cache, einen anderen Zweck durch Wiederverwendung.

Urteilen Sie nicht „wenig Free, also sofort Speichermangel“. Betrachten Sie Available, Commit, Hard Faults und Verzögerungen gemeinsam.

6. Eine dirty Seite wartet auf Modified

Schreibt eine App in eine Seite, stimmt der Inhalt nicht mehr mit dem ursprünglichen Backing Store überein. Überschreibt man diese dirty Seite sofort für einen anderen Zweck, gehen Daten verloren. Deshalb wartet eine geänderte Seite, die das Working Set verlassen hat, auf Modified auf das Zurückschreiben.

Das Ziel des Zurückschreibens hängt von der Art der Seite ab.

Art der Seite Typisches Ziel des Zurückschreibens
Private committete Seite Auslagerungsdatei
Schreibbare zugeordnete Datei Die zugehörige Datendatei
Dirty Daten des Dateicaches Die zugehörige Datendatei
Saubere EXE-/DLL-Seite Kein Zurückschreiben nötig. Neu einlesbar aus dem Originalimage

Auch Microsofts Erläuterung der Auslagerungsdatei sagt, dass .dll, .exe und gewöhnliche Dateien, die bereits auf der Platte existieren, nicht zusätzlich in die Auslagerungsdatei geschrieben werden müssen, und dass geänderte Daten ohne Originalkopie auf der Platte die Kandidaten der Auslagerungsdatei sind.3

6.1. Modified Page Writer

Der Modified Page Writer ist ein Systemworker des Speicher-Managers, der dateigestützte dirty Seiten der Auslagerungsdatei durchläuft und in die Auslagerungsdatei schreibt.4 Auf der Seite zugeordneter Dateien gibt es Pfade wie den Mapped Page Writer, der mit Dateisystem und Cache Manager zusammen in die zugehörige Datei zurückschreibt.

Das Schreiben ist kein Verfahren, das „nichts tut, bis der RAM 0 Byte hat“. Je nach Modified-Liste, Available und Zustand der Auslagerungsdatei bereitet es im Hintergrund Seiten vor, die später wiederverwendet werden können.

Ist das Zurückschreiben fertig und gibt es keine weitere gültige Referenz, kann die Seite mit erhaltenem Inhalt nach Standby.

Pfade des Zurückschreibens geänderter SeitenEine geänderte Seite, die das Working Set verlassen hat, wartet auf der Modified-Liste; private Seiten schreibt der Modified Page Writer in die Auslagerungsdatei, wenn sie konfiguriert ist, Seiten zugeordneter Dateien schreiben Mapped Page Writer und Vergleichbare in die zugehörige Datendatei, danach gehen sie mit erhaltenem Inhalt nach Standbyprivate Seite (bei konfigurierter Auslagerungsdatei)Seite einer zugeordneten DateiGeänderte Seite, die das Working Set verlassen hatAuf der Modified-Liste auf Zurückschreiben wartenModified Page Writer schreibt in die AuslagerungsdateiMapped Page Writer und Vergleichbare schreiben in die zugehörige DateiNach fertigem Zurückschreiben mit Inhalt nach Standby

Abbildung 3: Das Ziel des Zurückschreibens hängt von der Art der Seite ab, und beide Pfade laufen im Hintergrund. In einem System ohne Auslagerungsdatei fehlt das Ziel für private Seiten, deshalb bleiben geänderte private Seiten im RAM.

6.2. Seitenausgabe und auslagerungsdateispezifische E/A trennen

Zähler lesen Sie getrennt nach Zahl der E/A und Zahl der Seiten.

Zähler Was er zählt
Memory\\Page Writes/sec Zahl der Paging-Schreib-E/A, die physischen Speicher freimachen
Memory\\Pages Output/sec Zahl der Seiten, die diese Schreibvorgänge auf die Platte gebracht haben
Memory\\Page Reads/sec Zahl der Plattenlese-E/A zur Auflösung eines Hard Fault
Memory\\Pages Input/sec Zahl der Seiten, die diese Lesevorgänge in den RAM gebracht haben

Eine weitere Unterscheidung: Paging-E/A und auslagerungsdateispezifische E/A sind nicht dasselbe.

Page Writes/sec und Pages Output/sec können auch auf dem Pfad steigen, der dirty Seiten zugeordneter Dateien zurückschreibt. Die Eingangsseite unterscheidet Auslagerungsdatei, DLL, EXE und speicherabgebildete Datei nicht.3

Um die E/A von pagefile.sys selbst festzumachen, schätzen Sie nicht allein aus diesen vier Zählern, sondern zeichnen File I/O und Disk I/O mit ETW/WPA auf. Ordnen Sie FileObject und FileName einander zu und bestätigen Sie die Zieldatei.9

Noch ein Punkt: Vorab in die Auslagerungsdatei zu schreiben heißt nicht, sofort von der Platte zurückzulesen. Wird nicht zugegriffen, kann die zurückgeschriebene Seite aus dem RAM, und physischer Speicher geht an häufiger genutzte Seiten.

7. Unterschiede von Standby, Free und Zeroed

7.1. Standby

Der Zustand, der die Zuordnung zum vorherigen Inhalt behält.

  • Dieselben Inhalte können per Soft Fault zurückkehren
  • Für einen anderen Zweck kann die alte Identität verworfen und wiederverwendet werden
  • Es gibt priorisierte Standby-Listen

7.2. Free

Die gültige Zuordnung zum vorherigen Inhalt ist verloren, die Seite ist zuweisbar. Im Seiteninneren können jedoch alte Bitfolgen bleiben. Eine unveränderte Übergabe an den Benutzermodus riskiert, Informationen des vorherigen Prozesses preiszugeben.

7.3. Zeroed

Der Inhalt ist null, die Seite kann als neue Benutzermodusseite sicher übergeben werden. Der Demand-Zero-Fault aus Teil 1 war das typische Beispiel, eine verfügbare Zeroed-Seite zu holen und an die PTE zu binden. Die Vorbereitung von Free nach Zeroed folgt Bedarf und Systemzustand.

„Free“ und „Zeroed“ wirken also beide leer, unterscheiden sich aber in der sicherheitsbezogenen Bereitschaft.

8. Der Speicherkompressionsspeicher — im RAM ein weiteres Ziel anlegen

Der Speicher-Manager von Windows 10 und später kann bei Speicherdruck selten genutzte Seiten statt sofort auf die Platte im RAM komprimieren. Diese Menge komprimierter Seiten ist der compression store.

8.1. Wo die Kompressionsmenge zu sehen ist

In der frühen Implementierung von Windows 10 wurde der Kompressionsspeicher im Working Set des System-Prozesses gezählt; in aktuellem Windows erscheint in der Prozessliste der Debug-Werkzeuge ein eigener Prozess Memory Compression. Deshalb dürfen Sie die heutige Kompressionsmenge nicht allein am Working Set des System-Prozesses verfolgen. Das Ziel, mehr Apps im physischen Speicher zu halten und Platten-E/A zu senken, ist unverändert.1011

8.2. Auch Kompression hat Kosten und keine feste Reihenfolge

Die folgenden Punkte sollten Sie festhalten.

  • Auch komprimierte Seiten nutzen RAM
  • Komprimieren und Expandieren kosten CPU
  • Kompression löscht die Commit-Zusage nicht
  • Es gibt keine feste Reihenfolge „zuerst komprimieren, dann Auslagerungsdatei“
  • Die Richtlinie ändert sich nach Art der Seite, Druck und Zugriffshistorie

„In Verwendung (komprimiert)“ im Task-Manager bedeutet nicht, dass physischer Speicher durch Kompression vollständig frei geworden ist. Der Kompressionsspeicher macht die Auslagerungsdatei nicht überflüssig; er fügt zwischen RAM und Speicher eine Wahl, E/A mit CPU zu senken, hinzu.

9. Die eigentliche Rolle der Auslagerungsdatei

Die Auslagerungsdatei hat mindestens drei Rollen.

Drei Rollen der AuslagerungsdateiDie Auslagerungsdatei erweitert das Commit Limit, wird Backing Store selten genutzter geänderter privater Seiten und Aufnahme für SystemabsturzabbilderAuslagerungsdateiCommit Limit erweitern (Reserve auf der Obergrenze)Backing Store geänderter privater SeitenAufnahme für Systemabsturzabbilder

Abbildung 4: Die Rolle der Auslagerungsdatei ist nicht nur „langsames RAM“. Auch bei Nutzung 0 stützt sie Obergrenze und Abbild.

9.1. Das Commit Limit erweitern

Das Commit Limit des Systems ergibt sich grob aus RAM plus allen Auslagerungsdateien. Ohne Auslagerungsdatei sinkt es auf ein Niveau etwas unter dem eingebauten RAM. Erreicht Commit Total die Obergrenze, scheitert neues Commit und kann zu Abstürzen von Apps und Systemstörungen führen.2

Das ist etwas anderes als „wie viele GB gerade in pagefile.sys geschrieben werden“. Die Auslagerungsdatei ist auch Reserve auf der Obergrenze, die die Zusage Commit stützt.

9.2. Geänderte private Seiten stützen

Stützt die Auslagerungsdatei selten genutzte geänderte private Seiten, können deren physische Seiten aus dem RAM, und häufiger genutzter Code und Daten rücken nach.2 Ohne Auslagerungsdatei schrumpft die Wahl, solche Seiten aus dem RAM zu nehmen. „Kein Page-out, also schnell“ gilt nicht einfach.

9.3. Systemabsturzabbilder stützen

Um bei einem Systemabsturz Memory.dmp zu erzeugen, braucht es eine Auslagerungsdatei oder eine eigene Dump-Datei, die die gewählte Dump-Art tragen kann.3 Vollständiges Speicherabbild, Kernel-Speicherabbild und automatisches Speicherabbild brauchen unterschiedliche Mengen.

In einer Umgebung, die Abstürze untersucht, kann das Löschen der Auslagerungsdatei allein zur Kapazitätsersparnis dazu führen, dass genau dann kein Beleg bleibt, wenn er am nötigsten ist. Die Sammelverfahren behandelt auch „Einführung in das Sammeln von Windows-Absturzabbildern“.

10. Die richtige Größe ist nicht einheitlich

Die Größe der Auslagerungsdatei sollten Sie nicht allein mit einer festen Formel wie „das 1,5-Fache des RAM“ festlegen. Microsoft erklärt, dass die richtige Größe je System von den folgenden zwei Punkten abhängt und nicht verallgemeinert werden kann.3

  1. System Commit Charge zur Spitze
  2. das benötigte Systemabsturzabbild

In der Praxis denken Sie in dieser Reihenfolge.

10.1. Zuerst die Systemverwaltung als Maßstab

Der Windows-Standard ist systemverwaltet. Er wächst und schrumpft je nach eingebautem RAM, Commit-Bedarf und Anforderungen an Absturzabbilder. Ohne besondere Einschränkung oder Messergebnis ist das der sichere Anfang.

10.2. Spitzen-Commit unter repräsentativer Last messen

Sammeln Sie in PerfMon über längere Zeit die folgenden Zähler.

  • Memory\\Committed Bytes
  • Memory\\Commit Limit
  • Memory\\% Committed Bytes In Use
  • Memory\\Modified Page List Bytes
  • Paging File(*)\\% Usage
  • Memory\\Available MBytes
  • Memory\\Page Reads/sec
  • Memory\\Page Writes/sec

Der Sammelzeitraum sollte tatsächliche Spitzen enthalten: Monatsabschluss, Sicherung, Build, gleichzeitige Nutzung durch mehrere Benutzer.

Allein eine hohe Nutzung der Auslagerungsdatei beweist kein Speicherleistungsproblem. Ein Zustand, der an der Obergrenze klebt, ist jedoch eine Warnung vor Kapazitätsmangel. Sehen Sie gemeinsam, ob Commit an die Obergrenze drängt, Modified massenhaft wartet und die Platte gesättigt ist.3

10.3. Die Abbildanforderung zuerst festlegen

Legen Sie fest, ob ein vollständiges Speicherabbild nötig ist, ob ein Kernel-Speicherabbild reicht oder eine eigene Dump-Datei genutzt wird. Wechseln Sie zu fester Größe, muss sie neben Spitzen-Commit auch die Abbildanforderung erfüllen.

11. Mit eigenen Augen nachprüfen

11.1. Seitenlisten in RAMMap ansehen

Starten Sie RAMMap als Administrator und öffnen Sie zuerst Use Counts.7 Die zu betrachtenden Einträge sind:

  • Active
  • Standby
  • Modified
  • Modified no write
  • Free
  • Zeroed

In Priority Summary sehen Sie, dass Standby nach Priorität getrennt ist. Processes zeigt das Working Set jedes Prozesses, File Summary und File Details verfolgen Dateidaten im RAM.

Dieselbe Datei zweimal lesen und die verbliebenen Seiten ansehen

  1. Lesen Sie einmal eine größere lokale Datei.
  2. Beenden Sie den Lesevorgang und aktualisieren Sie RAMMap. In File Summary oder auf der Standby-Seite können Seiten dieser Datei bleiben.
  3. Lesen Sie dieselbe Datei erneut. Noch nicht wiederverwendete Seiten können ohne oder mit wenig Platten-E/A zurückkehren.

Speicherdruck, Virenschutz und Dateigröße ändern das Ergebnis. Betrachten Sie eher die Richtung des Zustandsübergangs als eine einzelne Zahl.

Empty nicht als Leistungsverbesserung auf dem Produktivrechner verwenden

Das Menü Empty in RAMMap ändert den Systemzustand künstlich. Löschen Sie Standby nicht als Leistungsverbesserung auf dem Produktivrechner, sondern nur in einer isolierten Prüfumgebung.

11.2. Mit Testlimit Commit und Touch trennen

Testlimit ist ein Sysinternals-Werkzeug, das Ressourcenmangel bei Speicher, Handles, Prozessen, Threads und mehr nachbildet. Führen Sie zuerst auf der vorliegenden Binärdatei das Folgende aus und prüfen Sie angezeigte Version und usage.

.\\testlimit64.exe -?

Version und Syntax prüfen, dann versuchen

Das Folgende gilt für Testlimit v5.24. In der offiziellen Syntax von v5.24 ist -m [MB] Reservierung der angegebenen Menge, -d [MB] Reservierung und Touch, -e [seconds] das Zuweisungsintervall und -c [count] die Zahl der Zuweisungen. -c steht zuletzt. Weicht die Anzeige vor Ort ab, hat dieses usage Vorrang.12

Dann versuchen Sie klein in einer Wegwerf-VM.

# -m 64: 64 MiB reservieren, -e 1: 1-Sekunden-Intervall, -c 8: nach 8 Mal anhalten
.\\testlimit64.exe -m 64 -e 1 -c 8

# Dieselbe Zahl und dasselbe Intervall, mit -d jeden Bereich touchen
.\\testlimit64.exe -d 64 -e 1 -c 8

Während der Ausführung zeichnen Sie gleichzeitig auf:

  • „ committiert X/Y“ im Task-Manager
  • Active, Modified, Standby in RAMMap
  • Memory\\Committed Bytes
  • Memory\\Commit Limit
  • Memory\\Available MBytes
  • Memory\\Modified Page List Bytes

Erschöpfung nur in einer VM mit Snapshot nachbilden

Wenn Sie Commit-Erschöpfung wirklich nachbilden, tun Sie das nicht auf dem Host-PC, sondern in einer VM mit Snapshot und steigern die Zahl schrittweise. Ein Lauf, der bis zur Obergrenze automatisch reserviert, kann Bildschirmstillstand, Prozessabstürze und fehlende Protokolle auslösen. Das Ziel ist nicht, das OS instabil zu machen, sondern zu beobachten, dass neues Commit scheitert, wenn das Commit Limit näher rückt.

12. Vier Fehllektüren, die Sie in der Praxis vermeiden sollten

12.1. „Viel Standby, also Speicherleck“

Standby ist wiederverwendbarer Cache und in Available enthalten. Ein Leck beurteilen Sie danach, ob die Baseline des prozesseigenen Commit und die Zuweisungsaufteilung nach Ende der Last weiter steigen.

12.2. „Das Working Set kürzen behebt das Leck“

Trim ändert nur den residenten Zustand und gibt weder Commit noch virtuelle Zuweisung frei. Bei erneutem Zugriff kommt die Seite per Fault zurück.

12.3. „Nutzung der Auslagerungsdatei 0, also überflüssig“

Die Auslagerungsdatei stützt nicht nur die aktuelle Schreibmenge, sondern Commit Limit und Absturzabbilder. Allein anhand der normalen Nutzung zu löschen, verliert Reserve zur Spitze und Belege bei Störungen.

12.4. „Zuerst Speicherkompression, dann immer die Auslagerungsdatei“

Kompression ist keine feste serielle Pipeline. Windows wählt dynamisch nach Art der Seite, Kompressionseffizienz, CPU-Last, Speicherdruck und Vorhandensein eines Backing Store.

13. Zusammenfassung

  • Die PFN-Datenbank ist das Verzeichnis, das Besitz, Referenzen, Änderung und Listenstatus physischer Seiten verfolgt.
  • Eine saubere Seite, die das Working Set verlässt, bleibt auf Standby und kann bei Bedarf per Soft Fault zurückkehren.8
  • Eine dirty Seite wartet auf Modified und wird in die Auslagerungsdatei geschrieben, wenn sie privat ist, in die zugehörige Datei, wenn sie zugeordnet ist.4
  • Available ist die Summe aus Standby, Free und Zeroed; viel Standby allein ist kein Speichermangel.1
  • Speicherkompression komprimiert Seiten im RAM, um E/A zu senken, löscht aber die Rollen von Commit und Auslagerungsdatei nicht.10
  • Die Auslagerungsdatei stützt Commit Limit, geänderte private Seiten und Systemabsturzabbilder.23
  • Die richtige Größe ergibt sich aus Spitzen-Commit und Abbildanforderung, nicht aus einem einheitlichen Faktor.3
  • Working-Set-Trim und das Löschen von Standby sind keine Korrektur eines Speicherlecks.

Weiter geht es in Teil 3 „Abschnittsobjekte und Copy-on-Write: Was DLLs und Dateizuordnungen wirklich sind“.

Wir verfolgen, warum Dateiseiten und DLLs, die auf Standby bleiben, von mehreren Prozessen als dieselbe physische Seite sichtbar sind.

Verwandte Artikel

Verwandte Beratungsbereiche

Die KomuraSoft LLC übernimmt Untersuchungen zu Speicherdruck, Commit-Erschöpfung, Paging, wachsendem Working Set und Entwurf der Absturzabbilderfassung in Windows-Anwendungen.

  1. Microsoft Learn, MEMORYSTATUSEX structure. Dazu, dass ullAvailPhys physischer Speicher ist, der ohne Schreiben auf die Platte sofort wiederverwendbar ist, und die Summe der Listen Standby, Free und Zeroed. ↩ ↩2 ↩3

  2. Microsoft Learn, Introduction to page files. Dazu, dass die Auslagerungsdatei selten genutzte geänderte Seiten aus dem RAM nimmt, das Commit Limit erweitert und Systemabsturzabbilder stützt. ↩ ↩2 ↩3 ↩4

  3. Microsoft Learn, How to determine the appropriate page file size for 64-bit versions of Windows. Dazu, dass die richtige Größe von Spitzen-Commit und Absturzabbildanforderung abhängt und nicht verallgemeinert werden kann, sowie zu Modified-Liste, Nutzung der Auslagerungsdatei, zugehörigen Zählern und systemverwalteter Auslagerungsdatei. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  4. Microsoft Learn, Data corruption on IO write. Dazu, dass der Modified Page Writer ein Systemworker des Speicher-Managers ist und dateigestützte dirty Seiten der Auslagerungsdatei durchläuft und schreibt. ↩ ↩2 ↩3

  5. Microsoft Learn, !pfn (WinDbg). Dazu, dass Zustand, Referenzen und PTE-Adresse eines angegebenen PFN-Eintrags angezeigt werden können. ↩

  6. Microsoft Learn, !memusage (WinDbg). Dazu, dass Nutzung des physischen Speichers und Seitenzustände wie Zeroed, Free, Standby, Modified und Active zusammengefasst werden können. ↩

  7. Microsoft Learn, RAMMap - Sysinternals. Dazu, dass Use Counts, Processes, Priority Summary, Physical Pages, File Summary und File Details von RAMMap Verwendung des physischen Speichers und Seitenlisten anzeigen. ↩ ↩2

  8. Microsoft Learn, Working Set. Dazu, dass der Speicher-Manager das Working Set trimmt, um verfügbaren Speicher zu erzeugen, und dass Seiten, die in Transition oder im Working Set eines anderen Prozesses bleiben, per Soft Fault aufgelöst werden können. ↩ ↩2

  9. Microsoft Learn, FileIo_Name class. Dazu, dass ETW-File-I/O-Ereignisse FileObject und FileName haben und FileObject mit Disk-I/O-Ereignissen zugeordnet die E/A der Zieldatei identifiziert. ↩

  10. Windows Insider Blog, Announcing Windows 10 Insider Preview Build 10525. Dazu, dass die frühe compression-store-Implementierung von Windows 10 die Menge komprimierter Seiten im RAM in das Working Set des System-Prozesses legte und das Schreiben auf die Platte senkte. ↩ ↩2

  11. Microsoft Learn, Find Process ID (PID) in Windows. Dazu, dass in einem Prozesslistenbeispiel der aktuellen Debugging Tools for Windows unter System ein Memory Compression-Prozess mit eigener PID erscheint. ↩

  12. Microsoft Learn, Testlimit - Sysinternals. Zur offiziellen Syntax von Testlimit v5.24, in der -m Speicher reserviert, -d reserviert und toucht, -e das Zuweisungsintervall und -c die Zahl der Zuweisungen ist, und -c zuletzt steht. ↩

Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.

Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.

Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.

Häufige Fragen

Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.

Wird eine Seite sofort in die Auslagerungsdatei geschrieben, sobald sie das Working Set verlässt?
Nein. Eine unveränderte Seite wandert mit erhaltenem Inhalt nach Standby und wird ein sofort wiederverwendbarer Cache. Eine geänderte Seite wandert nach Modified und geht nach dem bedarfsweisen Zurückschreiben in die Auslagerungsdatei oder die zugehörige Datei in einen wiederverwendbaren Zustand wie Standby über.
Enthält „Verfügbar“ im Task-Manager Standby-Speicher?
Ja. Der verfügbare physische Speicher, den Windows meldet, ist die Summe aus Standby, Free und Zeroed. Standby hält noch alte Inhalte, zählt aber als verfügbarer Speicher, weil er bei Bedarf sofort für einen anderen Zweck wiederverwendet werden kann.
Beginnt das Schreiben in die Auslagerungsdatei erst, wenn der RAM vollständig erschöpft ist?
Nein. Windows schreibt selten genutzte geänderte Seiten im Hintergrund zurück, abhängig von der Modified-Liste und dem Zustand des verfügbaren Speichers. Es ist kein einfacher Mechanismus, der absolute Erschöpfung abwartet und dann alles auf einmal verdrängt.
Wird Windows schneller, wenn man die Auslagerungsdatei deaktiviert?
Das lässt sich nicht allgemein behaupten. Das Deaktivieren senkt das Commit Limit, erschwert das Entfernen selten genutzter geänderter Seiten aus dem RAM und wirkt sich auch auf Systemabsturzabbilder aus. Normalerweise belässt man sie systemverwaltet und entscheidet anhand von Spitzen-Commit und Abbildanforderungen.
Macht Speicherkompression die Auslagerungsdatei überflüssig?
Sie wird nicht überflüssig. Ein Kompressionsspeicher komprimiert Seiten im RAM, um E/A zu verringern, aber komprimierte Seiten nutzen weiterhin physischen Speicher und ersetzen die Commit-Garantie nicht. Die Wahl zwischen Kompression und Auslagerung ist eine dynamische Richtlinie des Speicher-Managers.

Autorenprofil

Profilseite des Artikelautors.

Go Komura

Geschäftsführer von KomuraSoft LLC

Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.

Zurück zum Blog