Podczas tworzenia maszyn wirtualnych na różnych hiperwizorach (VMWare, KVM, Hyper-V itp.) Możesz zauważyć, że czasami maszyna wirtualna może nie widzieć wszystkich przypisanych do niej wirtualnych rdzeni (vCPU). W naszym przypadku 8 maszyn wirtualnych zostało przydzielonych do maszyny wirtualnej KVM, na niej zainstalowano system Windows 10. Jednak system Windows zdefiniował te jądra jako osobne procesory, z których można użyć tylko 2 jednostek vCPU.
Treść
- Maszyna wirtualna z systemem Windows 10 nie widzi wszystkich jąder
- Liczba obsługiwanych procesorów w systemie Windows 10
- Zarządzanie wirtualnymi jądrami i vCPU w KVM
- Konfigurowanie procesorów wirtualnych i liczby rdzeni w VMWare
- Architektura NUMA i wirtualne vCPU
Maszyna wirtualna z systemem Windows 10 nie widzi wszystkich jąder
Jeśli otworzysz menedżera urządzeń Windows, możesz upewnić się, że wszystkie wybrane jądra są widoczne jako 8 oddzielnych wirtualnych procesorów tego typu QEMU Virtual CPU wersja 2.5.
Jednocześnie we właściwościach systemu Windows 10 (Komputer -> Właściwości) oraz w Zarządzaniu zadaniami widać, że na komputerze dostępne są tylko 2 procesory wirtualne QEMU.
Oznacza to, że bez względu na liczbę dodanych rdzeni wirtualnych system Windows 10 może nadal używać tylko dwóch. W tym samym czasie sąsiedni serwer wirtualny z Window Server 2016 na tym samym hiperwizorze widzi wszystkie 16 vCPU przypisanych do niego.
Liczba obsługiwanych procesorów w systemie Windows 10
Problem polega na tym, że w edycjach systemu Windows (Windows 10 / 8.1 / 7) na komputery stacjonarne obowiązuje ograniczenie maksymalna liczba procesorów fizycznych (gniazd), z którego komputera można korzystać:
- Windows 10 Home - 1 procesor
- Windows 10 Professional - 2 procesory
- Stacja robocza Windows 10 - do 4 procesorów
- Windows Server 2016 - do 64 procesorów
Jednak to ograniczenie nie dotyczy jąder. Tj. dla lepszej wydajności możesz użyć procesora z dużą ilością rdzenie. Większość hiperwizorów może zapewnić vCPU w postaci procesorów, rdzeni procesorów, a nawet wątków. Tj. zamiast 8 wirtualnych procesorów, możesz dostarczyć vCPU w postaci 2 gniazd z 4 rdzeniami w każdym. Zastanówmy się, jak odróżnić procesory wirtualne w postaci rdzeni w różnych systemach wirtualizacji i jak połączyć je z architekturą NUMA stosowaną w nowoczesnych procesorach.
Zarządzanie wirtualnymi jądrami i vCPU w KVM
Na mojej maszynie wirtualnej Kvm c Windows 10, wszystkie przypisane rdzenie wirtualne są uważane za osobne procesory.
Aby wykorzystać wszystkie zasoby procesora przydzielone maszynie wirtualnej, konieczne jest, aby maszyna wirtualna widziała nie 8 procesorów, ale jeden 8-rdzeniowy procesor, 2 procesory z 4 rdzeniami lub 1 procesor z 4 rdzeniami z 2 wątkami. Spróbujmy zmienić sposób przypisywania maszyn wirtualnych do maszyn wirtualnych w KVM.
Wyłącz maszynę wirtualną:
# virsh shutdown server.vpn.ru
- gdzie server.vpn.ru to nazwa maszyny wirtualnej.
Wydrukuj bieżącą konfigurację XML maszyny wirtualnej KVM:
# virsh dumpxml server.vpn.ru
Interesuje nas blok z opisem procesorów:
8 1000 / hvm maszyny
Jak widać, właśnie podaliśmy 8 vCPU. Zmień konfigurację:
# virsh edit server.vpn.ru
I po dodaj:
Gdzie:
host-passthrough
- tryb emulacji, w którym procesor wirtualny węzła klastra (węzłów) będzie wyświetlany na maszynie wirtualnej.gniazda = „1”
- wskaż, że procesor 1rdzenie = „4”
- wskazuje, że procesor ma 4 rdzeniewątki = „2”
- wskazują, że mamy 2 wątki
Zapisz plik konfiguracyjny i uruchom maszynę wirtualną. Zaloguj się do maszyny Wirtualnej gościa za pomocą systemu Windows 10 i w Menedżerze zadań lub Monitorze zasobów sprawdź, czy system operacyjny widzi wszystkie wybrane wirtualne jądra.
Ponadto właściwości systemu zaczęły teraz wyświetlać procesor fizyczny hosta I.Procesor ntel (R) Xeon (R) Silver 4114, nie wirtualny.
Udało nam się więc rozwiązać problem z obciążeniem maszyny wirtualnej, ponieważ dwa rdzenie nie wystarczały do pełnej aplikacji.
Konfigurowanie procesorów wirtualnych i liczby rdzeni w VMWare
Możesz zmienić sposób prezentacji vCPU dla maszyny wirtualnej VMWare z interfejsu klienta vSphere.
- Wyłącz maszynę wirtualną i otwórz jej ustawienia;
- Rozwiń sekcję CPU;
- Zmień konfigurację maszyny wirtualnej, aby system-gość widział 2 procesory z 4 rdzeniami. Zmień wartość Rdzenie na gniazdo o 4. Oznacza to, że system operacyjny gościa zobaczy dwa czterordzeniowe procesory (2 gniazda z 4 rdzeniami);
- Zapisz zmiany i uruchom maszynę wirtualną.
Architektura NUMA i wirtualne vCPU
Istnieje kilka innych aspektów vCPU i przypisania jądra do maszyn wirtualnych, które musisz zrozumieć..
Przypisując rdzenie do gniazda, zastanów się Architektura NUMA (stosowane w większości nowoczesnych procesorów). Nie zaleca się przypisywania do maszyny wirtualnej liczby rdzeni na gniazdo (i całkowitej liczby procesorów vCPU) jest większa niż liczba rdzeni dostępnych na fizycznym gnieździe / procesorze (węźle NUMA). Po umieszczeniu w pojedynczym węźle fizycznym NUMA maszyna wirtualna będzie mogła korzystać z szybkiej lokalnej pamięci RAM dostępnej w określonym węźle NUMA. W przeciwnym razie, aby zakończyć operację, procesy będą musiały poczekać na odpowiedź z innego węzła NUMA (który jest nieco dłuższy).
Jeśli do maszyny wirtualnej zostaną przypisane dwa oddzielne gniazda wirtualne, hiperwizor może uruchomić je na różnych węzłach NUMA. Co nie jest najlepszym sposobem na wpływ na wydajność maszyny wirtualnej.
Jeśli liczba wymaganych jednostek vCPU przekracza liczbę rdzeni w 1 gnieździe fizycznym (węzeł NUMA), musisz utworzyć kilka wirtualnych gniazd (procesorów) z wymaganą liczbą rdzeni. Nie zaleca się również używania nieparzystej liczby procesorów (lepiej dodać 1 vCPU)
Pozwoli to zaoszczędzić wydajność maszyny wirtualnej..
Na przykład dla 2 hostów procesorowych z 10 rdzeniami (z uwzględnieniem 40 vCPU) Hyper-Gwintowanie), konfigurując vCPU dla maszyn wirtualnych, optymalne jest użycie następujących konfiguracji:
Wymagana ilość vCPU | Liczba gniazd wirtualnych w ustawieniach maszyny wirtualnej | Liczba rdzeni procesora wirtualnego w ustawieniach maszyny wirtualnej |
1 | 1 | 1 |
... | ||
10 | 1 | 10 |
11 | Nie optymalne | |
12 | 2) | 6 |
... | ||
20 | 2) | 10 |
Na przykład maszyny wirtualne z procesorem vCPU Microsoft SQL Server 2016 Enterprise Edition 16 w konfiguracji 8 gniazd z 2 rdzeniami będą działać gorzej niż w konfiguracji 2 gniazd z 8 rdzeniami.
Pamiętaj też, że niektóre aplikacje są licencjonowane na fizyczne gniazda (tak jak w przypadku starszych wersji SQL Server). Czasami opłaca się licencjonować jeden procesor wielordzeniowy niż kilka procesorów z mniejszą liczbą rdzeni.
Nowoczesne wersje systemu Windows Server są licencjonowane w szczególny sposób w środowisku wirtualizacji. Istnieją również funkcje procesorów licencyjnych w VMWare vSphere.