Die Beziehung zwischen Commit-Gebühr, Standby-Listen und verfügbarem physischem Speicher?

363
DmytroL

Sah diesen Thread, aber ich glaube, es ist nicht vollständig meine Frage zu beantworten, so hier geht. Ich bin unter Windows 8 Enterprise, 4 GB RAM an Bord, aktivierte Auslagerungsdatei. Ich schaue auf meine Leistungsindikatoren und sehe, dass die aktuelle Festschreibungsgebühr 4,14 GB beträgt, während die Menge des verwendeten physischen Speichers 2,43 GB beträgt. Weitere 919 MB werden für Standby verwendet (dh der Dateicache usw.).

Aber warum ist es so? Wenn ich den Begriff "Commit-Gebühr" richtig verstehe, bedeutet dies im Wesentlichen den aktuellen RAM-Bedarf aller laufenden Apps und Dienste. Es scheint mir völlig unklar zu sein, warum Windows so viel Speicher für den Cache zuweist und gleichzeitig einen Teil der laufenden Apps dazu zwingt, in die Auslagerungsdatei ausgelagert zu werden? Wäre es nicht vernünftiger, den Cache möglichst vollständig zu leeren, um den laufenden Apps so viel RAM wie möglich zu geben und den Cache wieder aufzufüllen, sobald mehr freier Arbeitsspeicher verfügbar wird?

0

1 Antwort auf die Frage

0
Jamie Hanrahan

Nein, Commit-Gebühren sind nicht die "aktuelle Anforderung an RAM". Dies ist die derzeitige Anforderung an einen mit der PAGE-Datei gesicherten virtuellen Adressraum (Summe über alle Prozesse plus einige systemweite Zuordnungen).

Es ist sehr üblich, dass nur ein Teil davon referenziert wurde. Es wäre völlig dumm, RAM für Teile des virtuellen Adressraums zu binden, auf die noch nicht verwiesen wurde (es sei denn, Sie haben eine Möglichkeit zu wissen, was zukünftig referenziert wird).

Die Zuweisung von RAM für den Cache erfolgt dagegen, weil es gute Beweise gibt, dass in der Zwischenzeit zwischengespeichertes Material wahrscheinlich bald wieder benötigt wird (in den meisten Fällen ist es der Beweis, dass es kürzlich referenziert wurde). Warum also nicht im RAM behalten?

Außerdem: RAM wird dem Cache nicht dauerhaft zugewiesen. Wenn andere Dinge mehr Arbeitsspeicher benötigen, wird der Arbeitsspeicher des Caches bei Bedarf verkleinert, um sie unterzubringen.

Es ist fast nie genügend RAM vorhanden, um die virtuellen Adressräume aller Prozesse im RAM zu halten. Jedes virtuelle Speicher-Betriebssystem spielt also ein Balancing-Spiel und versucht, die interessantesten Dinge im RAM zu behalten. Lange Erfahrung hat gezeigt, dass die Verwendung von RAM für verschiedene Arten von Cache eine gute Optimierung darstellt. Es ist auf jeden Fall besser, als etwas für prozess-private vas zu verwenden, auf das noch nie verwiesen wurde und möglicherweise nie referenziert wird.

Siehe auch http://superuser.com/questions/943175/windows-says-ram-ran-out-while-there-isstill-4-gb-of-physical-memory-available/943185#943185 Jamie Hanrahan vor 9 Jahren 0