Warum verwendet Windows 7 die Auslagerungsdatei, wenn physischer RAM frei ist?


43

Ich benutze Windows 7 64-Bit mit 8G-RAM. Nach einigem Gebrauch habe ich das Gefühl, dass Windows träge wird. Der Antrieb dröhnt. Wenn ich mir den Ressourcenmonitor und die Datenträgeraktivität anschaue, sehe ich einige Verwendungsmöglichkeiten der Auslagerungsdatei (c: \ pagefile.sys). Ich überprüfe den physischen Speicher und sehe ungefähr 2.3G verfügbaren Speicher und 700M freien Speicher.

Warum verwendet Windows nicht mehr des freien Speichers und weniger der Auslagerungsdatei? Muss ein x Betrag an freiem RAM verbleiben, wie viel wäre das? Ist es ein Prozentsatz des physischen RAM?

Mein Plan ist es, mehr RAM und eine SSD für das Hauptlaufwerk zu bekommen. Inzwischen leide ich unter langsamer Leistung.


1
Nur weil in die Auslagerungsdatei geschrieben / gelesen wird, bedeutet dies nicht, dass wir sie verwenden. Möglicherweise wird sie nur aktualisiert, sodass der Speicher bei plötzlichem Bedarf schneller entleert werden kann. Ich empfehle, die Leistungsüberwachung auszuführen oder eine gründliche Diagnose durchzuführen und festzustellen, was die Trägheit verursacht.
Scott Chamberlain

Mit mehr als 8 GB RAM wird die Leistung in 99. (9)% der Fälle nicht erhöht. Haben Sie Ihren Mobo mit billigen RAM-Chips mit niedriger Frequenz und hoher Latenz vollgestopft? Sie zu ersetzen wäre eine bessere Idee als mehr hinzuzufügen.
Kotekzot

3
@kotekzot Das kommt darauf an. Ich habe allgemein festgestellt, dass die RAM-Latenz in den meisten Engpässen etwas vernachlässigbar ist. Wenn er über genügend Arbeitsspeicher verfügt, um nicht auf das Einlesen von Anwendungen warten zu müssen, wenn er alle mit gedrückter Alt-Taste durchläuft, ist der nächstgrößere Engpass um mehrere Größenordnungen fast immer die Festplatte, und eine SSD behebt das Problem Nach oben.
Darth Android

@wenn ich mehr RAM habe, kann ich die Auslagerungsdatei auf einer RAM-Disk ablegen, die viel schneller ist als der HD-Zugriff. Es handelt sich um eine Dell-Laptop-Workstation, daher bin ich mir sicher, dass die Komponenten nicht billig sind. Ich bin mir bewusst, dass Laptops langsamere Festplatten und IO-Subsysten als Desktops haben.
Tony_Henrich

1
Bitte legen Sie Ihre Auslagerungsdatei nicht auf einer RAM-Disk ab. Dies führt nur dazu, dass das System mehr Seitenfehler verursacht. Ja, wenn sie sich auf der Pagefile-on-RAM-Disk befinden, werden sie schneller aufgelöst als auf einer echten Festplatte, aber wenn sie überhaupt nicht vorhanden sind, ist dies noch weitaus schneller. Außerdem sind viele der erhöhten Seitenfehler auf zugeordnete Dateien zurückzuführen, und diese werden von der RAM-Disk überhaupt nicht behoben.
Jamie Hanrahan

Antworten:


33

Platzieren Sie Ihre Auslagerungsdatei zunächst nicht auf einer SSD. SSDs haben zwar bessere Erfahrungen mit dem Abnutzungsgrad gemacht, die Auslagerungsdatei wird jedoch häufig geschrieben und verschlechtert Ihre SSD erheblich schneller als gewöhnlich.

Was viele Leute nicht verstehen, ist, dass Windows nie wirklich freien Speicher hat. Es gibt ein paar MB, die für Burst-Anforderungen freigehalten werden, aber ansonsten wird der Unterschied zwischen aktivem Anwendungsspeicher und dem Gesamtspeicher im Allgemeinen vom sogenannten "Standby" -Speicher belegt.

