Ponieważ mam procesor z funkcją Hyper-Threading , zastanawiam się, czy nie jest dobrym pomysłem przypisywanie większej liczby wirtualnych rdzeni procesora niż liczby fizycznych rdzeni procesora, co sugeruje następujące ostrzeżenie:
Transkrypcja:
Do maszyny wirtualnej przypisanych jest więcej procesorów wirtualnych niż liczba fizycznych procesorów w systemie hosta. Może to obniżyć wydajność maszyny wirtualnej. Proszę rozważyć zmniejszenie liczby wirtualnych procesorów.
Czy ktoś może uzasadnić ten temat?
EDYCJA 1:
Wspomniany procesor to Intel Core i7-4700HQ, Ark Intel , CPU Benchmark
EDYCJA 2:
Załóżmy, że nie ma przestarzałego sprzętu, takiego jak HDD (zamiast SSD) i / lub Low RAM (tutaj 16 GB, minimum vm.swappiness
, 4 GB dla tej maszyny wirtualnej) i tak dalej.
źródło
Odpowiedzi:
Sprzęt / system operacyjny / oprogramowanie
Host : Linux Mint 18 Cinnamon 64-bit (w pełni zaktualizowany); Wersja jądra 4.4.0-47-ogólna
Gość : Windows 8.1 Pro 64-bit (w pełni zaktualizowany)
Procesor : Intel Core i7-4700HQ , (6 MB pamięci podręcznej, 4 rdzenie fizyczne lub 8 przy użyciu funkcji Hyper-Threading), test porównawczy procesora
VirtualBox : Wersja 5.1.10 r112026 (Qt5.5.1)
Dodatki dla gości : Zainstalowane i aktualne
Narzędzie porównawcze nr 1 : WinRAR wersja 5.40 wersja ostateczna 64-bitowa
Narzędzie Benchmark # 2 : VeraCrypt wersja 1.19 wersja ostateczna 64-bitowa
Przygotowanie
W obu przypadkach czekałem po uruchomieniu, aż procesor, pamięć RAM i dysk staną się stabilne w pobliżu punktów zerowych.
metoda
Wyniki
WinRAR
4 rdzenie => 7,5 minuty ( krótszy czas jest lepszy)
WinRAR z włączonymi 4 rdzeniami, 1,5GiB przetworzony w 7,5 minuty.
8 rdzeni => 4,5 minuty ( krótszy czas jest lepszy)
WinRAR z włączonymi 8 rdzeniami, 1,5GiB przetworzony w 4,5 minuty.
VeraCrypt
4 rdzenie => prędkość 2,6 GiB / s ( wyższa prędkość jest lepsza)
VeraCrypt z włączonymi 4 rdzeniami, AES (AES-NI) z przyspieszeniem HW 2,6 GiB / s.
8 rdzeni => prędkość 3,9 GiB / s ( wyższa prędkość jest lepsza)
VeraCrypt z 8 włączony rdzenie HW przyspieszone AES (AES-NI), prędkość 3,9 GB miejsca / s.
Wniosek
Mógłbym przeprowadzić tyle testów, ile potrzeba. Ale sądzę, że jeśli te dwa, z których jeden jest raczej złożonym testem kompresji, drugi to zestaw raczej złożonych testów szyfrowania, o co właśnie chodzi.
Oba testy porównawcze wykazują wyraźną różnicę. Nie widzę powodu, aby sądzić, że ich wyniki są niedokładne, ponieważ zastosowałem dość rygorystyczne przygotowanie i metodę, ponadto testy te odbyły się w pamięci RAM, aby wykluczyć wąskie gardło we / wy. Z mojego punktu widzenia ostrzeżenie wymienione w pytaniu może dotyczyć niektórych warunków, ale z pewnością nie wszystkich. Udostępniając ci te dość niezwykłe wyniki, jestem pewien, że zgodzisz się ze mną, że to ostrzeżenie prawdopodobnie nie powinno być traktowane tak poważnie na nowoczesnych procesorach wyposażonych w Hyper-Threading z najnowszą wersją VirtualBox. Jedno jest pewne: nie bierz mnie za słowo i przetestuj je na własnych warunkach, zanim zdecydujesz się zastosować to ustawienie na stałe.
źródło
Jako projektant systemu operacyjnego całkowicie zgadzam się z wynikami pomiarów. Ilość bzdur produkowanych gdzie indziej na ten temat jest niewiarygodna.
Zobacz liczbę rdzeni logicznych jako liczbę równoległych wątków / procesów, które może wykonać HW. Osiąga się to poprzez powielanie np. Rejestrów i wskaźników instrukcji rdzenia procesora. Sam rdzeń procesora decyduje teraz, którego wątku (wskaźnika instrukcji) użyć. Zdecyduje się użyć drugiego wątku, ponieważ instrukcja bieżącego wątku nie jest dostępna w pamięci podręcznej i musi zostać pobrana z np. Pamięci lub pamięci podręcznej L3. Ten mechanizm spowoduje 10–30% potencjalną poprawę instrukcji / sekund lub wydajności procesora.
Jeśli uruchomisz pojedynczą aplikację z jednym wątkiem, nie będziesz mógł skorzystać z tej korzyści, ale jeśli uruchomisz dwie aplikacje o wysokim obciążeniu na np. Starym HT Pentium, będziesz mógł czerpać korzyści. To samo dotyczy oczywiście aplikacji, które mają więcej niż jeden wątek. Mój system Linux ma 200 wątków, więc niektóre korzyści zależne od faktycznego obciążenia są zawsze obecne. Wszystkie te uwagi mają zastosowanie bez wirtualizacji.
Virtualbox ogranicza tylko liczbę wątków, które mogą być uruchomione równolegle dla każdej maszyny wirtualnej (VM), ale program planujący procesy hosta zmieni procesor (y) logiczne, a tym samym procesor (y) fizyczny, na których procesy maszyny wirtualnej działają dynamicznie. Jeśli uruchomisz aplikacje o wysokim obciążeniu na maszynie wirtualnej, dodatkowe rdzenie logiczne zapewnią tę samą korzyść w wysokości 10–30%. Obciążenie może być pojedynczą aplikacją wielowątkową lub zestawem różnych aplikacji.
W nowoczesnych systemach z VT-x lub AMD-V nie ma ograniczenia wydajności dla maksymalizacji liczby rdzeni logicznych, ponieważ nie ma też zauważalnej utraty wydajności dla uruchamiania większej liczby maszyn wirtualnych w tym samym czasie. Ograniczeniem jest wydajność procesora CPU, więc nie można renderować wideo na 3 maszynach jednocześnie, bez spowalniania każdej maszyny wirtualnej, ponieważ muszą one dzielić ten sam fizyczny procesor.
System hosta może przestać odpowiadać, jeśli renderujesz wideo na maszynie wirtualnej z obecnymi wszystkimi rdzeniami logicznymi, ale miałbyś prawie ten sam problem, gdybyś uruchomił tę aplikację renderującą na hoście. Przynajmniej w VM masz wybór i możesz go rozwiązać, ograniczając maksymalne obciążenie procesora do 80% -90% lub zmniejszając liczbę rdzeni z tego powodu.
źródło
Moje najlepsze dwa centy to nigdy nie używać wszystkich rdzeni / wątków, po prostu pozwól jeden lub dwa hostowi.
Więc w twoim przypadku daj gościowi sześciordzeniowy rdzeń, nigdy ósmy rdzeń (ponieważ masz tylko 8 wątków na hoście).
Jeśli liczba dostępnych wątków (nie mylić z rdzeniami) na hoście to:
W przypadku więcej niż dwóch wątków zwykle używam tej formuły:
Moje doświadczenie mówi mi, że przekroczenie limitu formuły jest znacznie płynniejsze i mniej ryzykowne.
Ostrzeżenie: Nie można zmieniać liczby rdzeni gościa podczas działania gościa, ale można obniżyć użycie procesora ze 100% do 75% lub również 50%, nie mniej gość może ulec awarii.
Czasami więc daję dwóm gościom 6 6 rdzeni na 8-wątkowym hoście (numer formuły, jakby tylko jeden gość zamiast dwóch gości), ale ograniczając ich do 50% szybkości procesora (aby obaj goście mogli użyć 1 / 2 czasu procesora), ale tylko wtedy, gdy wiem, że goście będą uruchamiać aplikacje, które mają więcej niż jeden stosunek równoległości, np. Z porównaniem / łączeniem obrazu itp.
źródło