Używam VirtualBox na komputerze z systemem Windows XP z 2 GB pamięci RAM. Stworzyłem wirtualną maszynę Ubuntu i przydzieliłem jej podstawową pamięć 750 MB.
Aby to przetestować, uruchomiłem 20 rzeczy naraz na maszynie wirtualnej. Według „top” w Ubuntu wykorzystano 750 megabajtów pamięci, a także znaczną przestrzeń wymiany.
Jednak w Menedżerze zadań Windows VitrualBox zużywał tylko 45 000 KB pamięci. Gdy poprosiłem maszynę wirtualną o robienie coraz więcej, zużycie procesora przez proces VirtualBox wzrosło (w systemie Windows), ale użycie pamięci pozostało takie samo.
W jaki sposób maszyna wirtualna wykorzystująca 750 MB pamięci może zużywać tylko 45 MB pamięci na maszynie fizycznej?
Zakładam, że odpowiedź brzmi: maszyna wirtualna nie używa prawdziwej pamięci, ale pamięć symulowaną (tj. Przestrzeń wymiany), ale z pewnością czuje się tak, jakby działała w pamięci RAM.
AKTUALIZACJA: Bawiłem się perfmon zgodnie z sugestią. Nawet podsumowując wszystko, co mogę wymyślić, nadal zajmuje mniej niż 300 megabajtów ... więc nadal jest tajemnicą.
Process VirtualBox VirtualBox#1 Total
PoolNonpagedBytes 5,840 42,552 48,392
PoolPagedBytes 119,796 166,892 286,688
PrivateBytes 8,884,224 52,719,616 61,603,840
VirtualBytes 75,939,840 161,202,176 237,142,016
Sum 84,949,700 214,131,236 299,080,936
źródło
W przypadku niektórych rozwiązań do wirtualizacji pod Linuksem sposób, w jaki przydzielają pamięć, sprawia, że jądro hosta wydaje się być specjalnym plikiem odwzorowanym w pamięci (podobnie jak
/proc/kcore
plik specjalny), więc jest liczone w liczbie „buforowanej” w danych wyjściowych zfree
, a nie w liczba „wykorzystanych”.Przypuszczam, że coś podobnego dzieje się ze środowiskiem Windows: 45 MB zostanie wykorzystane przez procesy zarządzania VirtualBox, a 750 przydzielone samej maszynie wirtualnej zostanie policzone gdzie indziej.
źródło
Może to być pamięć wirtualna, pliki zmapowane w pamięci lub coś podobnego.
Czy próbowałeś wyświetlić inne kolumny w Menedżerze zadań?
źródło
Nie wierz menedżerowi zadań. Nie widzi wszystkiego.
Ten problem jest częściej spotykany w SQL Server, na przykład w Sql, nigdy nie znalazłem nikogo, kto powiedziałby mi sposób na uzyskanie dokładnych informacji z Menedżera zadań, który prowadziłby mnie do wniosku, że postać nie jest ukryta w jednym z inne kolumny.
źródło