Kiedy uruchamiam maszynę wirtualną na stacji roboczej VMware, po kilku minutach użytkowania zużywa ona całą moją pamięć RAM (16 GB). Wydajność mojego systemu spowalnia do indeksowania. Problem zdarza się także w przypadku gościa Linux, ale gorzej w przypadku gościa Windows. W preferencjach VMware Workstation mam zarezerwowaną pamięć ustawioną na 2 GB i ustawiłem, aby zmieściła całą pamięć maszyny wirtualnej w zarezerwowanej pamięci RAM hosta, ale to nie pomogło pomimo rekomendacji dokumentów.
Czy ktoś wie, jak powstrzymać VMware Workstation przed zużyciem całej pamięci RAM po uruchomieniu wirtualnej maszyny gościa?
Nie mam problemu z VirtualBox i próbowałem ponownie zainstalować VMware Workstation i problem nadal występuje. Przestałbym go używać, ale niektóre projekty wymagają ode mnie VMware.
Oto dalsze szczegóły:
Kiedy uruchamiam free -m
w terminalu, gdy VMware Workstation jest otwarta, ale nie działa gość (przed uruchomieniem VM):
total used free shared buffers cached
Mem: 15945 3370 12575 198 23 696
-/+ buffers/cache: 2650 13295
Swap: 19072 74 18998
Po uruchomieniu gościa z systemem Windows 10 i uruchomieniu go przez kilka minut, jeśli uruchomię się free -m
na moim hoście, otrzymuję:
total used free shared buffers cached
Mem: 15945 15694 251 2182 66 12158
-/+ buffers/cache: 3468 12477
Swap: 19072 74 18998
Kiedy zamykam gościa Windows 10 i uruchamiam free -m
ponownie:
total used free shared buffers cached
Mem: 15945 13499 2446 197 67 10209
-/+ buffers/cache: 3223 12722
Swap: 19072 74 18998
Aby odzyskać pamięć RAM, muszę uruchomić:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
a następnie uruchomić free -m
:
total used free shared buffers cached
Mem: 15945 3312 12633 198 2 642
-/+ buffers/cache: 2667 13278
Swap: 19072 74 18998
Specyfikacja hosta systemu i gościa
//////////////////////////////////////
System Host:
Ubuntu 14.04LTS
VMware Workstation 12 Pro Version: 12.1.1 build-3770994
///////////////////////////////////////
//////////////////////////////////////
VM Guest:
Windows10
RAM: 1984MB
Processors: 1
DisplayRAM: 1GB
///////////////////////////////////////
//////////////////////////////////////
Motherboard:
ASUS AMD M5 A97 R2.0
///////////////////////////////////////
///////////////////////////////////////
CPU:
AM3+ AMD FX 8320 8-Core
3.5GHz 16MB Total Cache, (5GHz Max)
///////////////////////////////////////
///////////////////////////////////////
Graphics Card:
ZOTAC Nvidia Geforce GT 730
4GB DDR3 64-bit HDCP
DUAL-Link DVI, HDMI, VGA
///////////////////////////////////////
///////////////////////////////////////
RAM: 16GB
Kingston Hyperx
2x8GB Memory Sticks
1866 DDR3 240-pin
///////////////////////////////////////
////////////////////////////////////////
POWER SUPPLY:
EVGA 1000w PS
1000GQ
80+ Gold series
///////////////////////////////////////
Aktualizacja, 19 września 16
(Należy pamiętać, że jest to dodatkowa informacja autorstwa @granjow, która, mam nadzieję, reprezentuje doświadczenie PO).
Aby dodać kilka wyjaśnień, problem nie polega na tym, że liczba w kolumnie „wolnej pamięci” jest niewielka i nie jesteśmy zadowoleni z tej liczby, ponieważ większe liczby są ładniejsze. Problem polega na tym, że wydajność systemu jest naprawdę straszna.
Problem objawia się następująco: Po uruchomieniu maszyny wirtualnej i niektórych programów spada ilość wolnej pamięci, czego należy się spodziewać. Ilość pamięci wykorzystywanej przez VMware znacznie przekracza skonfigurowany limit (tj. 10 GB zamiast 4 GB, przy całkowitej ilości tylko 8 GB fizycznej pamięci RAM). W pewnym momencie zarówno gość, jak i host kilkakrotnie zaczynają zamrażać przez> 10 s: na przykład nawigowanie po plikach w WebStorm (gość), otwieranie nowej karty przeglądarki lub karty terminalu lub po prostu naciśnięcie Alt-Tab (host).
Obserwując obciążenie procesora w tych przypadkach, użycie procesora przez gościa spada do 100%, dopóki system zawiesza się, ale żaden program nie jest tak zajęty w menedżerze zadań. Zasadniczo mogę zaobserwować typowe objawy braku pamięci RAM i intensywnego używania dysku jako pamięci podręcznej. Podczas obserwowania dziennika VMware często pojawia się wiersz o uruchamianiu balonów, który jest uważany za bardzo inteligentny mechanizm VMware, który zarządza i zwalnia pamięć zwolnioną przez gościa.
Nie mówimy o złych specyfikacjach maszyny hosta, ponieważ
- dokładnie takie same VM został uruchomiony na dokładnie tym samym sprzęcie w systemie Windows 10 płynnie, bez kiedykolwiek problemy z wydajnością
- ta sama maszyna wirtualna, zaimportowana do VirtualBox na Ubuntu, działa równie dobrze, jak z VMware na Windows 10, z widokiem htop / rzutów pokazującym stałe użycie pamięci około 4,6 GB i w ogóle się nie zawiesza.
źródło
Odpowiedzi:
Martwisz się o nic. Nieużywany taran jest zmarnowanym taranem. Twój system jako taki inteligentnie wykorzysta resztki pamięci RAM do buforowania, przyspieszając wszystko w razie potrzeby.
top to miłe narzędzie - daje przydatne informacje, ale może być konieczne bardziej holistyczne podejście - pokazałby to iotop lub podobne narzędzia. Moje podejrzenie jest to, że jej przechowywanie jest powolny, a VirtualBox i VMware uchwyt IO i wykorzystanie RAM inaczej. „Naprawą” może być użycie ssd i / lub uruchomienie maszyny wirtualnej z innego miejsca niż główny system, aby sprawdzić, czy to pomoże. System uruchamiam z dysku SSD, a maszyn wirtualnych z dużego dysku o prędkości 7200 obr./min, chociaż bawiłem się, gdy dostałem SSD.
źródło
W żadnym momencie twój system nie działał w pobliżu pamięci. Nie jest wymagane żadne działanie.
To, co się tutaj dzieje, polega na tym, że duża aktywność dysku spowodowana normalnym działaniem maszyny wirtualnej powoduje, że system zapełnia pamięć pamięci w systemie, która w przeciwnym razie byłaby nieużywana. Zasadniczo Linux pobiera dane, które są często lub ostatnio dostępne z dysku (w Twoim przypadku są to głównie dane odczytywane przez dysk wirtualny maszyny wirtualnej) i przechowuje kopię w pamięci RAM, aby zwiększyć wydajność. Dzieje się tak, ponieważ pamięć RAM jest znacznie szybsza niż jakikolwiek dysk twardy lub dysk flash SSD. Jeśli inne aplikacje na hoście potrzebują więcej pamięci, system po prostu zwolni niektóre buforowane dane i przydzieli je tym aplikacjom.
Rzeczywista ilość pamięci fizycznej w użyciu i dostępnej dla aplikacji, ignorując buforowane dane, jest wymieniona w
-/+ buffers/cache
wierszu. W systemie pozostało około 12 GB użytecznej pamięci podczas działania maszyny wirtualnej, ale większość z nich została wykorzystana na buforowane dane. To zachowanie jest normalne i nie musisz nic z tym robić. W rzeczywistości ręczne opróżnienie pamięci podręcznej (za pomocąsync && echo 3 | sudo tee /proc/sys/vm/drop_caches
) obniży wydajność systemu, ponieważ system będzie musiał uzyskać dostęp do dysku, aby odczytać dane, a nie tylko pobrać kopię z pamięci RAM.Niska wydajność systemu może być spowodowana dużym obciążeniem dysku podczas działania maszyny wirtualnej. Jeśli używasz mechanicznego dysku twardego, rozważ uaktualnienie do dysku SSD.
Więcej informacji o tym, jak Linux wykorzystuje wolną pamięć do buforowania danych można znaleźć w „Linux zjadł moją pamięć RAM!” .
źródło
Po wielu ponownych instalacjach systemu operacyjnego i różnych konfiguracjach problem, który opublikowałem, został zawężony do mojej płyty głównej, pamięci RAM lub procesora.
Użyłem tego samego dysku twardego (nawiasem mówiąc SSD) w innym wolniejszym systemie (szóstej generacji procesor Intel i5, procesor 2,3 GHz / 2,8 GHz), z tym samym systemem operacyjnym i taką samą ilością pamięci RAM, ale z różnymi dyskami i nie doświadczyłem problem już. Użytkownik, który opublikował nagrodę za zwrócenie tak dużej uwagi na ten 2-miesięczny post, może chcieć przeprowadzić dokładny test na swoim sprzęcie.
źródło
Ten problem występuje również na moim komputerze (32 GB pamięci RAM). VMWare zapełnia całą pamięć RAM i po krótkim czasie system gwałtownie zwalnia.
VMWare wypełnia „pamięć podręczną RAM” - jest to nieużywana pamięć RAM, którą wykorzystuje jako pamięć podręczną. Teoretycznie NIE powinno to wymagać żadnych działań, jak pisze bwDraco.
Niestety w praktyce nie jest to prawdą. Ten problem zaczął się od VMWare 10, wcześniejsze wersje nie miały tego problemu.
Można to sprawdzić za pomocą
htop
. Zobacz żółty pasek dla „Mem”. Jeśli ten żółty pasek (użycie pamięci podręcznej RAM) znajduje się po prawej stronie, pamięć podręczna jest pełna, a urządzenie zwalnia.Nie znam przyczyny tego problemu, ale mam rozwiązanie, które działa dobrze:
Korzystając z zadania cron, wykonuję to polecenie co trzy minuty:
Spowoduje to wyczyszczenie pamięci podręcznej VMWare, a maszyna będzie działać płynnie bez problemów z wydajnością.
Jednym z możliwych wyjaśnień może być to, że VMWare zjada całą pamięć podręczną RAM i nie ma już pamięci podręcznej dla jądra Linux. VMWare nigdy nie zwalnia tej pamięci, ale Linux potrzebuje również pamięci podręcznej, aby działać szybciej.
źródło