Użycie pamięci maszyny wirtualnej nie pojawia się w menedżerze zadań TaskManager

28

Jest coś w zarządzaniu pamięcią Windows i jego związku z TaskManagerem, którego nie rozumiem i mam nadzieję, że ktoś mnie oświeci.

Jeśli korzystam z maszyny wirtualnej (nie ma znaczenia, czy jest to Virtual PC 2007, Virtual Server 2005 lub VirtualBox, ponieważ działają one w ten sam sposób) i uruchamiam TaskManager, widzę na karcie procesów niektóre wpisy dla maszyny wirtualnej, ale wartości pamięci są dość małe (około 30 MB). Oczywiście nie obejmuje to pamięci faktycznie zużywanej przez samą maszynę wirtualną. Żadna z różnych kolumn związanych z pamięcią, które można uczynić widocznym, nie działa inaczej. Wygląda na to, że użycie pamięci na karcie Wydajność jest prawidłowe dla całkowitego zużycia pamięci, w tym maszyny wirtualnej.

Więc moje pytanie brzmi: dlaczego użycie pamięci maszyny wirtualnej (która będzie równa 100 MB) nie pojawia się na zakładce Procesy?

Scott Bussinger
źródło

Odpowiedzi:

30

VirtualPC, HyperV i prawdopodobnie podobne produkty używają czegoś zwanego pamięcią zablokowaną przez sterownik, która nie jest widoczna w Process Explorer, Menedżerze zadań itp. RAMMap pokaże pamięć zablokowaną przez sterownik używaną przez proces.

Sajee
źródło
1
Dla przypomnienia RAMMap to tylko Vista lub wyższy.
Tim Abell
1
RAMMap nie pokazywał zablokowanej pamięci dla procesu, pokazywał całkowitą liczbę zablokowanych pamięci
NeDark
Aby wskazać innym, nie powiedział, że pamięć jest zablokowana procesowo. Powiedział, że kierowca zablokował pamięć. Tak działa pamięć dynamiczna. Jeśli ci się nie podoba lub uważasz, że to nie w porządku z aplikacją, możesz po prostu skonfigurować maszynę wirtualną dla pamięci statycznej zamiast dynamicznej. Widziałem, że niektóre aplikacje Java mają problemy podczas używania pamięci dynamicznej na maszynie wirtualnej, ustawienie ich na statyczne naprawiło usterkę .
John C
Jaki proces faktycznie alokuje tę pamięć? Próbowałem już VMMap SysInternals, a kiedy wybierzesz odpowiedni VBoxHeadless.exeproces (jest to liść na gałęzi drzewa procesu, tzn. Nie ma on żadnego innego elementu potomnego, możesz na przykład użyć Eksploratora procesów, aby go znaleźć), że „utracona” pamięć pojawia się zarówno w prywatnych bajtach, jak i zestawie roboczym tego procesu (mimo że Eksplorator procesów pokazuje znacznie mniej dla obu wartości). Więc jestem trochę zdezorientowany, dlaczego pokazują różne wartości, ale VMMap wydaje się pokazywać rzeczywistą liczbę .
Dawid Ferenczy Rogožan
6

Każdy hostowany system wirtualizacji, taki jak te, które wymieniłeś, będzie zawierał sterownik urządzenia działający w jądrze systemu operacyjnego hosta. Jest to konieczne, ponieważ programy działające w trybie użytkownika nie mogą wydawać instrukcji niezbędnych do utworzenia maszyny wirtualnej.

Powodem, dla którego nie widzisz pamięci w menedżerze zadań, jest to, że patrzysz na pamięć programów trybu użytkownika powiązanych z maszynami wirtualnymi, a nie na sterownik urządzenia w trybie jądra, który faktycznie przydzielił pamięć dla maszyn wirtualnych.

Jake Oshins
źródło
Jaki proces faktycznie alokuje tę pamięć? Próbowałem już VMMap SysInternals, a kiedy wybierzesz odpowiedni VBoxHeadless.exeproces (jest to liść na gałęzi drzewa procesu, tzn. Nie ma on żadnego innego elementu potomnego, możesz na przykład użyć Eksploratora procesów, aby go znaleźć), że „utracona” pamięć pojawia się zarówno w prywatnych bajtach, jak i zestawie roboczym tego procesu (mimo że Eksplorator procesów pokazuje znacznie mniej dla obu wartości). Więc jestem trochę zdezorientowany, dlaczego pokazują różne wartości, ale VMMap wydaje się pokazywać rzeczywistą liczbę .
Dawid Ferenczy Rogožan
5

Aby wyświetlić ilość pamięci używanej przez maszynę wirtualną, musisz upewnić się, że kolumna Zestaw roboczy jest widoczna w Menedżerze zadań. Często widoczny jest tylko zestaw prywatny.

Aby włączyć tę kolumnę:

1) Uruchom Menedżera zadań

2) Przejdź do zakładki Procesy

3) Widok> Wybierz kolumny

4) Upewnij się, że „Memory - Working Set” jest zaznaczone

Na przykład prywatny zestaw maszyny wirtualnej, którą mam w tej chwili, ma 43 MB, podczas gdy zestaw roboczy to 2,3 GB

Mark Henderson
źródło
1
Jaka jest pełna ilość pamięci używanej przez aplikację? Zestaw roboczy + zestaw prywatny czy tylko zestaw roboczy?
zendar
2
Być może jest różnie w różnych wersjach systemu Windows, ale pod Windows 7 tego nie widzę. Numery „Zestaw roboczy” są większe niż liczby „Prywatny zestaw roboczy”, ale nie są wystarczająco odległe, aby uwzględnić pamięć maszyny wirtualnej. Próbowałem wszystkich kolumn związanych z pamięcią i żadna z nich nie. Dotyczy to zarówno Windows Virtual PC, jak i VirtualBox. Jakiej wersji systemu Windows i jakiego hosta maszyny wirtualnej używasz?
Scott Bussinger,
Niestety, nie ma jednej liczby wskazującej „ile pamięci” zużywa proces, ponieważ dochodzi do komplikacji, takich jak pamięć współdzielona, ​​pamięć odwzorowana na plik, pamięć stronicowana i kilka innych. Oto dobre wyjaśnienie kilku pojęć: stackoverflow.com/questions/1984186/…
tylerl
Nie sądzę, że zestaw roboczy mówi ci coś przydatnego w tym przypadku. Wewnątrz maszyny wirtualnej zgłasza, że ​​zużywa około 6 GB pamięci, podczas gdy procesy VirtualBox nie zużywają więcej niż 100 MB w swoich zestawach roboczych .
Dawid Ferenczy Rogožan