Pri ustvarjanju virtualnih strojev na različnih hipervizorjih (VMWare, KVM, Hyper-V itd.) Lahko opazite, da včasih navidezni stroj ne vidi vseh dodeljenih navideznih jeder (vCPU). V našem primeru je bilo navideznemu stroju KVM dodeljenih 8 vCPU-jev, nanj je bil nameščen sistem Windows 10. Vendar je Windows ta jedra določil kot ločene procesorje, od tega je mogoče uporabiti le 2 vCPU.
Vsebina:
- Navidezni stroj Windows 10 ne vidi vseh jeder
- Število podprtih procesorjev v sistemu Windows 10
- Upravljanje navideznih jeder in vCPU-jev v KVM
- Konfiguriranje virtualnih procesorjev in število jeder v VMWare
- NUMA arhitektura in virtualni vCPU
Navidezni stroj Windows 10 ne vidi vseh jeder
Če odprete upravitelja naprav Windows, se lahko prepričate, da so vsa izbrana jedra vidna kot 8 ločenih navideznih procesorjev QEMU Virtual CPU različica 2.5.
Hkrati je v lastnostih sistema Windows 10 (Računalnik -> Lastnosti) in v Upravljanju opravil razvidno, da sta v računalniku na voljo le 2 navidezni procesorji QEMU..
To pomeni, ne glede na to, koliko virtualnih jeder dodate, Windows 10 še vedno lahko uporablja le dve. Hkrati sosednji virtualni strežnik z Window Server 2016 na istem hipervizorju vidi vseh 16 dodeljenih vCPU.
Število podprtih procesorjev v sistemu Windows 10
Težava je v tem, da je v namiznih izdajah sistema Windows (Windows 10 / 8.1 / 7) vklopljena omejitev največje število fizičnih procesorjev (vtičnic), kateri računalnik lahko uporablja:
- Windows 10 Home - 1 CPU
- Windows 10 Professional - 2 CPU
- Delovna postaja Windows 10 - do 4 CPU
- Windows Server 2016 - do 64 CPU
Vendar pa ta omejitev ne velja za jedra. I.e. za boljše delovanje lahko uporabite procesor z veliko jedra. Večina hipervizorjev lahko zagotovi vCPU-je v obliki procesorjev, procesorskih jeder ali celo niti. I.e. namesto 8 virtualnih procesorjev lahko vCPU-jem zagotovite v obliki 2 vtičnic s po 4 jedri v vsaki. Razmislimo, kako razlikovati virtualne procesorje v obliki jeder v različnih sistemih virtualizacije in kako jih povezati z arhitekturo NUMA, ki se uporablja v sodobnih procesorjih.
Upravljanje navideznih jeder in vCPU-jev v KVM
V mojem virtualnem stroju Kvm c Windows 10, vsa dodeljena virtualna jedra se štejejo za ločena procesorja.
Če želite uporabiti vse vire procesorja, dodeljene navideznemu stroju, je potrebno, da navidezni stroj ne vidi 8 procesorjev, temveč en 8-jedrni procesor, 2 procesorja s 4 jedri ali 1 procesor s 4 jedri z 2 niti. Poskusimo spremeniti način, kako so VM-ji dodeljeni VM-ji na KVM.
Izklopite virtualni stroj:
# virsh shutdown server.vpn.ru
- kjer je server.vpn.ru ime virtualnega stroja.
Natisnite trenutno konfiguracijo XML navideznega stroja KVM:
# virsh dumpxml server.vpn.ru
Zanima nas blok z opisom procesorjev:
8 1000 / stroj hvm
Kot vidite, smo pravkar določili 8 vCPU. Spremenite konfiguracijo:
# virsh uredi server.vpn.ru
In po dodaj:
Kje:
gostitelj-mimo
- emulacijski način, v katerem bo navidezni procesor vozlišča (vozlišča) grozda prikazan na virtualnem stroju.vtičnice = '1'
- navedite, da je procesor 1jedra = '4'
- pomenijo, da ima procesor 4 jedraniti = '2'
- kažejo, da imamo 2 niti
Shranite konfiguracijsko datoteko in zaženite VM. Prijavite se v gostujoč VM z Windows 10 in v upravitelju opravil ali nadzoru virov preverite, ali OS vidi vsa izbrana navidezna jedra.
Prav tako so lastnosti sistema zdaj začele prikazovati fizični procesor gostitelja Intel (R) Xeon® Silver 4114 CPU, ne virtualno.
Tako nam je uspelo rešiti težavo z obremenitvijo na VM, saj obe jedri nista bili dovolj za popolno uporabo.
Konfiguriranje virtualnih procesorjev in število jeder v VMWare
Iz vmesnika odjemalca vSphere lahko spremenite način predstavitve vCPU za virtualni stroj VMWare.
- Izklopite VM in odprite njegove nastavitve;
- Razširi oddelek CPU;
- Spremenite konfiguracijo VM tako, da gost OS vidi 2 procesorja s 4 jedri. Spremenite vrednost Jedra na vtičnico do 4. To pomeni, da bo gost OS videl dva štirijedrna procesorja (2 vtičnice s 4 jedri);
- Spremembe shranite in zaženite VM.
NUMA arhitektura in virtualni vCPU
Obstaja nekaj drugih vidikov vCPU in dodelitve jedra virtualnim strojem, ki jih morate razumeti..
Pri dodeljevanju jeder na vtičnico upoštevajte NUMA arhitektura (uporablja se v večini sodobnih procesorjev). Ne priporočamo, da svojemu VM dodelite število jeder na vtičnico (in skupno število vCPU-jev) večje od jeder, ki so na voljo v fizični vtičnici / procesorju (NUMA vozlišče). Ko bo nameščen na enem fizičnem vozlišču NUMA, bo virtualni stroj lahko uporabljal hitri lokalni RAM, ki je na voljo na določenem vozlišču NUMA. V nasprotnem primeru bodo za dokončanje operacije morali počakati na odgovor iz drugega vozlišča NUMA (ki je nekoliko daljši).
Če VM dodelite dve ločeni navidezni vtičnici, jih lahko hipervizor izvaja na različnih vozliščih NUMA. Kar ni najboljši način, kako vplivati na delovanje VM.
Če število potrebnih vCPU-jev presega število jeder na 1 fizični vtičnici (vozlišče NUMA), morate ustvariti več virtualnih vtičnic (procesorjev) z zahtevanim številom jeder. Prav tako ni priporočljivo uporabljati neparnega števila procesorjev (bolje je dodati 1 vCPU)
To bo prihranilo zmogljivost virtualnega stroja..
Na primer za 2 gostiteljska procesorja z 10 jedri (skupaj je na voljo 40 vCPU-jev) Hiper-Niti) je pri konfiguraciji vCPU za VM optimalno uporabiti naslednje konfiguracije:
Zahtevana količina vCPU | Število navideznih vtičnic v nastavitvah VM | Število jeder navideznega procesorja v nastavitvah VM |
1 | 1 | 1 |
... | ||
10 | 1 | 10 |
11 | Ni optimalno | |
12 | 2 | 6 |
... | ||
20 | 2 | 10 |
Na primer, VM-ji z Microsoft SQL Server 2016 Enterprise Edition 16 vCPU v konfiguraciji 8 vtičnic z 2 jedri bodo delovali slabše kot v konfiguraciji 2 vtičnic z 8 jedri.
Ne pozabite tudi, da so nekatere aplikacije licencirane na fizičnih vtičnicah (tako kot pri starejših različicah SQL Serverja). Včasih vam je bolj koristno, če licencirate en večjedrni procesor kot več procesorjev z manj jeder.
Sodobne različice sistema Windows Server so v virtualizacijskem okolju na poseben način licencirane. Na voljo so tudi funkcije za licenciranje procesorjev v VMWare vSphere.