Die Speichernutzung der virtuellen Maschine wird in TaskManager nicht angezeigt


28

Die Windows-Speicherverwaltung und ihre Beziehung zu TaskManager sind nicht bekannt und ich hoffe, dass mich jemand aufklären kann.

Wenn ich eine virtuelle Maschine ausführe (egal ob Virtual PC 2007, Virtual Server 2005 oder VirtualBox, da sie sich auf die gleiche Weise verhalten) und TaskManager öffne, kann ich auf der Registerkarte Prozesse einige Einträge für die VM sehen, aber die Speicherwerte sind relativ klein (ca. 30 MB). Offensichtlich wird der tatsächlich von der VM selbst belegte Speicher nicht berücksichtigt. Keine der verschiedenen sichtbaren speicherbezogenen Spalten scheint anders zu funktionieren. Die Speichernutzung auf der Registerkarte Leistung scheint für die gesamte Speichernutzung einschließlich der VM korrekt zu sein.

Meine Frage ist also, warum die Speichernutzung der VM (die 100 MB beträgt) nicht auf der Registerkarte "Prozesse" angezeigt wird.

Antworten:


30

VirtualPC, HyperV und wahrscheinlich ähnliche Produkte verwenden einen sogenannten treibergesperrten Speicher, der im Prozess-Explorer, im Task-Manager usw. nicht sichtbar ist. RAMMap zeigt den von einem Prozess verwendeten treibergesperrten Speicher an.


1
Für die Aufzeichnung ist RAMMap nur Vista oder höher.
Tim Abell

1
RAMMap zeigte keinen gesperrten Speicher für einen Prozess an, es zeigte den gesamten gesperrten Speicher an
NeDark

Nur um andere darauf hinzuweisen, sagte er nicht, dass der Speicher gesperrt ist. Er sagte, der Fahrer sperrte die Erinnerung. So funktioniert dynamisches Gedächtnis. Wenn es Ihnen nicht gefällt oder Sie vermuten, dass es mit Ihrer App zu Problemen kommt, können Sie die VM einfach für statischen Speicher anstatt für dynamischen konfigurieren. Ich habe gesehen, dass einige Java-Apps Probleme bei der Verwendung des dynamischen Speichers in einer VM haben, indem sie auf statisch gesetzt wurden. Das Problem wurde behoben .
John C

Welcher Prozess ordnet diesen Speicher tatsächlich zu? Ich habe SysInternals 'VMMap ausprobiert und wenn Sie den richtigen VBoxHeadless.exeProzess auswählen (es ist ein Blatt im Prozessbaumzweig, dh es hat kein anderes untergeordnetes Element , Sie können zum Beispiel Process Explorer verwenden, um es zu finden), hat dieser "Speicher verloren" wird sowohl unter Private Bytes als auch unter Working Set dieses Prozesses angezeigt (obwohl Process Explorer für beide Werte viel weniger anzeigt). Ich bin ein bisschen verwirrt, warum sie unterschiedliche Werte anzeigen, aber VMMap scheint die reale Zahl anzuzeigen .
Dawid Ferenczy Rogožan

6

Jedes gehostete Virtualisierungssystem wie das von Ihnen aufgeführte enthält einen Gerätetreiber, der im Kernel des Host-Betriebssystems ausgeführt wird. Dies ist erforderlich, da Programme im Benutzermodus die zum Erstellen einer virtuellen Maschine erforderlichen Anweisungen nicht ausgeben können.

Der Grund dafür, dass der Arbeitsspeicher im Task-Manager nicht angezeigt wird, besteht darin, dass Sie den Arbeitsspeicher für die mit den virtuellen Maschinen verknüpften Benutzermodus-Programme und nicht für den Kernelmodus-Gerätetreiber durchsuchen, der den Arbeitsspeicher für die VMs zugewiesen hat.


Welcher Prozess ordnet diesen Speicher tatsächlich zu? Ich habe SysInternals 'VMMap ausprobiert und wenn Sie den richtigen VBoxHeadless.exeProzess auswählen (es ist ein Blatt im Prozessbaumzweig, dh es hat kein anderes untergeordnetes Element , Sie können zum Beispiel Process Explorer verwenden, um es zu finden), hat dieser "Speicher verloren" wird sowohl unter Private Bytes als auch unter Working Set dieses Prozesses angezeigt (obwohl Process Explorer für beide Werte viel weniger anzeigt). Ich bin ein bisschen verwirrt, warum sie unterschiedliche Werte anzeigen, aber VMMap scheint die reale Zahl anzuzeigen .
Dawid Ferenczy Rogožan

5

Um die von einer VM belegte Speicherkapazität anzuzeigen, müssen Sie sicherstellen, dass in Ihrem Task-Manager die Spalte "Arbeitssatz" angezeigt wird. Oft ist nur das Private Set sichtbar.

So aktivieren Sie diese Spalte:

1) Starten Sie den Task-Manager

2) Gehen Sie zur Registerkarte Prozesse

3) Ansicht> Spalten auswählen

4) Stellen Sie sicher, dass "Memory - Working Set" angekreuzt ist

Zum Beispiel ist der private Satz der VM, die ich im Moment laufen habe, 43 MB, wohingegen der Arbeitssatz 2,3 GB ist


1
Was ist die volle Menge an Speicheranwendung verwendet? Arbeitsset + Privatset oder nur Arbeitsset?
Zendar

2
Vielleicht ist es in verschiedenen Windows-Versionen anders, aber unter Windows 7 sehe ich das nicht. Die "Working Set" -Nummern sind größer als die "Private Working Set" -Nummern, aber nicht remote genug, um den Arbeitsspeicher der VM zu berücksichtigen. Ich habe alle speicherbezogenen Spalten ausprobiert und keine von ihnen. Dies gilt sowohl für Windows Virtual PC als auch für VirtualBox. Welche Windows-Version und welchen VM-Host verwenden Sie?
Scott Bussinger

Leider gibt es keine einzelne Zahl, die angibt, wie viel Speicher ein Prozess belegt, da Sie auf Komplikationen wie Shared Memory, File-Mapped Memory, Paged-Out Memory und einige andere stoßen. Hier ist eine gute Erklärung einiger Konzepte: stackoverflow.com/questions/1984186/…
tylerl

Ich denke nicht, dass das Working Set Ihnen in diesem Fall irgendetwas Nützliches sagt. In der VM wird gemeldet, dass sie etwa 6 GB Speicher belegt, während die Prozesse von VirtualBox in ihren Arbeitssätzen nicht mehr als 100 MB belegen .
Dawid Ferenczy Rogožan
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.