RAM, virtueller Arbeitsspeicher, Auslagerungsdatei und Speicherverwaltung unter Windows

Gilt für: Windows 7 Service Pack 1, Windows Server 2012 R2
Ursprüngliche KB-Nummer: 2160852

Zusammenfassung

Dieser Artikel enthält grundlegende Informationen zur Implementierung des virtuellen Speichers in 32-Bit-Versionen von Windows.

In modernen Betriebssystemen wie Windows verweisen Anwendungen und viele Systemprozesse immer mithilfe von virtuellen Speicheradressen auf den Arbeitsspeicher. Virtuelle Speicheradressen werden von der Hardware automatisch in echte (RAM)-Adressen übersetzt. Nur Kernteile des Betriebssystemkernels umgehen diese Adressübersetzung und verwenden echte Speicheradressen direkt.

Der virtuelle Arbeitsspeicher wird immer verwendet, auch wenn der von allen ausgeführten Prozessen benötigte Arbeitsspeicher das auf dem System installierte RAM-Volumen nicht überschreitet.

Prozesse und Adressräume

Allen Prozessen (z. B. ausführbaren Anwendungsdateien), die unter 32-Bit-Versionen von Windows ausgeführt werden, werden virtuelle Speicheradressen (ein virtueller Adressraum) zugewiesen, die von 0 bis 4.294.967.295 (2* 32-1 = 4 GB) reichen, unabhängig davon, wie viel RAM auf dem Computer installiert ist.

In der Windows-Standardkonfiguration sind 2 Gigabyte (GB) dieses virtuellen Adressraums für die private Verwendung der einzelnen Prozesse vorgesehen, und die anderen 2 GB werden von allen Prozessen und dem Betriebssystem gemeinsam genutzt. In der Regel verwenden Anwendungen (z. B. Editor, Word, Excel und Acrobat Reader) nur einen Bruchteil der 2 GB privaten Adressraums. Das Betriebssystem weist RAM-Seitenframes nur den verwendeten virtuellen Speicherseiten zu.

Die Physische Adresserweiterung (Physical Address Extension, PAE) ist das Feature der Intel 32-Bit-Architektur, die die Adresse des physischen Speichers (RAM) auf 36 Bits erweitert. PAE ändert nicht die Größe des virtuellen Adressraums (der bei 4 GB verbleibt), sondern nur das Tatsächliche RAM-Volumen, das vom Prozessor adressiert werden kann.

Die Übersetzung zwischen der virtuellen 32-Bit-Speicheradresse, die von dem Code verwendet wird, der in einem Prozess ausgeführt wird, und der 36-Bit-RAM-Adresse wird automatisch und transparent von der Computerhardware gemäß den Vom Betriebssystem verwalteten Übersetzungstabellen verarbeitet. Jede virtuelle Speicherseite (32-Bit-Adresse) kann jeder physischen RAM-Seite (36-Bit-Adresse) zugeordnet werden.

In der folgenden Liste wird beschrieben, wie viel RAM die verschiedenen Windows-Versionen und -Editionen (stand Mai 2010) unterstützen:

Windows-Version RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

Auslagerungsdatei

RAM ist eine begrenzte Ressource, während für die meisten praktischen Zwecke der virtuelle Arbeitsspeicher unbegrenzt ist. Es kann viele Prozesse geben, und jeder Prozess verfügt über einen eigenen privaten virtuellen Adressraum von 2 GB. Wenn der von allen vorhandenen Prozessen genutzte Arbeitsspeicher den verfügbaren ARBEITSSPEICHER überschreitet, verschiebt das Betriebssystem Seiten (4-KB-Teile) eines oder mehrerer virtueller Adressräume auf die Festplatte des Computers. Dadurch wird dieser RAM-Frame für andere Zwecke freigegeben. In Windows-Systemen werden diese ausgelagerten Seiten in einer oder mehreren Dateien (Pagefile.sys Dateien) im Stammverzeichnis einer Partition gespeichert. Jede Datenträgerpartition kann eine solche Datei enthalten. Der Speicherort und die Größe der Auslagerungsdatei werden in den Systemeigenschaften konfiguriert (klicken Sie auf Erweitert, klicken Sie auf Leistung, und klicken Sie dann auf die Schaltfläche Einstellungen ).

