VirtualBox i ewentualnie inne oprogramowanie VM pozwala użytkownikowi określić liczbę procesorów narażonych na VM. W moim szczególnym przypadku mam dwurdzeniowy procesor, z Windows 7 64-bit działa natywnie, a Ubuntu 9.04 64-bit jako maszyna wirtualna.
Plik pomocy sugeruje, aby nie ustawiać tego powyżej liczby dostępnych rdzeni fizycznych. To ma sens. Czy najlepiej przydzielić 1 lub 2 rdzenie procesora? Czy zależy to całkowicie od natywnego obciążenia procesora?
Informacje w tej odpowiedzi nie są już poprawne . Było to słuszne w czasach ścisłego wspólnego planowania, ale już tak nie jest.
Trzymam odpowiedź poniżej ze względu na dobrobyt, ale proszę nie polegać na jej dokładności dla współczesnych hiperwizorów.
Nigdy nie należy przypisywać wszystkich rdzeni jako vCPU na maszynie wirtualnej.
Jeśli maszyna wirtualna zażąda dowolnego czasu procesora, VMWare musi przydzielić albo wszystkie vCPU, albo żadną z vCPU.
Oznacza to, że w systemie 4-rdzeniowym, jeśli przydzielisz wszystkie 4 rdzenie, tylko hostowi lub gościowi można przypisać czas procesora, a nie oba jednocześnie.
To absolutnie zrujnuje wydajność w obu środowiskach.
Przydziel nieparzystą liczbę rdzeni (powiedzmy 3). To dziwne, ale jest to całkowicie uzasadniona opcja.
Generalnie nigdy nie przydzielam więcej niż (n / 2) vCPU (w twoim przypadku 2) - ale zwykle przydzielam rdzenie na serwerach z 12 do 32 rdzeniami, gdzie możesz przydzielić ogromną liczbę vCPU bez większego wpływu.
źródło
Liczba rdzeni wystawionych na procesory gościa nie wpływa na wydajność tak, jak byś tego chciał. Po prostu dostosowuje liczbę rdzeni, które „widzi” procesor gościa.
W zależności od konfiguracji emulatora może on dosłownie zmniejszyć wydajność maszyny wirtualnej o połowę, nic nie robić lub wpływać tylko na sposób, w jaki system operacyjny / aplikacje gościa dzielą harmonogram wątków.
Najlepiej pozostawić to ustawienie domyślne. Jeśli wystąpią problemy z wydajnością na komputerze hosta, możesz po prostu dostosować priorytet procesu za pomocą Menedżera zadań Windows.
źródło
Jak wspomniał Nate, dopóki maszyna wirtualna będzie głównie obsługiwać proces jednowątkowy, nie ma powodu, aby alokować więcej niż jeden rdzeń.
Jeśli jednak planujesz używać go w taki sposób, aby uzyskać więcej rdzeni (program wielowątkowy, wiele programów równoległych itp.), Historia jest bardziej skomplikowana. Wcześniej zakładałem, że użycie połowy procesorów na maszynę wirtualną było dobrym pomysłem. Okazuje się, że nie zawsze jest to optymalne.
Jedynym sposobem, aby się upewnić, jest uruchomienie testów porównawczych .. Nie wiem dlaczego, ale w moim systemie Core2 Quad (który ma obsługę VT-x, zagnieżdżanie stronicowania ...), faktycznie użycie 1 z 4 rdzeni działa lepiej niż przy użyciu 2 lub więcej rdzeni! Widzę to po prostu w czasie uruchamiania maszyny wirtualnej, ale także podczas testów porównawczych kompilacji.
Z innym sprzętem wyniki są różne. Mam też i7 z 8 rdzeniami, a wydajność wydaje się znacznie lepiej skalować wraz z liczbą rdzeni (przy użyciu 4 tam szczęśliwie).
Moja wskazówka: najpierw sprawdź nowy sprzęt.
źródło
Ufałbym planistowi systemu operacyjnego i po prostu ustawiłem maszynę wirtualną na liczbę rdzeni fizycznych, chyba że wiesz, że zawsze chcesz, aby host miał potencjalnie bezczynny rdzeń, gdy jesteś zajęty na maszynie wirtualnej.
źródło
Zależy to od tego, co chcesz zrobić na maszynie wirtualnej, a także na maszynie fizycznej. Jeśli musisz użyć maszyny wirtualnej, gdy system operacyjny hosta jest używany do innych czynności, może być lepiej użyć dwóch rdzeni procesora dla maszyny wirtualnej, aby na hoście pozostały dwa, jeśli maszyna wirtualna jest w pełni obciążona. Z drugiej strony, jeśli pracujesz głównie na maszynie wirtualnej, możesz użyć wszystkich rdzeni procesora.
Jeśli jednak nie można oczekiwać, że gość użyje wszystkich czterech rdzeni jednocześnie, możesz bezpiecznie korzystać z nich wszystkich, kontynuując pracę nad systemem operacyjnym hosta. Pamiętaj, że zawsze możesz dostosować priorytet procesu VM, gdy jest on uruchomiony w systemie operacyjnym hosta, a system odpowiednio zrównoważy obciążenia.
źródło
tak, powiedziałbym również, że to zależy. Ale powiem, co wolę robić. W pracy mam czterordzeniowy procesor. Więc dla mojego obrazu wirtualnego (win7) przydzieliłem dwa procesory. W ten sposób mogę jednocześnie używać maszyny hosta i maszyny wirtualnej, a każda z nich ma równe zasoby procesora.
źródło