Die Tiefen des Windows-Speichers (Teil 2) — Das Leben einer physischen Seite: fünf Listen und die Wahrheit über die Auslagerungsdatei
· Aktualisiert am: · Go Komura · 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.
- 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.
- 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
- 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.
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
flowchart LR
accTitle: Die drei Seitenlisten, die Available bilden
accDescr: Der verfügbare physische Speicher ist die Summe aus Standby, Free und Zeroed; Active-Seiten, die aus dem Working Set referenziert werden, sind nicht enthalten
standby["Standby (Wiederverwendungskandidat mit Inhalt)"] --> avail["Available (verfügbarer physischer Speicher)"]
free["Free (nicht nullgesetzter freier Speicher)"] --> avail
zeroed["Zeroed (nullgesetzter freier Speicher)"] --> avail
active["Active (im Working Set referenziert)"] -.->|nicht enthalten| avail
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.
flowchart TB
accTitle: Pfade des Zurückschreibens geänderter Seiten
accDescr: Eine 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 Standby
dirty["Geänderte Seite, die das Working Set verlassen hat"] --> modified["Auf der Modified-Liste auf Zurückschreiben warten"]
modified -->|"private Seite (bei konfigurierter Auslagerungsdatei)"| mpw["Modified Page Writer schreibt in die Auslagerungsdatei"]
modified -->|Seite einer zugeordneten Datei| mapped["Mapped Page Writer und Vergleichbare schreiben in die zugehörige Datei"]
mpw --> standby["Nach fertigem Zurückschreiben mit Inhalt nach Standby"]
mapped --> 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.
flowchart LR
accTitle: Drei Rollen der Auslagerungsdatei
accDescr: Die Auslagerungsdatei erweitert das Commit Limit, wird Backing Store selten genutzter geänderter privater Seiten und Aufnahme für Systemabsturzabbilder
pagefile["Auslagerungsdatei"] --> limit["Commit Limit erweitern (Reserve auf der Obergrenze)"]
pagefile --> backing["Backing Store geänderter privater Seiten"]
pagefile --> dump["Aufnahme 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
- System Commit Charge zur Spitze
- 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 BytesMemory\\Commit LimitMemory\\% Committed Bytes In UseMemory\\Modified Page List BytesPaging File(*)\\% UsageMemory\\Available MBytesMemory\\Page Reads/secMemory\\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
- Lesen Sie einmal eine größere lokale Datei.
- Beenden Sie den Lesevorgang und aktualisieren Sie RAMMap. In File Summary oder auf der Standby-Seite können Seiten dieser Datei bleiben.
- 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 BytesMemory\\Commit LimitMemory\\Available MBytesMemory\\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
- Die Tiefen des Windows-Speichers (Teil 1) — Der Moment, in dem eine virtuelle Adresse zu physischem RAM wird
- Was bedeutet Windows’ „Speicherauslastung“ eigentlich?
- Die Tiefen von Windows-I/O (Teil 4) — Cache-Manager: Wann erreicht Ihr WriteFile tatsächlich die Festplatte?
- Einführung in das Sammeln von Windows-Absturzabbildern - WER/ProcDump/WinDbg
- Process Explorer / Handle / VMMap in der Praxis — Hängern, Lecks und „Datei wird verwendet“ vom aktuellen Zustand aus nachjagen
Verwandte Beratungsbereiche
Die KomuraSoft LLC übernimmt Untersuchungen zu Speicherdruck, Commit-Erschöpfung, Paging, wachsendem Working Set und Entwurf der Absturzabbilderfassung in Windows-Anwendungen.
- Windows-App-Entwicklung
- Fehleruntersuchung und Ursachenanalyse
- Nutzung und Migration bestehender Assets
- Kontakt
Referenzlinks
-
Microsoft Learn, MEMORYSTATUSEX structure. Dazu, dass
ullAvailPhysphysischer Speicher ist, der ohne Schreiben auf die Platte sofort wiederverwendbar ist, und die Summe der Listen Standby, Free und Zeroed. ↩ ↩2 ↩3 -
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
-
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
-
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
-
Microsoft Learn, !pfn (WinDbg). Dazu, dass Zustand, Referenzen und PTE-Adresse eines angegebenen PFN-Eintrags angezeigt werden können. ↩
-
Microsoft Learn, !memusage (WinDbg). Dazu, dass Nutzung des physischen Speichers und Seitenzustände wie Zeroed, Free, Standby, Modified und Active zusammengefasst werden können. ↩
-
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
-
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
-
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. ↩
-
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
-
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. ↩ -
Microsoft Learn, Testlimit - Sysinternals. Zur offiziellen Syntax von Testlimit v5.24, in der
-mSpeicher reserviert,-dreserviert und toucht,-edas Zuweisungsintervall und-cdie Zahl der Zuweisungen ist, und-czuletzt steht. ↩
Verwandte Artikel
Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.
Was bedeutet Windows' Speicherauslastung eigentlich? — Working Set, Private Bytes, Commit und die Auslagerungsdatei richtig lesen
Der Speicherwert im Task-Manager, Working Set, Private Bytes und Commit sind nicht dasselbe. Dieser Artikel erklärt das Verhältnis von vi...
Die Tiefen des Windows-Speichers (Teil 1) — Der Moment, in dem eine virtuelle Adresse zu physischem RAM wird: ein Page Fault von Anfang bis Ende
VirtualAlloc, VAD, Seitentabelle, TLB, Demand-Zero und Hard Page Faults verbinden und den Moment erklären, in dem eine virtuelle Adresse ...
Die Tiefen des Windows-Speichers (Teil 3) — Abschnittsobjekte und Copy-on-Write: Was DLLs und Dateizuordnungen wirklich sind
Dieser Artikel verbindet Abschnittsobjekte, Image- und Datenzuordnungen, den gemeinsamen Cache und Copy-on-Write und erklärt, wie DLLs un...
Wie findet eine Windows-Verknüpfung eine verschobene Datei? — Der Ort einer Datei und ihre Identität sind zweierlei
Warum öffnet eine Verknüpfung eine verschobene Datei weiterhin? Windows kann das Ziel über Verfolgungskennungen und Dateimerkmale finden,...
Ist „Hardware sicher entfernen“ bei USB-Sticks heute noch nötig? — Vom schnellen Entfernen und vom Schreibcache her gedacht
Dürfen Sie den USB-Stick abziehen, sobald das Kopieren fertig ist? Schreibcache, Schnelles Entfernen gegenüber Bessere Leistung, wie Sie ...
Verwandte Themen
Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.
Technische Windows-Themen
Portal zu Windows-Entwicklung, Fehleranalyse und der Nutzung bestehender Assets.
Leistungen zu diesem Thema
Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.
Windows-App-Entwicklung
Geschäftsanwendungen, Geräteintegration und Kommunikationstools von den Anforderungen bis zur Umsetzung.
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.