Benutzer fragen häufig , wie groß sollte ich die Auslagerungsdatei machen? Es gibt keine einzige Antwort auf diese Frage, da sie von der Menge des installierten RAM und davon abhängt, wie viel virtueller Arbeitsspeicher diese Workload benötigt. Wenn keine weiteren Informationen verfügbar sind, ist die typische Empfehlung des 1,5-fachen installierten RAM ein guter Ausgangspunkt. Auf Serversystemen möchten Sie in der Regel über ausreichend RAM verfügen, damit nie ein Mangel besteht und die Auslagerungsdatei nicht verwendet wird. Auf diesen Systemen kann es keinen nützlichen Zweck erfüllen, eine große Auslagerungsdatei zu verwalten. Wenn andererseits genügend Speicherplatz vorhanden ist, führt die Verwaltung einer großen Auslagerungsdatei (z. B. das 1,5-fache des installierten RAM) nicht zu einem Problem, und dies entfällt auch die Notwendigkeit, sich darüber Gedanken darüber zu machen, wie groß sie machen soll.

Leistung, Architekturlimits und RAM

Bei steigender Auslastung (Anzahl der Benutzer, Arbeitsvolumen) nimmt die Leistung auf jedem Computersystem ab, jedoch auf nicht lineare Weise. Jeder Anstieg der Last oder des Bedarfs, der über einen bestimmten Punkt hinausgeht, führt zu einem erheblichen Leistungsabfall. Dies bedeutet, dass einige Ressourcen kritisch knapp sind und zu einem Engpass geworden sind.

Irgendwann kann die knappe Ressource nicht mehr erhöht werden. Dies bedeutet, dass eine architektonische Grenze erreicht wurde. Zu den häufig gemeldeten Architekturgrenzwerten in Windows gehören:

  • 2 GB freigegebener virtueller Adressraum für das System (Kernel)
  • 2 GB privater virtueller Adressraum pro Prozess (Benutzermodus)
  • 660 MB PTE-Systemspeicher (Windows Server 2003 und früher)
  • 470 MB ausgelagerter Poolspeicher (Windows Server 2003 und früher)
  • 256 MB nicht ausgelagerter Poolspeicher (Windows Server 2003 und früher)

Dies gilt speziell für Windows Server 2003, aber dies kann auch für Windows XP und Windows 2000 gelten. Windows Vista, Windows Server 2008 und Windows 7 teilen jedoch nicht alle diese Architekturgrenzwerte. Die Grenzwerte für Benutzer- und Kernelspeicher (hier Zahlen 1 und 2) sind identisch, aber Kernelressourcen wie PTEs und verschiedene Speicherpools sind dynamisch. Diese neue Funktion ermöglicht sowohl ausgelagerten als auch nicht ausgelagerten Speicher. Dadurch können AUCH PTEs und Sitzungspools über die zuvor erläuterten Grenzwerte hinaus wachsen, bis der gesamte Kernel erschöpft ist.

Häufig gefundene und in Anführungszeichen angegebene Anweisungen wie die folgenden:

Bei einem Terminalserver werden die 2 GB freigegebenen Adressraum vollständig genutzt, bevor 4 GB RAM verwendet werden.

Dies kann in einigen Fällen der Fall sein. Sie müssen Ihr System jedoch überwachen, um zu wissen, ob sie für Ihr bestimmtes System gelten oder nicht. In einigen Fällen sind diese Aussagen Schlussfolgerungen aus bestimmten Windows NT 4.0- oder Windows 2000-Umgebungen und gelten nicht unbedingt für Windows Server 2003. An Windows Server 2003 wurden erhebliche Änderungen vorgenommen, um die Wahrscheinlichkeit zu verringern, dass diese Architekturgrenzwerte in der Praxis tatsächlich erreicht werden. Beispielsweise wurden einige Prozesse, die sich im Kernel befanden, in Nicht-Kernel-Prozesse verschoben, um den im freigegebenen virtuellen Adressraum verwendeten Arbeitsspeicher zu reduzieren.

Überwachen der RAM- und Virtual Memory-Auslastung

