To pytanie jest dość ogólne, ale najbardziej interesuje mnie, czy maszyna wirtualna z systemem Ubuntu Enterprise Cloud będzie wolniejsza niż ta sama maszyna fizyczna bez wirtualizacji. Ile (1%, 5%, 10%)?
Czy ktoś mierzył różnicę wydajności serwera WWW lub serwera db (wirtualny VS fizyczny)?
Jeśli zależy to od konfiguracji, wyobraźmy sobie dwa czterordzeniowe procesory, 12 GB pamięci i kilka dysków SSD, na których działa 64-bitowy serwer korporacyjny Ubuntu. Ponadto tylko 1 maszyna wirtualna może korzystać ze wszystkich dostępnych zasobów.
virtualization
performance
cloud-computing
benchmark
Michał Illich
źródło
źródło
Odpowiedzi:
Typowe doświadczenie dla obciążenia serwera ogólnego przeznaczenia na czystym metalu \ Hypervisor typu 1 to około 1-5% obciążenia procesora i 5-10% obciążenia pamięci, z pewnym dodatkowym obciążeniem, które różni się w zależności od ogólnego obciążenia operacji we / wy. Jest to dość spójne z moim doświadczeniem dla nowoczesnych systemów operacyjnych gościa działających pod VMware ESX \ ESXi, Microsoft Hyper-V i Xen, w których sprzęt został odpowiednio zaprojektowany. W przypadku 64-bitowych systemów operacyjnych serwera działających na sprzęcie obsługującym najnowsze rozszerzenia sprzętowe do wirtualizacji procesora oczekiwałbym, że wszystkie hiperwizory typu 1 zmierzą w kierunku tego 1% narzutu. Dojrzałość KVM nie jest w tej chwili całkiem zależna od Xen (lub VMware), ale nie widzę powodu, aby sądzić, że byłoby to zauważalnie gorsze od nich w opisanym przez ciebie przykładzie.
W szczególnych przypadkach użycia ogólna \ łączna „wydajność” środowiska wirtualnego może przekroczyć serwery typu bare metal / dyskretne. Oto przykład dyskusji na temat tego, w jaki sposób implementacja klastrowa VMware może być szybsza \ lepsza \ tańsza niż zwykły Oracle RAC. Techniki zarządzania pamięcią VMware (szczególnie przejrzyste udostępnianie stron) mogą prawie całkowicie wyeliminować narzut pamięci, jeśli masz wystarczająco dużo maszyn wirtualnych, które są wystarczająco podobne. Ważną rzeczą we wszystkich tych przypadkach jest to, że korzyści związane z wydajnością i wydajnością, jakie może zapewnić wirtualizacja, zostaną zrealizowane tylko wtedy, gdy konsolidujesz wiele maszyn wirtualnych na hostach, twój przykład (1 maszyna wirtualna na hoście) zawsze będzie do pewnego stopnia wolniejszy niż goły metal .
Chociaż jest to przydatne, rzeczywiste problemy związane z wirtualizacją serwerów koncentrują się wokół zarządzania, technik wysokiej dostępności i skalowalności. Margines wydajności procesora 2-5% nie jest tak ważny, jak możliwość skutecznego skalowania do 20, 40 lub dowolnej liczby maszyn wirtualnych potrzebnych na każdym hoście. Możesz poradzić sobie z obniżeniem wydajności, wybierając nieco szybszy procesor jako linię bazową lub dodając więcej węzłów w klastrach, ale jeśli host nie może skalować liczby maszyn wirtualnych, może uruchomić lub środowisko jest trudne do zarządzania lub zawodny, to jest bezwartościowy z punktu widzenia wirtualizacji serwerów.
źródło
„Wydajność” ma wiele aspektów. N00bs mierzy czas rozruchu systemu operacyjnego i mówi, że np. Windows 2012 jest bardzo świetny, ponieważ uruchamia się w 12 sekund na prawdziwym HD, może 1 sekundę na SSD.
Ale ten rodzaj pomiaru nie jest bardzo przydatny: wydajność jest równa czasowi uruchamiania systemu operacyjnego, ale system operacyjny uruchamia się raz w miesiącu tak optymalizując, że nie ma to większego sensu.
Ponieważ to moja codzienna działalność, mogę wskazać 4 następujące części składające się na „wydajność”
Obciążenie procesora
Powinno to być porównywalne, co oznacza, że zadanie zajmujące 1000 ms na goły metal wykona się w czasie 1000 ms i prawdopodobnie 1050 ms w taktowaniu bezczynnego środowiska VM na tym samym sprzęcie (niektóre szczegóły później). Google MSDN dla czasu procesora i kwerendy licznika zapytań i ty możesz zrobić coś, co może pokazać, ile VM pochłania twój czas procesora.
Wydajność SQL
Wydajność SQL w dużej mierze zależy od operacji we / wy do magazynu danych, w którym przechowywane są dane SQL. Widziałem 300% różnicy między ISCSI 1. generacji, które można znaleźć na macierzystym serwerze NAS Buffalo, a następnie ISCSI z DCE i prawdziwym oldschoolowym środowiskiem FC na wszystkich poziomach. FC nadal wygrywa w dzisiejszych czasach, ponieważ opóźnienie FC jest najmniejszym możliwym do archiwizacji, co prowadzi do „kopii” protokołu FC dla ulepszeń centrum danych TCP / IP. Tutaj IOps i opóźnienia są niezbędne, ale także przepustowość IO od procesu serwera do mediów - zależy od tego, czy aplikacja ma tendencję do No-SQL lub Datawarehousing, czy też znajduje się w środku takich systemów ERP ... Sage KHK dla małych przedsiębiorstw, SAP dla wielkich.
Dostęp do systemu plików
Niektóre aplikacje, takie jak przesyłanie strumieniowe wideo, wymagają minimalnej przepustowości, inne polegają na maksymalnej przepustowości we / wy, np. Otwieranie dużych plików w edytorze szesnastkowym, ładowanie projektu wideo do ulubionego programu do tworzenia filmów. Nie jest to typowa sytuacja na vm .... IOps może być również ważne dla programistów. Programiści często korzystają z maszyn wirtualnych, ponieważ środowiska programistyczne są bardzo wrażliwe, dlatego pokusa, aby to zrobić na maszynie wirtualnej, jest wysoka. Kompilacja dużego projektu często oznacza odczytywanie ton małych plików, robienie kompilatora i kompilację EXE oraz komponentów.
Opóźnienie sieci w stosunku do klienta
Tutaj użyteczność WYSIWIG przebiega podobnie jak Word 2010, Openoffice Writer, LaTEX, GSView i inne, w dużym stopniu zależą od szybkości - szybkości działania myszy od klienta do serwera. Jest to szczególnie ważne w aplikacjach CAD ... ale także nie dotyczy sieci LAN, to jest zdalny dostęp przez WAN, gdzie jest to ważne.
Ale - i mówię z perspektywy lat konsultacji - są użytkownicy posiadający hasło administratora (i często są to pracownicy BIG firmy z DUŻYM budżetem i DUŻYM portfelem) narzekający na to i tamto, ale należy to wyjaśnić który komponent wydajności jest dla nich ważny i który jest ważny z punktu widzenia używanej aplikacji.
Najprawdopodobniej nie jest to notatnik, ale wysoce wyrafinowana aplikacja do inżynierii tego i tamtego, co również było bardzo kosztowne i powinno zostać przeniesione na VMware, HyperV lub Xenapp i nie działa zgodnie z oczekiwaniami.
Ale nie mają na myśli, że może działać na Xeonach 1,5 GHz na łopatach nieprzeznaczonych do czystej wydajności procesora, są zbudowane dla średniej, powiedzmy „zoptymalizowanej dla $ na cykl procesora” lub „cykli procesora na wat” .
A kiedy mówimy o kompromisach i ekonomizacjach - prowadzi to głównie do nadmiernego zaangażowania. Nadmierne zaangażowanie prowadzi do braku zasobów, w których procesor może być obsługiwany całkiem dobrze, ale brak pamięci prowadzi do stronicowania, brak operacji we / wy w podstawowych routerach prowadzi do wydłużenia czasu odpowiedzi na wszystko, a przeciążenie transakcyjne dowolnego rodzaju pamięci może zatrzymać każdą przydatną aplikację od zbyt szybkiego reagowania. Tutaj wymagane jest monitorowanie, ale wielu dostawców oprogramowania nie jest w stanie dostarczyć takich informacji .... z drugiej strony host z zasobami 3 fizycznych serwerów może najprawdopodobniej obsłużyć 8 maszyn wirtualnych o takim samym układzie jak fizyczne ...
Kompromisy procesora w bezczynnych systemach często prowadzą do tego, że systemy działają o 50% wolniej niż systemy fizyczne, z drugiej strony nikt nie jest w stanie zainstalować systemu „rzeczywistego” i aplikacji „rzeczywistego świata”, informatycy klienta chcą przenieść się na maszynę wirtualną pudełko. I zajmuje to kilka dni (może tygodni, ale na pewno 42 spotkania), aby wyjaśnić, że technologia VM może zaoferować elastyczność, handlując czystą prędkością procesora. Jest to po prostu wbudowane w procesory w tych systemach typu blade obsługujących obecnie większe środowiska VM. Również pamięć nie będzie porównywalna, obowiązują również pewne kompromisy. DDR3 1600 CL10 będzie miał większą przepustowość pamięci niż DDR2 800 ECC LLR - i wszyscy wiedzą, że procesory Intel korzystają z tego w inny sposób niż AMD cpus. Ale rzadko są stosowane w środowiskach produkcyjnych, więcej w białych skrzynkach lub centrach danych hostowanych w krajach trzeciego świata, którzy oferują usługi centrum danych za 10% ceny, jaką centrum danych w twojej ojczyźnie może zapłacić. Dzięki Citrx centrum danych może być wszędzie, jeśli opóźnienie między użytkownikiem końcowym a centrum danych jest mniejsze niż 150 ms.
I perspektywa użytkowników domowych ....
Wreszcie, niektórzy ludzie chcą wyrzucić Win7 lub XP i wymienić je na Linuksa, a potem pojawia się pytanie dotyczące gier, ponieważ w rzeczywistości tylko kilka gier jest dostępnych dla Linuksa i Windowsa. Gra opiera się w dużej mierze na akceleracji 3D. Stacja robocza VMWare 6.5 i podłączony bezpłatny odtwarzacz mogą obsługiwać DirectX 9, co oznacza, że Doom3 na maszynie wirtualnej może działać na głównej karcie graficznej na pełnym ekranie. Gry to w większości 32-bitowe aplikacje, więc nie zjedzą więcej niż 3 GB i przeważnie nie więcej niż 3 procesory (widoczne na Crysis). Nowsze maszyny VM i WS obsługują wyższe wersje DirectX i prawdopodobnie również OpenGL ... Grałem w UT i UT2004 na VMware 6.5, host miał ATI Radeon 2600 mobile i procesor T5440. Był stabilny przy 1280 x 800 i można go odtwarzać nawet w grach sieciowych ...
źródło
Tak. Ale to nie jest pytanie. Różnica jest zwykle nieistotna (od 1% do 5%).
źródło
Chciałbym zauważyć, że wirtualizacja może w niektórych sytuacjach przewyższyć wydajność fizyczną. Ponieważ warstwa sieci nie jest ograniczona do prędkości gigabitowej (mimo że emulacja sprzętowa dotyczy określonej karty LAN), maszyny wirtualne na tym samym serwerze mogą komunikować się między sobą z prędkością przekraczającą prędkość wielu serwerów fiskalnych ze średnim sprzętem sieciowym.
źródło
Przeprowadziłem kilka porównań testowych tego samego oprogramowania z tym samym testem (aplikacja internetowa oparta na .NET z dużym natężeniem ruchu sieciowego i znacznym dostępem do SQL Server). Oto co widziałem:
Łatwo mogę zobaczyć, jak ktoś może budować testy porównawcze, które dowodzą, że są one o 1% różne lub takie same lub gdzie maszyny wirtualne są szybsze. Nie uwzględniaj niczego, w przypadku gdy Twój proces korzysta z zalet lokalnego wsparcia sprzętowego, w którym maszyna wirtualna musi symulować to w oprogramowaniu.
źródło
Próbujesz porównać system operacyjny, oprogramowanie i dane zainstalowane na określonym fizycznym sprzęcie z tym samym systemem operacyjnym, oprogramowaniem i danymi zainstalowanymi samodzielnie w hiperwizorze na tym samym oryginalnym sprzęcie. To porównanie jest po prostu nieprawidłowe, ponieważ prawie nikt tego nie robi (przynajmniej na początku). Oczywiście byłoby to wolniejsze. Na szczęście całkowicie pomija najczęstszy punkt, dlaczego w ogóle wirtualizujesz serwery.
Lepszym przykładem jest tutaj spojrzenie na dwa (lub więcej!) Starsze serwery w twoim centrum danych. Poszukaj serwerów, które działają dość dobrze, ale są już stare i zbliżają się do cyklu odświeżania. Te serwery już działają dobrze na starszym sprzęcie, więc dzięki prawu Moore'a wszystko, co dostaniesz, będzie znacznie lepsze.
Więc co robisz? To proste. Zamiast kupować dwa nowe serwery, kupujesz tylko jeden, a następnie migruj oba stare serwery na to samo fizyczne nowe urządzenie. Przygotowując się do zakupu nowego serwera, planujesz, aby mieć wystarczającą pojemność, aby nie tylko obsłużyć obciążenie z obu starszych serwerów, ale także wszelkie obciążenie z hiperwizora (i może trochę więcej, aby nadal uzyskać wzrost wydajności i może pozwolić na wzrost).
Podsumowując: maszyny wirtualne zapewniają wystarczającą wydajność w większości sytuacji i pomagają lepiej wykorzystać serwery, aby uniknąć „zmarnowanej” mocy obliczeniowej.
Teraz rozciągnijmy to trochę dalej. Ponieważ są to stare serwery, być może patrzyłeś na kilka prostych serwerów koszących pizzę za 1500 USD, aby je wymienić. Możliwe, że nawet jedno z tych pudełek do pizzy nadal z łatwością poradzi sobie z obciążeniem z obu hipotetycznych starszych maszyn ... ale powiedzmy, że zamiast tego wydajesz 7500 USD lub więcej na prawdziwy sprzęt. Teraz masz urządzenie, które może z łatwością obsłużyć nawet kilkanaście istniejących serwerów (w zależności od tego, jak obchodzisz się z pamięcią masową i siecią), przy początkowym koszcie wynoszącym tylko 5. Masz również zalety zarządzania tylko jednym serwerem fizycznym, oddzielając Twoje oprogramowanie ze sprzętu (np. odświeżanie sprzętu jest mniej prawdopodobne, że będzie wymagało nowej licencji Windows lub spowoduje przestoje), oszczędzasz mnóstwo energii, a twój hypervisor może dostarczyć ci lepszych informacji na temat wydajności niż „ mieliśmy w przeszłości. Zdobądź dwa z nich, w zależności od tego, jak duży jesteś, być może całe twoje centrum danych jest ograniczone tylko do dwóch komputerów, a może chcesz użyć drugiego serwera jako gorącego trybu gotowości, aby opowiedzieć lepszą historię wysokiej dostępności.
Chodzi mi o to, że nie chodzi tylko o wydajność. Nigdy nie wziąłbym idealnie dobrego serwera produkcyjnego i sam zwirtualizowałbym go do równoważnego sprzętu tylko dlatego. Bardziej dotyczy oszczędności kosztów i innych korzyści, które można uzyskać dzięki konsolidacji, takich jak wysoka dostępność. Uświadomienie sobie tych korzyści oznacza, że przenosisz serwery na inny sprzęt, a to z kolei oznacza, że musisz poświęcić czas na odpowiednie dobranie sprzętu, w tym uwzględnienie kary hiperwizora. Tak, możesz potrzebować nieco więcej mocy obliczeniowej niż gdyby każda z tych maszyn znajdowała się na własnym urządzeniu fizycznym (wskazówka: prawdopodobnie prawdopodobnie potrzebujesz znacznie mniej całkowitej mocy obliczeniowej ), ale będzie o wiele tańsza, bardziej energooszczędna, i łatwiejsze do utrzymania aby uruchomić jeden serwer fizyczny niż wiele.
źródło
Właśnie uaktualniłem do SSD (OCZ Vertex 2) i uruchamiam na nim moje środowisko programistyczne dla maszyn wirtualnych XP, jestem programistą. Zauważyłem jedną rzecz: kiedy uruchamiam program (wystarczająco duży, aby załadować czas), jeden rdzeń wirtualnego procesora zostaje ustalony. Dzieje się tak podczas ładowania IE. Ponieważ procesor się wyłącza, zakładam, że wąskim gardłem jest procesor, a nie dysk SSD. Ale wydaje się to dziwne, mam wrażenie, że gdyby to samo zrobiono na maszynie fizycznej, ładowałoby się ono szybciej, a mam wrażenie, że istnieje dodatkowe obciążenie związane z przetwarzaniem, które VMWare zużywa procesorem na dostęp do dysku.
Jeden przykład: używam Delphi i na fizycznym komputerze ze zwykłym dyskiem twardym uruchomienie z zimnego rozruchu może zająć 20 sekund. W maszynie wirtualnej z dyskiem SSD ładuje się w ciągu 19 sekund od zimnego startu. Niewielka różnica, założę się, że gdyby dysk SSD znajdował się na fizycznej maszynie, ładowałby się szybciej. Jednak nie sprawdziłem użycia procesora na maszynie fizycznej, możliwe, że procesor również tam był wąskim gardłem.
Ale VM ma wrażenie, że dostęp do dysku opodatkuje VM.
źródło
Oczywiście maszyna wirtualna jest wolniejsza niż maszyna fizyczna. Ale kiedy jesteś w tym scenariuszu, musisz ocenić, co jest optymalne na pokrycie twoich potrzeb. Jeśli potrzebujesz tylko jednego systemu i potrzebujesz go szybko, zainstaluj go bezpośrednio na sprzęcie. Z drugiej strony, jeśli potrzebujesz elastyczności, skalowalności (i wszystkich innych zalet wirtualizacji: P), wdróż maszynę wirtualną. Będzie wolniej, ale w niektórych przypadkach IMHO jest uzasadnione, a wydajność nie jest znacznie wolniejsza.
źródło
Wygląda na to, że Microsoft przeprowadził pewne testy porównawcze przy użyciu serwera BizTalk i SQL Server w różnych konfiguracjach pod tym względem. Zobacz link poniżej:
http://msdn.microsoft.com/en-us/library/cc768537(v=BTS.10).aspx
źródło
Idealnie, wydajność wirtualnego komputera wynosi:
Procesor: 96–97% hosta
Sieć: 70–90% hosta
Dysk: 40–70% hosta
źródło
Przepraszam, że nie zgadzam się z TomTom.
Od jakiegoś czasu korzystam z VMware Workstation, głównie na Windows XP, Windows Vista, a teraz rodzime systemy Windows Seven do uruchamiania różnych wersji Windows, a także Ubuntu.
Tak, zwirtualizowane środowisko działa wolniej niż system macierzysty i może zawierać się w przedziale od 5 do 100%.
Głównym problemem nie jest tak duże obciążenie procesora, ale brak pamięci fizycznej.
Załóżmy, że masz Windows Seven 64 Ultimate działający na systemie 4 Gb, który gdy bezczynny potrzebuje prawie 1,5 Gb i zużywa ~ 10% procesora. Uruchomienie dodatkowej warstwy VMware będzie kosztować ~ 300 Kb, a obciążenie procesora wzrośnie do ~ 20%. Następnie uruchomienie systemu wirtualnego w VMware zażąda co najmniej ilości pamięci zdefiniowanej dla tej maszyny wirtualnej, co najmniej 1 Gb dla dowolnego przyzwoitego systemu. Wtedy zobaczysz obciążenie procesora ~ 60%, jeśli maszyną wirtualną jest Ubuntu i ~ 80% dla dowolnego smaku najnowszego systemu operacyjnego Windows.
Teraz uruchomisz różne aplikacje na tej maszynie wirtualnej.
Jeśli ilość pamięci ustawiona dla tej maszyny wirtualnej jest niewystarczająca, zwirtualizowany system zacznie się zamieniać, a następnie znacznie spowolni ogólną wydajność i czas reakcji.
Jeśli suma ilości pamięci ustawionej dla tej maszyny wirtualnej plus ilość pamięci potrzebnej dla twojego systemu natywnego jest większa niż ilość pamięci twojego systemu natywnego, wtedy twój system natywny będzie się zamieniał, zwalniając zarówno natywny, jak i zwirtualizowany system.
Tak więc najpierw zależy od równowagi pamięci potrzebnej zarówno dla maszyn natywnych, jak i zwirtualizowanych.
Teraz jest prawie tak samo z obciążeniem procesora. Jeśli zwirtualizowana aplikacja wymaga dużego obciążenia procesora, a aplikacja natywna również wymaga dużego obciążenia procesora, Twój system natywny będzie musiał zarządzać priorytetem i równoważyć ładunek procesora między różnymi aplikacjami, przy czym zwirtualizowany system to nic innego jak aplikacja, ale to Zjawisko to jest klasyczny problem z obciążeniem procesora, który można oszukać za pomocą priorytetów aplikacji.
Tak więc, moja pierwsza rada, jeśli chcesz korzystać z wirtualizacji, to włożenie do pamięci dużej ilości pamięci, niezależnie od systemu operacyjnego, z którego korzystasz natywnie lub na maszynie wirtualnej.
Tylko moje 2 centy.
Z poważaniem.
źródło
Z mojego doświadczenia wynika, że maszyny wirtualne są zawsze znacznie wolniejsze od fizycznych POZA PUDEŁKIEM.
Zauważysz to tylko podczas uruchamiania aplikacji, które uderzają w dysk i bardzo obciążają procesor. Uruchomiłem wiele baz danych i serwerów internetowych na maszynach wirtualnych, a jako użytkownik końcowy i opinie innych użytkowników (tj. Dostęp do aplikacji ze zdalnej przeglądarki internetowej) przy korzystaniu z maszyn wirtualnych występują duże opóźnienia.
Oczywiście właściwie skonfigurowana maszyna wirtualna może osiągnąć 80% (nie znam rzeczywistej liczby) lub jakąkolwiek prędkość maszyny fizycznej, ale ostatecznie musisz naprawdę zagłębić się w to, co robi aplikacja i jak maszyna wirtualna Pracuje. Sądzę więc, że jest to równanie kosztu tego, jak cenny jest twój czas, aby skonfigurować wersety maszyn wirtualnych, kupując i hostując nowy serwer.
Dla mnie maszyny wirtualne NIE SĄ O WYDAJNOŚCI, ale o tym, że są łatwiejsze do zarządzania i hostowania kilku maszyn wirtualnych o niskiej wydajności.
źródło