Systemspeicher

Hierbei handelt es sich um Speicherseiten, die bei Bedarf gesichert werden können (der Standby-Speicher ist ein großer, großer Cache). Vom Standpunkt der Anwendung aus ist er also verfügbar, wird jedoch keinesfalls nicht verwendet. Normalerweise fungieren sie als Festplatten-Cache oder als Auslagerungs-Cache.

Ziel von Windows ist es, die Daten, die am wahrscheinlichsten in diesem Standby-Cache verwendet werden, basierend auf den Verwendungsmustern beizubehalten. Um ein ausgedachtes Beispiel zu verwenden, vergleichen wir den relativen Wert des privaten Speichers eines Programms wie Windows Update (normalerweise so konfiguriert, dass es einmal pro Woche ausgeführt wird) über das Zwischenspeichern des Inhalts Ihres Desktops in diesem Standby-Speicher:

Windows Update ist die meiste Zeit inaktiv. Es hält das Gedächtnis in Schach und macht größtenteils nichts Wertvolles damit, während es darauf wartet, dass der Zeitplan kommt. Der Inhalt Ihres Desktop-Ordners wird hingegen möglicherweise ständig abgefragt, insbesondere wenn Sie Dateien darin speichern möchten.

In diesem Fall wird Windows den für Windows Update zugewiesenen Speicher auslagern (obwohl der Speicher nicht voll ist) und den im RAM verfügbaren Speicherplatz zum Zwischenspeichern der Inhalte Ihres Desktops verwenden. Dies führt zu einer besseren Leistung für Sie.

Windows trifft Tausende dieser Entscheidungen und verwaltet einen Festplattencache für Hunderte von Dateien, in die ständig Hintergrunddienste schreiben, und versucht, dies mit dem Speicherbedarf aktiver Anwendungen abzugleichen. Manchmal wird es für einen Moment falsch und wir müssen möglicherweise warten, bis die Daten in den Speicher zurückgespielt werden, wenn wir zu einer Anwendung wechseln, die eine Weile im Hintergrund geschlafen hat. Aber was Sie sich denken müssen, ist, wenn es diese Anwendung vollständig im Speicher gehalten hätte, wie viele andere Anwendungen wären wiederum festgefahren und müssten warten, bis die Schreib- und Lesevorgänge abgeschlossen sind, oder müssten sich selbst auslagern? Was wäre, wenn dies Anwendungen wären, die Sie in der Zwischenzeit verwendet haben?


Anwendungen weisen häufig Speicherseiten zu, die sehr selten verwendet werden, z. B. Startcode (einmal verwendet und dann nicht benötigt), Herunterfahrcode (einmal verwendet und dann nicht benötigt) oder Aktualisierungscode. Es ist nicht praktisch, all dies im Speicher zu belassen, wenn es viel wichtigere Verwendungen gibt. Wenn Windows also Codeabschnitte identifiziert, die für den aktuellen Betrieb einer Anwendung nicht benötigt wurden, werden diese Abschnitte auch dann in der Auslagerungsdatei ausgeblendet, wenn dies der Fall ist es könnte sie technisch im Gedächtnis behalten.

(Abhängig von den Anwendungen weisen Systeme häufig mehr Speicher zu, als sie tatsächlich haben, und erwarten, dass das meiste davon ausgelagert wird. Wenn Sie sich eine detaillierte Speicheraufschlüsselung ansehen, wird die Gebühr "Commit" oder "Commit" berechnet gibt an, wie viel Speicher Windows für verschiedene Anwendungen reserviert hat. Die Auslagerungsdatei wird verwendet, um Garantien für diesen Speicher bereitzustellen, auch wenn der physische Arbeitsspeicher nicht ausreicht, um ihn abzudecken.)


