Jaka jest różnica w wydajności maszyny wirtualnej w porównaniu z hostem fizycznym?

15

Tam, gdzie pracuję, pracujemy na stosunkowo mocnych komputerach PC z dystrybucją Debian Linux. Jednak w przypadku niektórych programów, które musimy zainstalować, lepiej byłoby mieć CentOS i byłyby to nasze główne narzędzia pracy. Zmiana systemu operacyjnego dla wszystkich komputerów w naszym miejscu pracy jest możliwa, ale staramy się zdecydować, czy korzystanie z VirtualBox jest lepszym wyborem dla uproszczenia.

Wszystko zależy od następującego punktu. Programy, które musimy uruchomić, to symulatory, które są bardzo wymagające dla procesora i mogą z łatwością działać do godziny lub więcej przy każdym uruchomieniu symulacji. Musimy zdecydować, czy spadek wydajności podczas korzystania z Virtual Box jest wystarczająco duży, aby zasłużyć na naszą zmianę systemu operacyjnego.

Moje pytanie brzmi więc, czy ktokolwiek może mi zweryfikować, jaka jest wydajność związana z uruchomieniem zadania intensywnie wykorzystującego procesor w wirtualnym pudełku w porównaniu z uruchomieniem go na macierzystym komputerze?

Dzięki.

Aarelowicz
źródło

Odpowiedzi:

15

W przypadku programów do kruszenia liczb (bardzo związanych z procesorem) wydajność maszyny wirtualnej powinna być prawie zerowa. Instrukcje działają bezpośrednio na procesorze, który jest taki sam dla hosta i maszyny wirtualnej.

Nawet w przypadku poważnych zadań kompilacyjnych różnica w wydajności jest prawie niezauważalna. Obsługujemy maszyny wirtualne CentOS w VMware w systemie Windows.

Ponieważ używasz Linuksa na hoście, możesz również rozważyć KVM (Kernel Virtual Machine) zamiast VirtualBox. Jest to seria modułów jądra, które zapewniają usługi wirtualizacji w systemie Linux, wykorzystując rozszerzenia wirtualizacji Intel VT-x dostępne na większości wszystkich współczesnych procesorów. QEMU używa KVM jako akceleratora do uruchamiania kodu x86 bezpośrednio na CPU hosta.

Wystarczy zainstalować, virt-manageraby wypróbować.

Jonathon Reinhart
źródło
Ok. Dam temu szansę. Dziękuję za odpowiedź.
aarelovich
Jak pod względem wydajności KVM wypada w porównaniu z VirtualBox (powiedzmy, że używasz systemu Windows 10 w systemie Linux)?
Royi,
Powinny być one prawie identyczne, jeśli VirtualBox wykorzystuje rozszerzenia wirtualizacji procesora (podobnie jak KVM), a obciążenie jest głównie związane z procesorem. Jeśli zadania są trudne we / wy, wydajność będzie się różnić w zależności od wybranego sprzętu. KVM ma parawirtualizowane sterowniki (virtio), które mogą znacznie przewyższyć emulowane urządzenia (np. E1000 NIC i kontroler dysku LSI SCSI). Zasadniczo powinny one być jednak dość blisko.
Jonathon Reinhart
6

Nie ma jednej dobrej odpowiedzi na to pytanie. Wiele zależy od tego, jak korzystasz z maszyny wirtualnej i od jakich programów.

Np. Użycie VMWare (hiperwizora typu 2) i programu wyłącznie związanego z procesorem zapewniło prawie pełną szybkość procesora. Gdybym użył tego samego hiperwizora i programu z dużą liczbą wywołań systemowych, dostałbym poważne spowolnienie.

A rzeczy zmieniają się również, gdy używasz systemu operacyjnego hypervisor typu 1 (bez gościa). Nawet między tymi masz wiele odmian. Np. Xen z 5 (IIRC z ostatnich weekendów FOSDEM mówi o Xen) trybów, które obsługuje. Od HW za pomocą do wirtualizacji.

Podsumowując: zgodnie z prośbą może różnić się od niemal żadnego spowolnienia do poważnie wolniejszego.


Teraz, gdy skupię się na VirtualBox, jest to hypervisor typu 2. Programy wyłącznie związane z procesorem powinny być w porządku.

Hennes
źródło
Większość tych programów zasadniczo przekształca język na kod C i kompiluje go. Kiedy przeprowadzamy symulację, ta kompilacja jest uruchamiana. Według ciebie to powinno być w porządku?
aarelovich
Podejrzewam, że wydajność będzie w porządku. Moje doświadczenie z wirtualnym pudełkiem jest ograniczone (głównie używałem stacji roboczej VMware), ale nie widzę technicznych powodów, dla których powinno być wolne.
Hennes
Jak pod względem wydajności KVM wypada w porównaniu z VirtualBox (powiedzmy, że używasz systemu Windows 10 w systemie Linux)?
Royi,
5

W rzeczywistości wygląda na to, że Docker może być jeszcze lepszą opcją dla tego, co robisz. Docker zapewnia pojemniki, które są izolowanymi obszarami izolowanymi działającymi na tym samym jądrze. Narzut wywołania systemowego / We / Wy wynosi zero, ponieważ procesy w kontenerze nie różnią się od procesów na hoście.

Ponieważ już korzystasz z systemu Linux, Docker byłby świetnym sposobem na zapewnienie środowiska CentOS bez konieczności ponownej instalacji wszystkich komputerów.

Sprawdź także moje narzędzie Scuba, które ułatwia uruchamianie takich rzeczy, jak kompilacje w kontenerze Docker. Zamiast biegać make, uciekłbyś scuba make. To wszystko!

Jonathon Reinhart
źródło
Daj mi znać, jeśli chcesz to wypróbować i potrzebujesz pomocy na początku.
Jonathon Reinhart
Dzięki, ale to było dawno temu i podjęto decyzję o przeprowadzce. Ale wezmę to pod uwagę, gdy muszę uruchomić program, który ma problemy z uruchomieniem systemu CentOS.
aarelovich