Der Process Explorer zeigt nicht den größten Benutzer meines Arbeitsspeichers an

6

Weiß jemand, warum Process Explorer diese seltsamen Werte für die Speichernutzung meiner Virtual Box-Instanz anzeigt?

Hier sind die reellen Zahlen:

vmmap

Der Process Explorer zeigt jedoch Folgendes:

alt text

alt text

Der Prozess hat also 1,2 GB der VM zugesagt, von denen 1,1 GB privat sind. Im Prozess-Explorer werden jedoch nur 196 MB VM und nur 48 MB privater Speicher angezeigt. Was ist denn hier los?

BEARBEITEN : Diese Erinnerung ist nicht nur reserviert. Das bekommt es tatsächlich gebraucht :

alt text

RomanSt
quelle
Da die Chance groß ist, dass dies ein Fehler ist und diese beiden Tools von Sysinternals stammen, möchten Sie sie vielleicht in ihrem Forum mit einer ähnlichen Beschreibung informieren: forum.sysinternals.com
Tom Wijsman
Wird es im Task-Manager korrekt angezeigt?
Connor W
Der @Connor Task Manager zeigt dieselben Zahlen wie der Process Explorer an.
RomanSt

Antworten:

4

Mark Russinovich hat freundlicherweise erklärt, dass dies auf VirtualBox zurückzuführen ist Schlösser eine große Menge an Speicher, die fordert das Betriebssystem auf, es im Arbeitssatz zu belassen .

Allerdings, wenn Sie nur versuchen VirtualLock Wenn Sie eine Menge RAM verwenden, werden Sie dies nicht sehen. Alles, was RAM ist, wird gerne berücksichtigt, so wie es sein sollte. Es geht also um etwas anderes, wie VirtualBox diesen Speicher zuweist. Übrigens betrifft es auch ProcessHacker.

Das Seltsame daran ist, dass ProcessHacker alle zugewiesenen Speicherbereiche korrekt auflistet und einfach addiert, um den richtigen Wert zu erhalten, der vom Betriebssystem gemeldete Zähler ist jedoch falsch. Um ein paar GB. Nicht gut!

Ich nenne dies eine Eigenart der Windows-RAM-Berichterstattung. Ich würde das als Fehler bezeichnen, aber es gibt es wahrscheinlich schon seit mindestens einem Jahrzehnt. Daher kann man dieses erwartete Verhalten mittlerweile als solches bezeichnen, das weder in Process Explorer noch in Process Hacker richtig umgangen wurde.

RomanSt
quelle
Ich denke, das Sperren von Speicher dient nur ausnahmsweise, und der in diesem Artikel angegebene Grund ist wahrscheinlich der Grund, warum er nie gezählt wurde ... Schön, dass Sie es so weit gebracht haben, und ja ... Mark Russinovich ist der Mann dafür Solche Antworten, wenn das Sysinternals-Forum Ihnen nicht weiterhelfen kann. :-)
Tom Wijsman
Wird dies zwischen Windows 7 und Windows 8.1 anders berichtet? Auf meinem W7-Computer behauptet VBox, ~ 120 MB WS und 250 MB "Virtual Size" zu haben, aber in W8.1 heißt es eindeutig, dass der VBoxHeadless-Prozess "Virtual Size" von 5,5 GB hat.
analytik
1

VMMap hat möglicherweise einen Fehler Dadurch schließt Committed verworfene Seiten oder Seiten in die Auslagerungsdatei ein.

So sieht es jetzt aus wie inaktiver Speicher ... Er wird nur als Reserve (oder als Fehler) zugewiesen.

Das Working Set enthält nur aktiven Speicher, VMMap und Process Explorer zeigen dasselbe WS ...

Tom Wijsman
quelle
Es sieht tatsächlich so aus, als ob VMMap nirgendwo etwas zum Zählen des reservierten Speichers hat. Das habe ich vorher nicht bemerkt. Verblüffend, wie Mark den Task-Manager für die Verwendung inkonsistenter Terminologie und das anschließende Zählen des reservierten Speichers zusammen mit dem festgeschriebenen Speicher aufruft ...
RomanSt
Ja, die Namen sollten produktübergreifend einheitlicher werden ...
Tom Wijsman
OK, das ist es nicht. Wenn ich die VM starte, zeigt ProcessExplorer einen Anstieg des Commits um ungefähr 1,1 GB, und die physische Nutzung steigt ebenfalls um 1,1 GB. Aber kein einziger Zähler des neuen Prozesses hat diese Art von Zahlen.
RomanSt
Meine Vermutung ist, dass der Speicher von einem Treiber anstelle des VM-Prozesses zugewiesen wird. Ein weiterer Grund könnte in der Hardwarebeschleunigung und den verschachtelten Paging-Optionen der VM-Software liegen, die dazu führen, dass Windows nicht erkennen kann, wo der Speicher lag
Tom Wijsman
Es stellt sich heraus, dass dieser Speicher nicht gezählt wird, da er im Arbeitssatz verankert ist. Das erklärt eigentlich nicht Warum Es wird nicht im Arbeitssatzzähler gemeldet, aber das ist eine andere Frage. Hat meine eigene Antwort gepostet ...
RomanSt
0

Von RAM, virtueller Speicher, Auslagerungsdatei und all das Zeug :

Speicher, zugesagte Bytes : Dies ist ein Maß für die Nachfrage nach virtuellem   Erinnerung. Es zeigt, wie viele Bytes haben   wurden von Prozessen zugewiesen und an   welche das Betriebssystem hat   einen RAM-Seitenrahmen oder eine Seite begangen   Steckplatz in der Auslagerungsdatei (oder in beiden). Wie   Committed Bytes wächst über dem   verfügbarer RAM, Paging erhöht sich und   die Menge der verwendeten Auslagerungsdatei   erhöht sich. Irgendwann paging   Aktivität beginnt deutlich   die wahrgenommene Leistung beeinflussen.

Ich glaube also, dass die Menge an Committed Bytes nichts mit VirtualBox zu tun hat - es ist nur die Summe der physischen RAM-Seiten aller laufenden Prozesse im System. In diesem Fall sind die von Process Explorer zurückgegebenen Daten korrekt.

harrymc
quelle
0

SysInternals verwenden RamMap Ich denke, Sie können sehen, dass der RAM als "DriverLocked" aufgezeichnet ist.

Allerdings habe ich keine Ahnung, wie Sie tatsächlich von diesem zum Treiber zurückarbeiten, der es gesperrt hat. Wichtig ist, dass der Treiber nicht das VirtualBox-Programm ist, sondern ein Treiber, den VirtualBox installiert und verwendet.

Wenn durch einfaches Herunterfahren virtueller Maschinen kein RAM aus dem 'DriverLocked'-Pool freigegeben wird, können Sie ein Tool wie das folgende verwenden AutoRuns um zu sehen, welche Treiber beim Start geladen werden, und deaktivieren Sie diese. Es ist ein gewisser manueller Vorgang, also wäre es wirklich interessant, wenn jemand weiß, welche Treiber den Speicher gesperrt haben.

jmc
quelle