Ich habe gerade bemerkt, dass Sie in Ihrer Frage zwischen verfügbarem und freiem Speicher unterschieden haben. Ich entschuldige mich, wenn Sie sich belehrt fühlen und den Unterschied bereits kannten. Im Idealfall ist der freie Speicher immer 0. Während der Standby-Speicher ein Speicher ist, der freigegeben werden kann, kann der Speicher nicht immer schnell freigegeben werden. Wenn ich versuche, eine 1-GB-Datei auf die Festplatte zu schreiben, wird sie von Windows in einem Festplatten-Cache im Speicher abgelegt, sofern dies möglich ist, und dann langsam im Hintergrund auf die Festplatte geschrieben. Wenn eine Anwendung 50 MB zusätzlichen Speicher anfordern muss, aber keiner verfügbar ist, weil dieser riesige Festplatten-Cache noch entleert wird, bleibt die Anwendung hängen, bis er verfügbar ist. Durch die Beibehaltung eines kleinen Puffers kann das System dieses Problem mit minimaler Verzögerung vom Standpunkt des Benutzers aus lösen.


6
@FrankComputer Siehe den Screenshot, den ich für mein 8-GB-Arbeitssystem gepostet habe: 6300 MB in Verwendung, 1700 MB Standby-Festplatte / Cache, 42 MB frei. Wenn Sie sich mein Heimsystem (32 GB Speicher) ansehen, sind Sie tatsächlich richtig, aber nur am falschen Schwellenwert: 9,2 GB im Einsatz, 14,5 GB Festplatten-Cache, 8,6 GB frei. Sie haben freien Speicherplatz, wenn Windows einfach nicht mehr genügend Cache-Speicher zur Verfügung steht, dieser Schwellenwert jedoch ziemlich hoch ist. Windows wird nicht ständig ausgetauscht, da der Festplatten-Cache kein Auslagerungsspeicher ist. Er wird passiv zwischengespeichert, wenn Dateien angefordert werden und nicht im Cache. Sie bemerken nicht die Zeiten, die es aus dem Cache zieht und es gibt keine Festplattenaktivität.
Darth Android

8
@FrankComputer: Wenn Ihr System eine gute Leistung erbringt, liegt dies nicht am freien Speicher. Freier Speicher ist der Speicher, den das System nicht verwendet, und er kann die Leistung nicht mehr beeinträchtigen als der auf Ihrem Schreibtisch befindliche Speicher. Die einzige Möglichkeit, die Leistung des Speichers zu verbessern, besteht darin , ihn zu verwenden. Wenn er also kostenlos ist, wird er nicht zur Leistungsverbesserung verwendet. Mehr Speicher frei zu machen bedeutet, weniger zu verwenden und die Leistung zu verschlechtern.
David Schwartz

1
@Tony_Henrich Das Deaktivieren der Auslagerungsdatei ist fehlerhaft. Sehr schlecht. (Das Verschieben der Auslagerungsdatei auf eine Ramdisk entspricht im Prinzip dem Deaktivieren. Windows kann nicht sofort benötigte Daten aus dem Arbeitsspeicher verschieben.) Viele Programme fordern Speicher an, den sie nicht sofort benötigen, aber möglicherweise in der Zukunft benötigen. Normalerweise ordnet Windows diesen Speicher in der Auslagerungsdatei zu und führt keine Aktionen aus. Zum Beispiel. Der MSSQL-Server weist beim Start 8 GB RAM zu. Auch für 0 Datenbanken. Nur weil. Wenn Sie Ihre Auslagerungsdatei auf eine Ramdisk legen, verschwenden Sie beträchtliche Mengen an RAM, die andernfalls für den Cache verwendet werden könnten
Darth Android

