Host czterordzeniowy z hiperwątkowością, ile procesorów skonfigurować w VirtualBox?


10

Mam czterordzeniowy procesor i7 z hipertekstem (8 rdzeni logicznych), kiedy skonfigurowałem maszynę wirtualną do korzystania z 8 procesorów, VirtualBox dał mi ostrzeżenie, że mam tylko cztery rdzenie (co jest prawdą) i że może to spowodować Problem z wydajnością. Ale hiperwątkowość jest funkcją sprzętową, więc system operacyjny widzi 8 rdzeni i wysyła instrukcje do wszystkich 8. Co jeśli ustawienie na 4 spowoduje, że VM użyje 2 rdzeni (4 wątków) zamiast 4 równoczesnych wątków (na wszystkich 4 rdzeniach) )? Czy ostrzeżenie, które dostałem, uwzględnia fakt, że moja maszyna ma hiperwątkowość?

Odpowiedzi:


9

Na podstawie testu porównawczego wykonanego przez Kristiana Wedberga powiedziałbym, że powinieneś używać wszystkich posiadanych rdzeni logicznych.
Zrobiłem też własny test porównawczy przy użyciu tego samego procesora (i7, 4 CPU z HT), co potwierdziło wzrost wydajności dla aplikacji wielowątkowych. Jeśli komputer osobisty (Win. 8.1 x64) używał wszystkich 8 rdzeni, wówczas komputer host (Ubuntu x64) również używał wszystkich 8 rdzeni.

wprowadź opis zdjęcia tutaj

Porównałem także wydajność w aplikacjach jednowątkowych. W obu przypadkach zmierzyłem te same wartości, więc nie ma kary za użycie więcej niż fizycznej (ale do logicznej) liczby procesorów.
Tutaj widać, że 1 pełne obciążenie procesora na komputerze-gościu spowoduje 1 obciążenie procesora na komputerze-hoście.

wprowadź opis zdjęcia tutaj


Zgoda. Użyłem 4 rdzeni i odkryłem, że zajmuje to tylko około 50% czasu procesora podczas budowania mojego projektu. Następnie, pomimo ostrzeżenia, zmieniłem na 8, czyli liczbę rdzeni logicznych, kompilacja zajmowała 100% czasu procesora i uważam, że działała szybciej niż wcześniej.
Deqing

Jest to dość interesujące. Pamiętam, że przeczytałem, że Linux próbuje skoncentrować obciążenie na 1 rdzeniu logicznym z każdego fizycznego rdzenia HT, aby zwiększyć wydajność. Zastanawiam się, czy jądro Linuksa gościa widzi, że procesor jest hiperwątkowy i optymalizuje harmonogram dla tego typu konfiguracji.
Anthony

8

Przekonałem się, że chociaż możliwe jest (i prawdopodobnie szybsze) w VirtualBox (moje doświadczenie z wersją 5.1.0) przydzielanie procesorów wirtualnych do maszyny wirtualnej opartej na procesorach logicznych, podczas pracy z dużym obciążeniem mogą wystąpić problemy w systemie operacyjnym gościa . W moim przypadku maszyna wirtualna z systemem Windows 2012 R2 z 12 procesorami vCPU na 8-rdzeniowym hoście Ubuntu 16.04 (który zgłasza 16 procesorów logicznych) będzie BSOD podczas dużego obciążenia procesora z komunikatem o błędzie DPC_WATCHDOG_VIOLATION. Analiza minidump przy użyciu osronline.com wykazała, że ​​przyczyną błędu jest e1g6032e.sys (sterownik sieciowy Intel 100/1000 natywny dla systemu Windows).

To prowadzi mnie do przekonania, że ​​na alokację vCPU w oparciu o logiczną moc procesora i działanie maszyny wirtualnej przy dużym obciążeniu przez dłuższy czas ma negatywny wpływ na czas w systemie-gościu. W moim przypadku 100% obciążenia procesora w maszynie wirtualnej systemu Windows przez kilka minut spowodowałoby BSOD. Po zmniejszeniu liczby vCPU do 8 (co odpowiada fizycznej liczbie rdzeni hosta), maszyna wirtualna z systemem Windows przestaje BSOD już w podobnych sytuacjach dużego obciążenia. Dokumentacja online VirtualBox mówi, że należy to zrobić, ale nie podaje żadnych powodów.

W moim środowisku działały również dwie inne maszyny wirtualne Ubuntu, każda z 8 własnymi vCPU. Obciążenie ich było jednak minimalne w czasie problemów BSOD maszyny wirtualnej z systemem Windows.


Świetna odpowiedź (ze źródłami), dzięki! Kilka lat spóźnienia, ale teraz wiem :)
Anthony

2

Czy ostrzeżenie, które dostałem, uwzględnia fakt, że moja maszyna ma hiperwątkowość?

Tak. Jeśli liczba rdzeni w maszynie wirtualnej zostanie ustawiona na wartość wyższą niż liczba, którą fizycznie masz, proces planowania zadań w Virtual Box ponad zatwierdza zasoby procesora, co prowadzi do poważnych problemów z wydajnością.

Jeśli chodzi o rozkład obciążenia na rdzenie, to jest zadanie systemu operacyjnego hosta i powinien on zachowywać się we właściwej rezydencji.


4
Czy masz jakieś dane na poparcie swoich wyciągów? Ktoś przeprowadził badanie envobi.com/post/virtualbox-hyper-threading-benchmark-surprise i zalecił ustawienie liczby procesorów Virtual Box na liczbę logicznych procesorów.
Maxim Egorushkin

0

Czy to była maszyna wirtualna oryginalna na twoim komputerze? Czasami otrzymasz dziwne błędy, jeśli sklonujesz maszynę wirtualną i przeniesiesz ją na inną maszynę i / lub zmienisz ustawienia.
Polecam pobranie i zainstalowanie najnowszej wersji Virtual Box z najnowszymi rozszerzeniami.

Złożyłem wszystkie osiem rdzeni i nie otrzymuję tego błędu w moim i7 z maszyną wirtualną z systemem Ubuntu 13.10.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.