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

3814
RomanSt

Weiß jemand, warum Process Explorer diese seltsamen Werte für die Speicherauslastung 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, wovon 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 : Dieser Speicher ist nicht nur reserviert. Es wird tatsächlich verwendet :

alt text

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

4 Antworten auf die Frage

4
RomanSt

Mark Russinovich hat freundlicherweise erklärt, dass dies der Fall ist, weil VirtualBox eine große Menge an Speicher sperrt, wodurch das Betriebssystem aufgefordert wird, ihn im Arbeitssatz zu behalten .

Wenn Sie jedoch nur VirtualLockein paar RAMs ausprobieren, werden Sie dies nicht sehen. Der gesamte RAM-Speicher wird so gerne berücksichtigt, wie es sein sollte. Es ist also etwas anderes, wie VirtualBox diesen Speicher zuweist. Im Übrigen betrifft es auch ProcessHacker.

Das Merkwürdige dabei ist, dass ProcessHacker alle zugewiesenen Speicherbereiche korrekt auflistet. Wenn Sie diese addieren, erhalten Sie den korrekten Wert. Der vom Betriebssystem gemeldete Zähler ist jedoch falsch. Um ein paar GB. Nicht gut!

Ich nenne dies eine Eigenheit der Windows-RAM-Berichterstellung. Ich würde dies als Fehler bezeichnen, aber es ist wahrscheinlich schon seit einem Jahrzehnt im Umlauf, daher kann man dieses Verhalten vermutlich als ein Verhalten bezeichnen, das in Process Explorer oder Process Hacker nicht richtig funktioniert.

Ich denke, das Sperren des Gedächtnisses ist nur für außergewöhnliche Zwecke, zusammen mit dem in diesem Artikel genannten Grund ist es wahrscheinlich der Grund, warum es nie gezählt wurde ... Schön, dass Sie es so weit herausgefunden haben und ja ... Mark Russinovich ist der Mann dafür solche Antworten, wenn das Sysinternals-Forum Ihnen nicht helfen kann. :-) Tom Wijsman vor 14 Jahren 0
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 vor 8 Jahren 0
1
Tom Wijsman

VMMap hat möglicherweise einen Fehler, durch den Committed verworfene Seiten oder Seiten in die Auslagerungsdatei einbezieht .

Jetzt sieht es also nach inaktivem Speicher aus ... Es wird nur als Reserve (oder als Fehler) zugewiesen.

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

Es scheint tatsächlich so, als hätte VMMap nirgends irgendetwas, um reservierten Speicher zu zählen. Das habe ich vorher nicht gemerkt. Ironic, wie Mark den Task-Manager für die Verwendung inkonsistenter Terminologie einsetzt und dann den reservierten Speicher zusammen mit dem festgeschriebenen Speicher zählt ... RomanSt vor 14 Jahren 0
Ja, die Namen sollten produktübergreifender sein ... Tom Wijsman vor 14 Jahren 0
OK, das ist es nicht. Wenn ich die VM starte, zeigt der ProcessExplorer eine Gesamtsteigerung von Commit um 1,1 GB oder mehr und die physische Nutzung steigt ebenfalls um 1,1 GB. Aber kein einziger Zähler für den neuen Prozess hat solche Zahlen. RomanSt vor 14 Jahren 0
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 sich der Speicher befand. Tom Wijsman vor 14 Jahren 0
Es stellt sich heraus, dass dieser Speicher nicht gezählt wird, da er im Arbeitssatz gespeichert ist. Das erklärt nicht wirklich, warum es nicht in der Arbeitsgruppe angezeigt wird, aber das ist eine andere Frage. Meine eigene Antwort gepostet ... RomanSt vor 14 Jahren 0
0
harrymc

Aus RAM, virtuellem Speicher, Auslagerungsdatei und all dem Zeug :

Memory, Committed Bytes : Dies ist ein Maß für den Bedarf an virtuellem Speicher. Es zeigt an, wie viele Bytes von Prozessen zugewiesen wurden und für die das Betriebssystem einen RAM-Seitenrahmen oder einen Seitenbereich in der Auslagerungsdatei (oder beides) festgelegt hat. Wenn Committed Bytes über den verfügbaren RAM-Speicher hinauswächst, steigt der Seitenwechsel und auch die Anzahl der verwendeten Auslagerungsdatei steigt. An einem bestimmten Punkt beginnt die Paging-Aktivität die wahrgenommene Leistung erheblich zu 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.

0
jmc

Mit SysInternals RamMap kann man sehen, dass der RAM als 'DriverLocked' aufgezeichnet wird.

Ich habe jedoch keine Ahnung, wie Sie tatsächlich von dem Treiber zurück arbeiten, der ihn gesperrt hat. Wichtig ist, dass der Treiber nicht das Programm VirtualBox ist, sondern ein Treiber, den VirtualBox installiert und verwendet.

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