1
@ Tony_Henrich Derzeit verwaltet Windows Ihre Auslagerungsdatei und Ihren Arbeitsspeicher optimal, je nachdem, wie Sie Ihr System nutzen. Die einzigen Verbesserungen, die Sie daran vornehmen können, sind folgende: Fügen Sie mehr Speicher hinzu oder verschieben Sie Ihr Betriebssystem auf eine SSD. Wenn Sie mit Ihrer Auslagerungsdatei spielen, wird die Gesamtsystemleistung bestenfalls beeinträchtigt oder die Systemstabilität im schlimmsten Fall beeinträchtigt.
Darth Android

1
Sie erklären, was Windows mit dem Speicher macht. Wenn ich viel freien Speicher habe, sollte Windows diesen verwenden, unabhängig davon, ob eine App in den Energiesparmodus wechselt oder nichts tut. Was schadet es, es im Speicher zu behalten, wenn Speicher verfügbar ist? Sobald der Arbeitsspeicher knapp wird, kann Windows die Auslagerungsdatei verwenden. Die Verwendung der Auslagerungsdatei führt zu Verschleiß am Laufwerk. Es ist kein Verschleiß bei der Verwendung von Speicher. Zweitens verwende ich eine SSD für meine Auslagerungsdatei. Die Lebensdauer von SSDs ist zwar kürzer als die von Festplatten, und bei vielen Schreibvorgängen tritt Abnutzung auf, dies dauert jedoch noch einige Monate. Es ist noch in Jahren.
Tony_Henrich

4

Es heißt Vorausplanung.

Das Schreiben von Speicherseiten in die Auslagerungsdatei, wenn noch genügend RAM vorhanden ist, ist eine gute Sache. Sobald ein Programm mehr Speicher anfordert, als verfügbar ist, kann das Betriebssystem so schnell wie möglich mit dem Löschen von Speicherplatz beginnen. Besser jetzt als später vorbereiten.

Wenn das Betriebssystem warten muss, stößt man auf einen Leistungsengpass. Wenn ein Programm mehr Speicher als verfügbar anfordert, müssen Sie jetzt warten, bis das Betriebssystem den geänderten Speicherblock ausschreibt, und diese dann freigeben.


Mit 16G + und mit Light-Programmen ist die Zeit, in der ein Programm mehr Speicher als den freien Speicher benötigt, viel geringer als die häufige Verwendung der Auslagerungsdatei. In diesen Fällen ist es besser, einen Teil des freien Speichers und weniger der Auslagerungsdatei zu verwenden. Es gibt keine Lösung, die für alle Fälle geeignet ist.
Tony_Henrich

1
Ich glaube nicht, dass du es verstehst. Es muss nicht das eine oder andere sein. Windows kann in den freien Speicher schreiben und in die Auslagerungsdatei schreiben. Es ist nicht so, als würde man in die Auslagerungsdatei schreiben oder in den Speicher schreiben.
Surfasb

1
Wenn Sie jedoch versuchen, eine Vorausplanung zu treffen, füllt Windows möglicherweise nicht den On-Chip-Cache der Festplatte / des SDD, wodurch das gleichzeitige Schreiben / Laden von Dateien verlangsamt wird? Dieses Austauschen des Arbeitsspeichers klingt nach einer guten Idee, scheint jedoch das System in schlechten Zeiten zufällig zu belasten.
Binki

1
@binki: Ja, es stört die Lese- / Schreibzeiten der Festplatte, aber wenn ich mich recht erinnere, verwenden sie eine niedrigere Priorität, sodass andere Lese- / Schreibvorgänge im Allgemeinen an erster Stelle stehen sollten.
Mooing Duck


2