Leistungsmonitor ist das grundlegende Tool zur Überwachung der Systemleistung und zur Identifizierung des Engpasses. Um Leistungsmonitor zu starten, klicken Sie auf Start, klicken Sie auf Systemsteuerung, klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Leistungsmonitor. Hier ist eine Zusammenfassung einiger wichtiger Indikatoren und deren Informationen:

  • Arbeitsspeicher, Zugesicherte Bytes: Dieser Indikator ist ein Maß für den Bedarf an virtuellem Arbeitsspeicher.

    Dies zeigt, wie viele Bytes von Prozessen zugeordnet wurden und für die das Betriebssystem einen RAM-Seitenrahmen oder einen Seitenslot in der Seitendatei (oder vielleicht beides) committet hat. Wenn zugesicherte Bytes größer als der verfügbare RAM sind, nimmt das Paging zu, und die verwendete Auslagerungsdateigröße nimmt ebenfalls zu. Irgendwann beginnt die Pagingaktivität, die Leistung erheblich zu beeinträchtigen.

  • Prozess, Arbeitssatz, _Total: Dieser Indikator ist ein Maß für den virtuellen Speicher, der aktiv verwendet wird.

    Dieser Leistungsindikator zeigt an, wie viel RAM erforderlich ist, damit sich der virtuelle Speicher, der für alle Prozesse verwendet wird, im RAM befindet. Dieser Wert ist immer ein Vielfaches von 4.096. Dies ist die seitengröße, die in Windows verwendet wird. Wenn die Nachfrage nach virtuellem Arbeitsspeicher über den verfügbaren ARBEITSSPEICHER hinaus zunimmt, passt das Betriebssystem den Umfang des virtuellen Arbeitsspeichers eines Prozesses im Arbeitssatz an, um die verfügbare RAM-Nutzung zu optimieren und die Auslagerung zu minimieren.

  • Auslagerungsdatei, %Pagefile wird verwendet: Dieser Indikator ist ein Maß dafür, wie viel der Seitendatei tatsächlich verwendet wird.

    Verwenden Sie diesen Leistungsindikator, um zu bestimmen, ob die Auslagerungsdatei eine geeignete Größe aufweist. Wenn dieser Zähler 100 erreicht, ist die Auslagerungsdatei voll, und alles funktioniert nicht mehr. Abhängig von der Volatilität Ihrer Workload möchten Sie wahrscheinlich, dass die Auslagerungsdatei groß genug ist, sodass sie nicht mehr als 50 bis 075 Prozent verwendet wird. Wenn ein Großteil der Auslagerungsdatei verwendet wird, kann die Leistung verbessert werden, wenn mehrere auf verschiedenen physischen Datenträgern vorhanden sind.

  • Arbeitsspeicher, Seiten/Sek.: Dieser Zähler ist eine der am häufigsten missverstandenen Measures.

    Ein hoher Wert für diesen Leistungsindikator bedeutet nicht unbedingt, dass Ihr Leistungsengpass auf einen Mangel an RAM beruht. Das Betriebssystem verwendet das Auslagerungssystem für andere Zwecke als das Austauschen von Seiten aufgrund einer übermäßigen Speicherbelegung.

  • Arbeitsspeicher, Seitenausgabe/Sekunde: Dieser Leistungsindikator zeigt an, wie viele virtuelle Speicherseiten in die Auslagerungsdatei geschrieben wurden, um RAM-Seitenframes für andere Zwecke pro Sekunde freizugeben.

    Dies ist der beste Indikator für die Überwachung, wenn Sie vermuten, dass Paging Ihr Leistungsengpass ist. Selbst wenn Zugesicherte Bytes größer als der installierte RAM sind, liegt kein erhebliches Leistungsproblem vor, wenn die Seitenausgabe/Sekunde die meiste Zeit niedrig oder 0 (null) ist.

  • Arbeitsspeicher, Cachebytes, Arbeitsspeicher, Pool, nicht ausgelagerte Bytes, Arbeitsspeicher, Ausgelagerte Poolbytes, Arbeitsspeicher, Systemcode Gesamtbytes, Arbeitsspeicher, Systemtreiber Gesamtbytes:

    Die Summe dieser Indikatoren ist ein Maß dafür, wie viel der 2 GB des freigegebenen Teils des 4 GB virtuellen Adressraums tatsächlich verwendet wird. Verwenden Sie diese, um zu bestimmen, ob Ihr System eine der zuvor erläuterten Architekturgrenzwerte erreicht.

  • Arbeitsspeicher, Verfügbare MB: Dieser Indikator misst, wie viel RAM verfügbar ist, um anforderungen an virtuellen Speicher zu erfüllen (entweder neue Zuordnungen oder zum Wiederherstellen einer Seite aus der Auslagerungsdatei).

    Wenn der ARBEITSSPEICHER knapp ist (z. B. "Zugesicherte Bytes" ist größer als der installierte RAM), versucht das Betriebssystem, einen bestimmten Bruchteil des installierten RAM für die sofortige Verwendung verfügbar zu halten, indem virtuelle Speicherseiten, die nicht aktiv verwendet werden, in die Auslagerungsdatei kopiert werden. Daher erreicht dieser Zähler nicht null und ist nicht unbedingt ein guter Hinweis darauf, ob Ihr System nicht über RAM verfügt.

References

Adressfenstererweiterungen