Czy maszyny wirtualne z systemem Linux w VMware / ESX powinny mieć partycję wymiany?

18

W przypadku konfiguracji VMware ESX jaka jest różnica między tymi opcjami ?:

  • maszyna wirtualna z systemem Linux z 1 GB pamięci RAM i partycją wymiany 1 GB, a maszyna wirtualna używa pamięci RAM o pojemności 1,5 GB
  • maszyna wirtualna z systemem Linux z 1 GB pamięci RAM i bez partycji wymiany, a maszyna wirtualna używa pamięci RAM o pojemności 1,5 GB

Mam na myśli, że w obu przypadkach używana jest zamiana;

  • w pierwszej zamianie odbywa się na partycji wymiany linux
  • w drugim przypadku VMware zamieni 512 MB na pulę pamięci VMware.

Czy jest więc sens nadawanie Linux VM partycji wymiany?

Sandra
źródło
Pytasz, czy host ESX wymaga wymiany, czy też nie, jak to się robi z maszyną wirtualną? Może chciałbym rozwinąć pytanie, aby sprecyzować, co masz na myśli.
Bart Silverstrim
Mam nadzieję, że teraz zrobione.
Sandra,

Odpowiedzi:

15

Ignorując fakt, że ludzie mają do czynienia z przyczynami specyficznymi dla systemu operacyjnego, mam dwa powody, dla których źle jest nie uruchamiać partycji / pliku wymiany.

  1. Jeśli masz 1,5 GB pamięci RAM przydzielonej maszynie wirtualnej bez pliku / partycji miejsca i chce ona użyć 1,5 GB + 1 MB, zgłosi błąd braku pamięci. Dzięki przestrzeni wymiany będzie mógł wymieniać dane z aktywnej pamięci na dysk.
  2. System operacyjny gościa wykonuje znacznie lepsze zarządzanie pamięcią niż host. Właśnie dlatego istnieje technologia taka jak balonowanie pamięci, ponieważ Host może zgadywać, która pamięć nie jest w tej chwili potrzebna, ale gość wie o wiele bardziej inteligentny poziom (zapobiega to zamianie pamięci systemu operacyjnego, co mogłoby zabić wydajność).
Scott Keck-Warren
źródło
10

Tak. To jest sposób uniksowy.

Unix (nawet Linux) spodziewa się możliwości wymiany.
Złe rzeczy dzieją się, gdy system nie może zamienić (albo dlatego, że został źle skonfigurowany bez partycji wymiany, albo dlatego, że przestrzeń wymiany jest pełna). W Linuksie jednym z tych Bad Things jest Out Of Memory Killer, który wbije nóż w tył programu, który według niego wykorzystuje najwięcej pamięci RAM (ulubionym celem są serwery baz danych).

voretaq7
źródło
4

Co /proc/sys/vm/overcommit_memoryustawiłeś? Z dokumentacji jądra:

0       -       Heuristic overcommit handling. Obvious overcommits of
                address space are refused. Used for a typical system. It
                ensures a seriously wild allocation fails while allowing
                overcommit to reduce swap usage.  root is allowed to
                allocate slightly more memory in this mode. This is the
                default.

1       -       Always overcommit. Appropriate for some scientific
                applications.

2       -       Don't overcommit. The total address space commit
                for the system is not permitted to exceed swap + a
                configurable percentage (default is 50) of physical RAM.
                Depending on the percentage you use, in most situations
                this means a process will not be killed while accessing
                pages but will receive errors on memory allocation as
                appropriate.

Dlatego jeśli używasz 1, nie ma różnicy. Jeśli używasz 2 i nie ma pliku wymiany linux, żaden proces nie będzie w stanie przydzielić 512M (wirtualnej) pamięci. Wynik nie jest jasny dla 0.

Edycja: Od http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit tak działa 0:

Heurystyczne przesadne próby ustalenia ilości pamięci, jaką system może ci dać, gdyby odzyskał całą pamięć, jaką mógł, i żaden inny proces nie zużyłby więcej pamięci RAM niż obecnie; jeśli poprosisz o więcej, przydzielenie zostanie odrzucone. W szczególności teoretyczną liczbę „wolnej pamięci” oblicza się poprzez dodanie wolnego miejsca wymiany, wolnej pamięci RAM (mniej 1/32, jeśli nie jesteś rootem) i całej przestrzeni używanej przez zunifikowaną pamięć podręczną bufora i dane jądra, które są oznaczone jako możliwe do odzyskania (mniej niektórych zarezerwowanych stron).

Używa więc swap również w obliczeniach. Ogólnie przestrzegam zalecenia RHEL:

M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
    S = M *2
Else
    S = M + 2
Mark Wagner
źródło
1
cat /proc/sys/vm/overcommit_memoryzwraca 0. Co polecasz pod względem overcommit_memorywartości i zamiany / braku zamiany?
Sandra,
3

Partycje wymiany mogą być potencjalnie szybsze, szczególnie w sytuacjach, gdy dysk główny jest prawie pełny i nie można utworzyć pliku wymiany w jednym kawałku bez fragmentacji, nie mówiąc już o narzutach, które mogą zostać utworzone przez system plików i, jeśli to możliwe, takich jak LVM.

Ale wydajność obu komputerów i tak spadnie, jeśli na dysku pozostanie 33% wymagań dotyczących pamięci.

Sven
źródło
Kiedy mówisz „dysk root”. Masz na myśli na hoście ESX, gdzie ESX tworzy pliki wymiany?
Sandra,
Nie, mam na myśli dysk systemowy maszyny wirtualnej zawierający główny system plików. W końcu to właśnie tam nastąpi zamiana przy braku dedykowanej partycji wymiany.
Sven
Uwaga: ta odpowiedź dotyczy debaty między partycją wymiany a plikiem wymiany. Myślałem, że pytanie brzmi, czy w ogóle potrzebujesz wymiany.
user606723,
@ user606723: Jeśli w ogóle nie użyjesz zamiany, wystąpi błąd braku pamięci, jeśli spróbujesz przydzielić więcej pamięci niż maszyna wirtualna, a użycie 1,5 GB z sytuacją fizyczną 1 GB i tak nie będzie możliwe.
Sven
@ Seven, tak, ale nie jest pewne, że coś takiego może się wydarzyć. To zależy od administratora.
user606723,
0

Proszę zobaczyć następujący link - https://help.ubuntu.com/community/SwapFaq

Zasadniczo, chyba że potrzebujesz hibernacji lub zużywasz więcej pamięci niż przydzielasz do maszyny wirtualnej, partycja wymiany nie ma znaczącej przewagi.

Od lat nie korzystałem z partycji / pliku wymiany na żadnym z moich komputerów z systemem Linux.

użytkownik606723
źródło
1
Pytanie nie dotyczy wymiany / braku wymiany. Chodzi o to, jak VMware obsługuje zamianę.
Sandra,
0

Oczywistą zaletą wymiany jest to, że gdy komputer ulega awarii, nadal można utworzyć zrzut awaryjny. Popraw mnie, jeśli się mylę, ale nie jest to możliwe bez zamiany. Nie jest to oczywiście specyficzne dla VMWare, ale ma zastosowanie wszędzie. Czułem, że ważne może być wskazanie.

juwi
źródło