Ich habe die Auslagerungsdatei in den letzten 7 Jahren deaktiviert. Eigentlich ist es das erste, was ich nach der Neuinstallation mache. Hatte noch nie ein Problem damit. (Eigentlich hatte ich ein Spiel namens "Titan Quest", das beim Start eine sehr blöde Prüfung durchführte, also erstellte ich eine 4-MB-Auslagerungsdatei, um es glücklich zu machen, und schaltete PF später wieder aus). Wie für die ursprüngliche Frage. Windows verwendet unseren RAM für den Festplatten-E / A-Cache. Aus irgendeinem Grund ist der Festplatten-Cache für den Code und die Daten der aktiven Programme gleichermaßen wichtig. Und es gibt keine Möglichkeit, die Größe des Festplatten-Cache zu begrenzen. Es ist von Natur aus da und wir können nichts dagegen tun ... Oh, warte! Wir können! Schalten Sie einfach die Auslagerungsdatei aus. Ausführen von Anwendungen, die viel RAM benötigen? Kaufen Sie mehr RAM oder schließen Sie eine App, bevor Sie eine andere starten. Sie können den Process Explorer verwenden, um zu sehen, wie viel Speicher zu einem bestimmten Zeitpunkt belegt ist.


1
Wenn Sie die Auslagerungsdatei entfernen, wird das Zwischenspeichern der Festplatte nicht deaktiviert.
Jamie Hanrahan

1
Sie haben geschrieben: "[Disk Cacheing] ist von Natur aus vorhanden und wir können nichts dagegen tun. Oh, Moment! Wir können! Schalten Sie einfach die Auslagerungsdatei aus." Nun, das Ausschalten der Auslagerungsdatei hat nichts mit Festplatten-Cache zu tun. Was sagen Sie also? Es ist sowieso eine blöde Idee, da es das Betriebssystem zwingt, alle privaten Festschreibungen für immer im RAM zu behalten , sobald es berührt wurde. Dadurch wird weniger Platz für zugeordneten virtuellen Speicher (wie Code), sodass mehr Seiten für die Inhalte erstellt werden müssen. Der proaktive Datenträgercache (Superfetch) verwendet die verbleibenden Daten nach all den oben genannten Vorgängen, sodass auch die Auslagerungsrate nicht erhöht wird.
Jamie Hanrahan

1
Ich habe nie gesagt (oder gedacht), dass das Ausschalten der Auslagerungsdatei Ihre Idee ist, also habe ich nichts über "Ihre Idee" gesagt. Oh, während ich hier bin: "Aus irgendeinem Grund glaubt [Windows], dass der Festplatten-Cache für den Code und die Daten der aktiven Programme gleich wichtig ist " ist völlig falsch. Superfetch verwendet nur Seiten, die sich in der Standby-Liste befinden und daher bereits Teil von " available "RAM; es werden keine Seiten aus dem Code und den Daten des Programms entnommen. Und diese Seiten bleiben verfügbar, dh stehen sofort für den Code und die Daten des Programms zur Verfügung, auch wenn sie zwischengespeicherte Daten aus Dateien enthalten.
Jamie Hanrahan,

1
Ich sage nichts dergleichen. (Woher bekommst du das?) Ich sage jedoch, dass Windows niemals etwas ausblättert, um Platz für den Festplatten-Cache zu schaffen. Im Gegensatz dazu verwendet der Cache Seiten, die derzeit nicht Teil von Prozessen sind und daher ansonsten verschwendet würden. Solche RAM bleiben sofort auf Code und Daten zur Verfügung , die es für Paging Zeug muss in , so wird es durch den Cache nicht „verbraucht“, sondern nur „ausgeliehen“. Der Cache reduziert also nicht die Menge an Code und Daten, die in den RAM ausgelagert oder dort gespeichert werden können. Ref: Windows Internals von Solomon, Russinovich und Ionescu.
Jamie Hanrahan

1
Ich habe bereits in der Antwort von DA geantwortet. Aber was Sie gerade gesagt haben, ist nicht das, was er gesagt hat. Er sagte, dass Windows lange inaktive Prozesse auslagern wird (true). Und er sagte auch, dass der Festplatten-Cache die dadurch freigegebenen Seiten verwenden könnte (auch wahr). Dies bedeutet jedoch nicht, dass der Festplatten-Cache Vorrang haben muss. Der Festplatten-Cache verwendet diese Seiten nur, wenn sie für nichts anderes mit höherer Priorität benötigt werden. Eine Vielzahl von Tests hat gezeigt, dass dies ein guter Kompromiss ist.
Jamie Hanrahan

