Używamy Ubuntu 12.04 z następującymi parametrami:
- Dell R910
- Jądro 3.2.0-25-generic # 40-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux
- kvm 1: 84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- qemu-common 1.0 + noroms-0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- 4 x procesor Intel (R) Xeon (E) E7- 4870 @ 2,40 GHz (każdy z 10 rdzeniami fizycznymi, włączonymi HT i Intel VT)
- Goście Windows nie mają obecnie VirtIO, ale wkrótce się to zmieni
Na tym komputerze działa kilku gości Windows, jeden z nich to Windows 2003 32-bitowy, inny Windows 2008 (64-bitowy). Obecnie zmagamy się z problemami z wydajnością i bawiliśmy się modelami procesorów.
Zwykle używamy „qemu-system-x86_64 dla naszego gościa z 32-bitowym systemem Windows, np .:
/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...]
Wydajność tego gościa okazała się nieco niska. Nie uruchomiliśmy jeszcze żadnego testu porównawczego, ale powiedzmy, że kopiowanie dużej ilości danych (plików) w maszynie wirtualnej z jednego katalogu do drugiego przebiega znacznie szybciej po zmianie modelu procesora z „-cpu qemu32” na „-cpu Nehalem „. Pliki, których skopiowanie trwało około 2:40 h, teraz są kopiowane w ciągu 40 minut. Oczywiście nie jest to test wysokiej jakości i jest dużo miejsca na bardziej profesjonalną próbę. Jest to jednak wyraźny wskaźnik, że wybór odpowiedniego modelu procesora może mieć duży wpływ na wydajność gościa.
Teraz się zaciekawiłem i pobiegłem:
qemu-x86_64 -cpu ?
x86 [n270]
x86 [athlon]
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo]
x86 [kvm32]
x86 [qemu32]
x86 [kvm64]
x86 [core2duo]
x86 [phenom]
x86 [qemu64]
I:
kvm -cpu ?model
x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7)
x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 [n270] Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 [athlon] QEMU Virtual CPU version 1.0
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo] Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 [kvm32] Common 32-bit KVM processor
x86 [qemu32] QEMU Virtual CPU version 1.0
x86 [kvm64] Common KVM processor
x86 [core2duo] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 [phenom] AMD Phenom(tm) 9550 Quad-Core Processor
x86 [qemu64] QEMU Virtual CPU version 1.0
Przy wszystkich tych różnych wersjach trudno jest zgadnąć. „Nehalem” wydaje się najbardziej wydajny na tej liście. Teraz zastanawiam się, jak powiedzieć, który model procesora jest najlepszy dla mojego gościa? Przeglądając Internet, znalazłem następujące zasoby:
- http://rwmj.wordpress.com/2010/10/08/32-or-64-bit-virtual-cpu-in-kvm/
- http://www.linux-kvm.org/page/Tuning_KVM
Kiedy czytam te strony poprawnie, twierdzą, że „host -cpu” może przynieść najlepszą wydajność. Nie martwię się jeszcze o migrację, ponieważ oba hosty KVM są równo wyposażone (dokładnie ten sam sprzęt).
Co więc polecają doświadczeni administratorzy KVM? Czy istnieje złota zasada, a nawet matryca, na przykład „ten model jest najlepszy dla tego gościa”
Przepraszam, że sam mogłem znaleźć te informacje - prowadziłem różne wyszukiwania w Google i przeglądałem wiele stron internetowych. Nie byłem w stanie znaleźć odpowiedzi na moje pytanie.
Odpowiedzi:
To naprawdę bardzo proste. W przypadku jednorodnych klastrów i konfiguracji z jednym hostem użyj
host
opcji. W przypadku klastrów mieszanych użyj najniższej dostępnej wersji procesora, więc jeśli jeden host to Penryn, a drugi Nehalem, użyj Penryn na obu.Jeśli używasz RHEV lub oVirt, jest to już wbudowane. VMWare ma to o nazwie „EVC” i pozycjonuje je jako ogromną funkcję.
Wracając do wydajności, zdecydowanie potrzebujesz virtio wszędzie, gdzie możesz go umieścić. A jeśli nadal napotykasz wąskie gardła związane z wydajnością, zazwyczaj można je rozwiązać w zależności od przypadku, w zależności od tego, gdzie występują.
[offtop] Przy wyborze dystrybucji skomentowałem już w innym wątku [/ offtop]
źródło
Nie trać więcej czasu na ulepszanie czegokolwiek.
Zainstaluj sterowniki virtIO i wróć. Różnica jest tak duża, że wszelkie ulepszenia, które możesz teraz znaleźć, nie będą miały znaczenia w virtIO.
Przykład z jednym z naszych serwerów:
- bez virtIO W2k3 może obsłużyć około 10 użytkowników serwera terminali
- z virtIO, ta sama maszyna z tym samym systemem operacyjnym obsługuje obecnie od 120 do 125 użytkowników z niewielkim spowolnieniem. I dodaliśmy kolejną maszynę wirtualną do uruchamiania programu SQL Server na tym samym komputerze fizycznym
źródło
Qemu nie działa w taki sam sposób, jak wiele innych hiperwizorów. Na początek może zapewnić pełną emulację. Oznacza to, że możesz na przykład uruchomić kod x86 na procesorze ARM. W trybie KVM, gdy go używasz, tak naprawdę nie robi tego ... procesor jest narażony bez względu na wszystko, ale to, co jest zgłaszane do systemu operacyjnego, zostanie zmienione przez
-cpu
flagę.Jeśli potrzebujesz szybszych prędkości, punktem wyjścia jest jak najlepsze dopasowanie możliwości procesora wirtualnego do rzeczywistego procesora. Zmniejszy to przypadki, w których wywoływane są nieoptymalne kody do uruchamiania zadań, a także zmniejszy liczbę kodów, które nie są możliwe na twoim sprzęcie, zanim zostaną przetłumaczone na coś innego. Ponieważ Twój model procesora Xeon został wydany na początku 2011 r., Prawdopodobnie obsługuje on głównie serię Core i7. W tym celu powiedziałbym, że architektura Nehalem jest twoją najlepszą emulacją.
Cytowanie z jednego z twoich linków ( Tuning KVM ):
Tak więc, jeśli uważasz, że możesz w końcu przenieść rzeczy na tyle, aby stworzyć problem, możesz znaleźć wszystkie obsługiwane zestawy instrukcji, które Twoim zdaniem mogą być obsługiwane przez dowolny procesor w przyszłości lub wymienić je.
Jednak przez większość czasu chcesz się trzymać
-cpu host
. Określenie procesora z mniej dostępnymi flagami oznacza, że aplikacje będą unikać używania funkcji, które mogłyby je przyspieszyć.źródło
Mylona jest opcja „host-cpu”. Ta opcja NIE włącza tylko wszystkich funkcji procesora specyficznych dla systemu hosta, włącza WSZYSTKIE funkcje obsługiwane przez procesor i wszystkie, które można emulować, nawet jeśli procesor ich nie obsługuje.
- host CPU
jest dobrą opcją, ale nie najbardziej wydajną, ponieważ może włączyć opcje, które mogą być emulowane, których procesor nie obsługuje, system gościa może być nieco spowolniony za każdym razem, gdy spróbuje użyć jednej z tych funkcji, które muszą być emulowane .
Źródło: http://wiki.qemu.org/Features/CPUModels
źródło
CentOS 6.7 zapewnia mi odpowiednią wydajność KVM + Spice na Dell R910. Myślę, że kiedy spróbujesz, nie wrócisz do niczego innego (poważnie)!
źródło