Stacja robocza Vmware wykorzystuje całą moją pamięć RAM

4

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 -mw 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 -mna 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 -mponownie:

             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_cachesa 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.
jtlindsey
źródło
3
Chyba że coś mi brakuje, wygląda na to, że pamięć jest używana tylko do pamięci podręcznej? Tak właśnie powinno być! Wolna pamięć to zmarnowana pamięć.
Daniel B
1
Jakiej pamięci fizycznej używasz dla systemu i maszyny wirtualnej? W zależności od tego, co się dzieje, wydajność we / wy może być po prostu niewystarczająca, szczególnie jeśli nadal jesteś zajęty instalowaniem jednego z systemów operacyjnych gościa. Nie powinno to stanowić większego problemu, jeśli gość jest faktycznie zainstalowany i po prostu bezczynny.
Seth
1
@ SimonA.Eugster Nie wiem. Może procesor jest zbyt zajęty, może dysk twardy (mechaniczny?) Jest zbyt zajęty.
Daniel B
1
Przez pamięć fizyczną rozumiesz, jak z dysku HDD / SSD. Nie musisz koniecznie zauważać zacinania się na maszynie wirtualnej, jeśli jest ona nadal zajęta instalacją lub coś takiego. Dlatego pytałem za każdym razem, gdy komputer z systemem Windows był bezczynny lub zajęty. Może być zajęty, wykorzystując całą przepustowość dysku twardego do zaoferowania w celu rozpakowania niektórych plików lub podobnych. Jeśli jest bezczynny i tak się dzieje, może wypróbować starszą wersję Workstation lub rozważyć skontaktowanie się z VMWare?
Seth
1
Nie możesz zapisać pamięci RAM na później. Używanie pamięci RAM jest dobre, ponieważ jedyne, co możesz zrobić poza użyciem, to marnowanie jej. Jeśli masz problem z wydajnością, powiedz nam o tym tak szczegółowo, jak to możliwe. (Kiedy to się dzieje. Co sprawia, że ​​znika? Co konkretnie jest wolne? I tak dalej.)
David Schwartz

Odpowiedzi:

1

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.

Journeyman Geek
źródło
Dzięki; Próbowałem obserwować IO z iotopem / spojrzeniami, chociaż także zawiesza się, gdy system zawiesza się, więc jak dotąd nie mogłem znaleźć niczego. Jeśli chodzi o pamięć, dodałem więcej szczegółów do pytania OP, system faktycznie używa dysku SSD (co jest bardzo miłe, ponieważ możesz zawiesić i wznowić tak szybko, jak niektóre programy biurowe otwierają się i zamykają: -] (Ale może rozważ dysk SSD, który jest zbudowany dla wielu operacji R / W, tańsze dyski SSD z potrójnymi komórkami (TLC) są być może bardziej niebezpieczne
Simon A. Eugster,
1

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/cachewierszu. 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!” .

bwDraco
źródło
Dlaczego ta (i Journeyman Geek) odpowiedź została odrzucona?
bwDraco
Chociaż pierwotne pytanie nie mogło zostać rozwiązane, ta odpowiedź jest dość pouczająca, dlatego dam ci nagrodę. Lepsze niż utrata go niewykorzystane.
Simon A. Eugster,
1

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.

jtlindsey
źródło
To jest interesujące. Więc po ponownym zainstalowaniu Ubuntu + VMware możesz odtworzyć problem, ale nie po zmianie na inną płytę główną?
Simon A. Eugster,
1
Zgadza się, udało mi się odtworzyć problem z wieloma ponownymi instalacjami ubuntu (smaki mate i kde) i vmware. Kiedy przestawiłem się na inną płytę główną, spodziewałem się, że problem będzie się utrzymywał, ponieważ uznałem, że musi to być problem z vmware na hoście Linux. Ku mojemu zaskoczeniu wszystkie problemy zniknęły, a jedynymi zmiennymi, które zostały zmienione, była inna płyta główna, RAM i CPU. O dziwo, stary sprzęt obecnie bez problemu obsługuje CentOS7 nas z hiperwizorem kvm / qemu.
jtlindsey
Być może jest to problem VMware z tym sprzętem i tym systemem hosta? Moje rozwiązanie polega teraz na użyciu VirtualBox zamiast VMware.
Simon A. Eugster,
0

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:

sh  -c  "sync; echo 3 > /proc/sys/vm/drop_chaces"

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.

harry4516
źródło