1

Die Argumente ( hier und hier ) für die Speicherung und Verwendung der Auslagerungsdatei, auch wenn genügend RAM vorhanden ist, lauten:

  • Selbst wenn jetzt freier Speicher verfügbar ist, kann es sein, dass dem Computer später der Speicher ausgeht. Es ist besser, wenig genutzte Teile des Arbeitsspeichers im Voraus auf der Festplatte abzulegen.
  • Es gibt auch "Standby" -Speicher, der als frei erscheint, aber tatsächlich zum Zwischenspeichern von Festplatten verwendet wird. Es ist auch wichtig für die Leistung, etwas besser zu haben.
  • Wenn Ihnen der Arbeitsspeicher ausgeht und die Auslagerungsdatei deaktiviert ist, ist dies der harte Absturz.
  • Während 2, 4, 16 oder eine andere Anzahl von GB RAM wie "viel" aussehen kann, ist dies möglicherweise nicht so wahr, wie Sie glauben. Sie müssen sich profilieren.

Mit dem Windows-Ressourcenmonitor können Sie sehen, wie viel RAM für das Zwischenspeichern verwendet wird (angezeigt als "Standby").

Wenn Sie feststellen, dass Ihr RAM tatsächlich verwendet wird oder sich im Standby-Modus befindet, ist die Auslagerungsdatei hilfreich für Sie. Wenn die Kombination Ihrer Aufgaben und des verfügbaren Arbeitsspeichers so ist, dass ein erheblicher Teil des Arbeitsspeichers als ungenutzt ("frei") angezeigt wird, besteht meines Erachtens keine Notwendigkeit, die Festplatte nur aus Rücksicht auf jemanden zu schleifen, der "es besser weiß und dies hier sagt" ".


-2

All diese Kommentare und die richtige Antwort fehlen. Schalten Sie Ihre Auslagerungsdatei aus. Es wird mit 8 GB RAM nicht benötigt, und wenn Sie mehr RAM benötigen, kaufen Sie es. Wirklich ziemlich einfach.


4
Windows ist sehr geschickt darin zu bestimmen, was (nicht) in die Auslagerungsdatei eingefügt werden soll. Mit Ausnahme einiger rein theoretischer Szenarien beeinträchtigt das Ausschalten die Leistung, selbst bei 8 GB RAM. Auch wenn die richtige Antwort fehlte, ist dies sicherlich nicht der Fall.
Marcks Thomas

4
Haben Sie Beweise für Ihre Behauptung, dass Sie Schaden anrichten könnten? Ich präsentiere einen MS-Artikel support.microsoft.com/kb/889654
a2552308

6
Einfach ausgedrückt: Auslagerungsdateien können nur die Festplattenaktivität erhöhen ... und Windows ist nicht intelligent genug, um sie überhaupt nicht zu verwenden, wenn es über viel RAM verfügt. Auf einem SSD-System ist dies möglicherweise nicht zu bemerken, auf einem Spindelsystem kann dies die Anwendungsleistung erheblich beeinträchtigen. Siehe Originalposter.
a2552308

2
Relevanter Abschnitt aus dem MS-Artikel: "Je mehr RAM einem Computer hinzugefügt wird, desto weniger wird eine Auslagerungsdatei benötigt. Wenn auf Ihrem Computer genügend RAM installiert ist, ist möglicherweise keine Auslagerungsdatei erforderlich, es sei denn, eine ist erforderlich durch eine bestimmte Anwendung. " Ich konnte die relevanten Abschnitte aus den vielen Artikeln, die Sie verlinkt haben, nicht finden. Vielleicht könnten Sie die relevanten Abschnitte zitieren?
a2552308

2
Hört sich theoretisch gut an, aber nicht das, was ich in der Praxis beobachtet habe.
a2552308
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.