Bij het configureren van processorinstellingen voor een nieuwe virtuele machine zijn er verschillende belangrijke concepten om te begrijpen: hoe het aantal processorcores per CPU en CPU-cores per socket te berekenen en hoe deze instellingen van invloed zijn op de snelheid van virtuele machines. Bovendien is het belangrijk om te begrijpen wat zorgt voor een betere VM-prestatie: het beperken van het aantal processors en meer CPU-cores hebben, of meer processors met minder cores?
Lees verder om meer te weten te komen over deze concepten en de basisprincipes voor CPU-configuratie voor virtuele machines op ESXi-hosts.
Terminologie
Laten we beginnen met de definities van de termen die worden gebruikt bij het configureren van CPU-instellingen voor virtuele machines. Deze termen zullen helpen bij het begrijpen van het werkingsprincipe en het voorkomen van verwarring over het aantal cores per CPU, CPU-cores per socket en het aantal CPU-cores versus snelheid.
CPU Socket
A CPU Socket is a physical connector on the motherboard to which a single physical CPU is connected. A motherboard has at least one CPU socket. Server motherboards usually have multiple CPU sockets that support multiple multicore processors. CPU sockets are standardized for different processor series. Intel and AMD use different CPU sockets for their processor families.
CPU
A CPU (central processing unit, microprocessor chip, or processor) is a computer component. It is the electronic circuitry with transistors that is connected to a socket. A CPU executes instructions to perform calculations, run applications, and complete tasks.
Toen de kloksnelheid van processors dicht bij de warmtebarrière kwam, veranderden fabrikanten de architectuur van processors en begonnen ze processors te produceren met meerdere CPU-cores. Om verwarring tussen fysieke processors en logische processors of processorcores te voorkomen, verwijzen sommige leveranciers naar een fysieke processor als een socket.
CPU Core
A CPU core is the part of a processor containing the L1 cache. The CPU core performs computational tasks independently without interacting with other cores and external components of a “big” processor that are shared among cores. Basically, a core can be considered as a small processor built into the main processor that is connected to a socket. Applications should support parallel computations to use multicore processors rationally.
Hyper-threading
Hyper-threading is een technologie ontwikkeld door ingenieurs van Intel om parallelle berekeningen mogelijk te maken op processoren die slechts één processorcore hebben. De introductie van hyper-threading was in 2002 toen de Pentium 4 HT-processor werd uitgebracht en gepositioneerd werd voor desktopcomputers. Een besturingssysteem detecteert een single-core processor met hyper-threading als een processor met twee logische cores (niet fysieke cores). Op dezelfde manier wordt een vier-core processor met hyper-threading door een OS gezien als een processor met 8 cores. Hoe meer threads er op elke core draaien, hoe meer taken parallel kunnen worden uitgevoerd.
Moderne Intel-processoren hebben zowel meerdere cores als hyper-threading. Hyper-threading is meestal standaard ingeschakeld en kan worden ingeschakeld of uitgeschakeld in het BIOS. AMD simultaneous multi-threading (SMT) is het equivalent van hyper-threading voor AMD-processoren.
vCPU
A vCPU is a virtual processor that is configured as a virtual device in the virtual hardware settings of a VM. A virtual processor can be configured to use multiple CPU cores. A vCPU is connected to a virtual socket.
CPU-overcommitment
CPU-overcommitment is het toewijzen van meer logische processoren (CPU-cores van de fysieke host) aan VM’s dan het totale aantal logische processoren beschikbaar op de fysieke host. CPU-overcommitment zorgt voor een verhoogde flexibiliteit en efficiëntie in het gebruik van middelen, maar kan leiden tot prestatieverlies als de totale vraag hoger is dan de beschikbare fysieke CPU-capaciteit.
NUMA
NUMA (non-uniform memory access) is een computergeheugendesign dat wordt gebruikt in multiprocessorcomputers. Het idee is om afzonderlijk geheugen te bieden voor elke processor (in tegenstelling tot UMA, waar alle processors toegang hebben tot gedeeld geheugen via een bus). Tegelijkertijd kan een processor toegang krijgen tot geheugen dat toebehoort aan andere processors door een gedeelde bus te gebruiken (alle processors hebben toegang tot al het geheugen op de computer). Een CPU heeft het prestatievoordeel dat het sneller toegang heeft tot zijn eigen lokale geheugen dan tot ander geheugen op een multiprocessorcomputer.
Deze basisarchitecturen worden gemengd in moderne multiprocessorcomputers. Processors zijn gegroepeerd op een multicore CPU-pakket of knooppunt. Processors die tot hetzelfde knooppunt behoren, delen de toegang tot geheugenmodules zoals bij de UMA-architectuur. Ook kunnen processors toegang krijgen tot geheugen van het externe knooppunt via een gedeelde interconnectie. Processors doen dit voor de NUMA-architectuur maar met langzamere prestaties. Deze geheugentoegang wordt uitgevoerd via de CPU die dat geheugen bezit in plaats van rechtstreeks.
NUMA-knooppunten zijn CPU-/geheugenparen die bestaan uit een CPU-socket en de dichtstbijzijnde geheugenmodules. NUMA is meestal geconfigureerd in het BIOS als de knooppuntinterleaving of interleaved memory-instelling.
Voorbeeld: Een ESXi-host heeft twee sockets (twee CPU’s) en 256 GB RAM. Elke CPU heeft 6 processorkernen. Deze server bevat twee NUMA-knooppunten. Elk NUMA-knooppunt heeft 1 CPU-socket (één CPU), 6 kernen en 128 GB RAM.
ESXi probeert altijd geheugen toe te wijzen voor een VM vanuit een native (eigen) NUMA-knooppunt. Een eigen knooppunt kan automatisch worden gewijzigd als er wijzigingen zijn in VM-belastingen en ESXi-serverbelastingen.
vNUMA
Virtual NUMA (vNUMA) is het equivalent van NUMA voor virtuele machines van VMware. Een vNUMA gebruikt hardwarebronnen van meer dan één fysieke NUMA-node om optimale prestaties te bieden. De vNUMA-technologie maakt de NUMA-topologie beschikbaar voor een gastbesturingssysteem. Hierdoor is het gast-OS op de hoogte van de onderliggende NUMA-topologie voor het meest efficiënte gebruik. De virtuele hardwareversie van een VM moet 8 of hoger zijn om vNUMA te kunnen gebruiken.
De verwerking van vNUMA is aanzienlijk verbeterd in VMware vSphere 6.5, en deze functie wordt niet langer beheerst door de waarde van CPU-cores per socket in de VM-configuratie. Standaard is vNUMA ingeschakeld voor VM’s met meer dan 8 logische processoren (vCPU’s). U kunt vNUMA handmatig inschakelen voor een VM door het VMX-configuratiebestand van de VM te bewerken en de regel toe te voegen numa.vcpu.min=X, waarbij X het aantal vCPU’s voor de virtuele machine is.
Het berekenen van het aantal cores
Laten we eens kijken hoe we het aantal fysieke CPU-cores, logische CPU-cores en andere parameters op een server kunnen berekenen.
- Het totale aantal fysieke CPU-cores op een hostmachine wordt berekend met de formule:
(Het aantal processorsockets) x (Het aantal cores/processor) = Het aantal fysieke processorkernen
Alleen processorsockets met geïnstalleerde processors moeten worden overwogen.
- Als hyper-threading wordt ondersteund, bereken het aantal logische processorkernen met behulp van de formule:
(Het aantal fysieke processorkernen) x (2 threads/fysieke processor) = het aantal logische processoren
- Bereken tot slot met een enkele formule beschikbare processormiddelen die aan VM’s kunnen worden toegewezen:
(CPU-sockets) x (CPU-kernen) x (threads)
Bijvoorbeeld, als je een server hebt met twee processoren die elk 4 kernen hebben en hyper-threading ondersteunen, dan is het totale aantal logische processoren dat aan VM’s kan worden toegewezen:
2(CPU’s) x 4(kernen) x 2(HT) = 16 logische processoren
Eén logische processor kan worden toegewezen als één processor of één CPU-kern voor een VM in VM-instellingen.
Wat betreft virtuele machines, vanwege hardware-emulatiefuncties kunnen ze meerdere processoren en CPU-kernen gebruiken in hun configuratie voor werking. Eén fysieke CPU-kern kan worden geconfigureerd als een virtuele CPU of een virtuele CPU-kern voor een VM.
- De totale hoeveelheid klokcycli die beschikbaar is voor een VM wordt berekend als:
(Het aantal logische sockets) x (De kloksnelheid van de CPU)
Als je een VM configureert om 2 vCPUs met 2 cores te gebruiken wanneer je een fysieke processor hebt met een kloksnelheid van 3,0 GHz, dan is de totale kloksnelheid 2x2x3=12 GHz. Als CPU-overcommitment wordt gebruikt op een ESXi-host, kan de beschikbare frequentie voor een VM minder zijn dan berekend als VM’s CPU-intensieve taken uitvoeren.
Beperkingen voor CPU-cores per socket
De CPU-/corebeperkingen in vSphere 7.0 Update 1 en vSphere 8.0 worden hieronder vermeld.
- Het maximale aantal virtuele processorsockets dat aan een VM is toegewezen, is 768. Als je meer dan 768 virtuele processors wilt toewijzen, configureer dan een VM om multicore-processors te gebruiken.
- Het maximale aantal processorcores dat aan een enkele VM kan worden toegewezen, is 768. Een virtuele machine kan niet meer CPU-cores gebruiken dan het aantal logische processorcores op een fysieke machine.
- CPU-hot add. Als een VM 128 vCPUs of minder dan 128 vCPUs heeft, kun je de CPU-hot-add-functie niet gebruiken voor deze VM en de CPU-configuratie van een VM bewerken terwijl een VM in de uitvoeringsstatus is.
OS CPU-beperkingen . Als een besturingssysteem een limiet heeft voor het aantal processoren, en je wijst meer virtuele processoren toe aan een VM, dan worden de extra processoren niet geïdentificeerd en gebruikt door een gast-OS. Beperkingen kunnen worden veroorzaakt door OS-technisch ontwerp en OS-licentiebeperkingen. Let op dat er besturingssystemen zijn die zijn gelicentieerd per socket en per CPU-core (bijvoorbeeldWindows Server 2019 ). - OS CPU beperkingen. Als een besturingssysteem een limiet heeft op het aantal processors, en u wijs meer virtuele processors toe aan een VM, worden de extra processors niet geïdentificeerd en gebruikt door een gast-OS. Beperkingen kunnen worden veroorzaakt door technische ontwerp van het OS en OS-licentiebeperkingen. Houd er rekening mee dat er besturingssystemen zijn die zijn gelicentieerd per socket en per CPU-kern (bijvoorbeeld, Windows Server 2019).
CPU-ondersteuningslimieten voor sommige besturingssystemen:
- Windows 10 Pro – 2 CPUs
- Windows 10 Home – 1 CPU
- Windows 10 Workstation – 4 CPUs
- Windows Server 2019 Standard/Datacenter – 64 CPUs
- Windows XP Pro x64 – 2 CPUs
- Windows 7 Pro/Ultimate/Enterprise – 2 CPUs
- Windows Server 2003 Datacenter – 64 CPUs
U kunt controleren configuratie maxima’s voor de gebruikte vSphere-versie in uw omgeving op de website van VMware.
Configuratierecommendaties
Voor oudere vSphere-versies raden we het gebruik van sockets boven kernen in VM-configuratie aan. Aanvankelijk ziet u misschien geen significant verschil in CPU-sockets of CPU-kernen in VM-configuratie voor VM-prestaties. Houd er rekening mee dat sommige configuratiefuncties een verschil maken. Denk eraan NUMA en vNUMA te onthouden wanneer u meerdere virtuele processors (sockets) voor een VM instelt om optimale prestaties te krijgen.
Als vNUMA niet automatisch is geconfigureerd, spiegel de NUMA-topologie van de fysieke server. Hier zijn enkele aanbevelingen voor VMs in VMware vSphere 6.5 en later:
- Wanneer u het aantal logische processoren (vCPU’s) voor een VM definieert, kies dan voor de configuratie met kernen per socket. Ga door totdat het aantal het aantal CPU-kernen op een enkele NUMA-node op de ESXi-server overschrijdt. Gebruik dezelfde logica totdat u het bedrag aan geheugen overschrijdt dat beschikbaar is op een enkele NUMA-node van uw fysieke ESXi-server
- Soms is het aantal logische processoren voor uw VM-configuratie groter dan het aantal fysieke CPU-kernen op een enkele NUMA-node, of de hoeveelheid RAM is hoger dan het totale bedrag aan geheugen dat beschikbaar is voor een enkele NUMA-node. Overweeg het aantal logische processoren (vCPU’s) te verdelen over het minimale aantal NUMA-nodes voor optimale prestaties.
- Stel geen oneven aantal vCPU’s in als het aantal CPU’s of de hoeveelheid geheugen het aantal CPU-kernen overschrijdt. Dit geldt ook als het geheugen de hoeveelheid geheugen overschrijdt voor een enkele NUMA-node op een fysieke server.
- Maak geen VM die een aantal vCPU’s heeft dat groter is dan het aantal fysieke processorkernen op uw fysieke host.
- Als u vNUMA niet kunt uitschakelen vanwege uw vereisten, schakel dan niet de functie vCPU Hot-Add in.
Als een gastbesturingssysteem en andere software die zijn geïnstalleerd op een VM zijn gelicentieerd op basis van het aantal processors, configureer dan een VM om minder processors met meer CPU-cores te gebruiken. Bijvoorbeeld, Windows Server 2012 R2 is gelicentieerd per socket, en Windows Server 2016 is gelicentieerd op basis van het aantal cores.
Als u CPU-overtoewijzing gebruikt in de configuratie van uw VMware virtuele machines, houd dan rekening met deze waarden:
1:1 tot 3:1 – Er zouden geen problemen moeten zijn bij het uitvoeren van VM’s
- 3:1 tot 5:1 – Prestatieafname wordt waargenomen
- 6:1 – Bereid u voor op problemen veroorzaakt door aanzienlijke prestatieafname
- CPU-overtoewijzing met normale waarden kan worden gebruikt in test- en ontwikkelomgevingen zonder risico’s.
Configuratie van VM’s op ESXi Hosts
Eerst bepaalt u het aantal logische processors (Aantal CPU’s) van uw fysieke host dat nodig is voor een virtuele machine om goed te werken met voldoende prestaties. Definieer vervolgens het aantal virtuele sockets met processors (Aantal sockets in vSphere Client) en het aantal CPU-cores (Cores per socket) dat u moet instellen voor een VM met in gedachten de eerdere aanbevelingen en beperkingen. De onderstaande tabel kan u helpen bij het selecteren van de benodigde configuratie.
Ten eerst, bepaal het aantal logische processoren (aantal CPUs) van uw fysieke host dat nodig is voor een virtuele machine voor een goed functioneren met voldoende prestaties. Bepaal vervolgens het aantal virtuele sockets met processoren (aantal Sockets in vSphere Client) en het aantal CPU-kernen (Cores per Socket) dat u moet instellen voor een VM, rekening houdend met eerdere aanbevelingen en beperkingen. De onderstaande tabel kan u helpen bij het selecteren van de benodigde configuratie.
Als u meer dan 8 logische processoren voor een VM wilt toewijzen, blijft de logica hetzelfde. Om het aantal logische CPUs in vSphere Client te berekenen, vermenigvuldigt u het aantal sockets met het aantal kernen. Als u bijvoorbeeld een VM wilt configureren om 2-processor sockets te gebruiken, elk met 2 CPU-kernen, dan is het totale aantal logische CPUs 2*2=4. Dit betekent dat u in de virtuele hardware-opties van de VM in vSphere Client 4 CPUs moet selecteren om deze configuratie toe te passen.
Configureren van Cores per CPU in vSphere Client
Laten we uitleggen hoe u CPU-opties voor een VM kunt configureren in VMware vSphere Client. Voer het IP-adres van uw vCenter Server in een webbrowser in en open VMware vSphere Client. In de navigator, open Hosts and Clusters en selecteer de benodigde virtuele machine die u wilt configureren. Zorg ervoor dat de VM is uitgeschakeld om de CPU-configuratie te kunnen wijzigen. Het configuratieproces is identiek in vSphere 6.x, 7.0 en 8.0.
- Klik rechts op de VM en in het contextmenu, klik op Edit Settings om de instellingen van de virtuele machine te openen.
- Breid de CPU sectie uit in het Virtuele Hardware tabblad van het Instellingen bewerken venster.
- CPU. Klik op het vervolgkeuzemenu in de CPU-string en selecteer het totale aantal benodigde logische processoren voor deze VM. In dit voorbeeld selecteren we 4 logische processoren voor de Ubuntu VM (blog-Ubuntu1).
- Kernen per socket. Klik in deze string op het vervolgkeuzemenu en selecteer het benodigde aantal kernen voor elk virtueel socket (processor).
- CPU Hot Plug. Als u deze functie wilt gebruiken, selecteer het CPU Hot Add inschakelen selectievakje. Onthoud de beperkingen en vereisten.
- Reservering. Selecteer de gegarandeerde minimale toewijzing van CPU-kloksnelheid (frequentie, MHz of GHz) voor een virtuele machine op een ESXi-host of cluster.
- Limiet. Selecteer de maximale CPU-kloksnelheid voor een VM-processor. Deze frequentie is de maximale frequentie voor een virtuele machine, zelfs als deze VM de enige VM is die draait op de ESXi-host of het cluster met meer vrije processorbronnen. De ingestelde limiet is van toepassing op alle virtuele processoren van een VM. Als een VM 2 enkele-kernprocessoren heeft en de limiet 1000 MHz is, werken beide virtuele processoren met een totale kloksnelheid van één miljoen cycli per seconde (500 MHz voor elke kern).
- Delen. Deze parameter definieert de prioriteit van resourceverbruik door virtuele machines (Laag, Normaal, Hoog, Aangepast) op een ESXi-host of resource pool. In tegenstelling tot de Reservering– en Limiet-parameters wordt de Delen-parameter alleen toegepast voor een VM als er een gebrek aan CPU-resources is binnen een ESXi-host, resource pool of DRS-cluster.
Beschikbare opties voor de Delen-parameter:
- Laag– 500 shares per virtuele processor
- Normaal– 1000 shares per virtuele processor
- Hoog– 2000 shares per virtuele processor
- Aangepast– stel een aangepaste waarde in
Hoe hoger de waarde van Delen is, hoe meer CPU-resources er worden toegewezen aan een VM binnen een ESXi-host of een resource pool.
- Hardwarevirtualisatie. Selecteer dit selectievakje om geneste virtualisatie in te schakelen. Deze optie is handig als u een VM binnen een VM wilt uitvoeren voor test- of educatieve doeleinden.
- Prestatiecounters. Deze functie wordt gebruikt om een applicatie die is geïnstalleerd binnen de virtuele machine te debuggen en optimaliseren na het meten van de CPU-prestaties.
- Planningsaffiniteit. Deze optie wordt gebruikt om een VM toe te wijzen aan een specifieke processor. De ingevoerde waarde kan bijvoorbeeld zijn: “0, 2, 4-7”.
- I/O MMU. This feature allows VMs to have direct access to hardware input/output devices such as storage controllers, network cards, and graphic cards (rather than using emulated or paravirtualized devices). I/O MMU is also called Intel Virtualization Technology for Directed I/O (Intel VT-d) and AMD I/O Virtualization (AMD-V). I/O MMU is disabled by default. Using this option is deprecated in vSphere 7.0. If I/O MMU is enabled for a VM, the VM cannot be migrated with vMotion and is not compatible with snapshots, memory overcommit, suspended VM state, physical NIC sharing, and NSX network virtualization.
Als u een zelfstandige ESXi-host gebruikt en VMware Host Client gebruikt om VM’s te configureren in een webbrowser, is het configuratieprincipe hetzelfde als voor VMware vSphere Client.
Configuratie van kernen per CPU in VMware Workstation
Als u verbinding maakt met vCenter Server of een ESXi-host in VMware Workstation en de VM-instellingen van een vSphere-VM opent, kunt u de basisconfiguratie van virtuele processors bewerken.
- Klik op VM > Instellingen, selecteer het Hardware tabblad en klik op Processors.
- Selecteer het aantal virtuele processors (sockets) en het aantal kernen per processor.
In de volgende schermafbeelding ziet u de processorconfiguratie voor dezelfde Ubuntu-VM die eerder was geconfigureerd in vSphere Client.
Het aantal totale processorkernen (logische kernen van fysieke processoren op een ESXi-host of cluster) wordt automatisch berekend en weergegeven. In vergelijking daarmee stelt u in de interface van vSphere Client het aantal totale processorkernen (de CPU’s optie) in, selecteert u het aantal kernen per processor en wordt vervolgens het aantal virtuele sockets berekend en weergegeven.
Configuring VM Processors in PowerCLI
Als u de voorkeur geeft aan het gebruik van de opdrachtregelinterface om onderdelen van VMware vSphere in te stellen, gebruikt u PowerCLI om de CPU-configuratie van VMs aan te passen. Laten we eens kijken hoe u de VM-CPU-configuratie voor een VM aanpast die Ubuntu 19 is in PowerCLI. De opdrachten worden gebruikt voor VMs die uitgeschakeld zijn.
- Om een VM in te stellen om twee enkel-core virtuele processors te gebruiken (twee virtuele sockets worden gebruikt), gebruikt u de volgende opdracht:
get-VM -name Ubuntu19 | set-VM -NumCpu 2
Voer een ander nummer in als u een ander aantal processors (sockets) wilt instellen voor een VM.
- In het volgende voorbeeld ziet u hoe u een VM kunt configureren om twee dual-core virtuele processors te gebruiken (2 sockets worden gebruikt):
$VM=Get-VM -Name Ubuntu19
$VMSpec=New-Object -Type VMware.Vim.VirtualMachineConfigSpec -Property @{ "NumCoresPerSocket" = 2}
$VM.ExtensionData.ReconfigVM_Task($VMSpec)
$VM | Set-VM -NumCPU 2
- Zodra een nieuwe CPU-configuratie wordt toegepast op de virtuele machine, wordt deze configuratie opgeslagen in het VMX-configuratiebestand van de VM. In ons geval controleren we het bestand Ubuntu19.vmx dat zich bevindt in de VM-map op de datastore (/vmfs/volumes/datastore2/Ubuntu19/). Regels met de nieuwe CPU-configuratie bevinden zich aan het einde van het VMX-bestand.
numvcpus = “2”
cpuid.coresPerSocket = “2”
- Als u het aantal processors (sockets) voor een VM moet verminderen, gebruikt u dezelfde opdracht als eerder getoond met een lagere hoeveelheid. Bijvoorbeeld, om één processor (socket) voor een VM in te stellen, gebruikt u deze opdracht:
get-VM -name Ubuntu19 | set-VM -NumCpu 1
Het belangrijkste voordeel van het gebruik van PowerCLI is de mogelijkheid om meerdere VM’s tegelijk te configureren. Taakautomatisering is belangrijk en handig als het aantal te configureren virtuele machines hoog is. Gebruik VMware-cmdlets en de syntaxis van Microsoft PowerShell om scripts te maken.
Conclusie
De prestaties van toepassingen die op een VM worden uitgevoerd, zijn afhankelijk van de juiste CPU- en geheugenconfiguratie. In VMware vSphere 6.5 en latere versies, stel meer kernen in CPU in voor virtuele machines en gebruik de benadering van CPU-kernen per socket. Als u oudere vSphere-versies gebruikt dan vSphere 6.5, configureer dan het aantal sockets zonder het aantal CPU-kernen voor een VM te verhogen vanwege het verschillende gedrag van vNUMA in nieuwere en oudere vSphere-versies. Houd rekening met het licentiemodel van de software die u op een VM moet installeren. Als de software per CPU is gelicentieerd, configureer dan meer kernen per CPU in VM-instellingen.
Bij het gebruik van virtuele machines in VMware vSphere, vergeet niet om VMware-back-uptools te gebruiken. Gebruik NAKIVO Backup & Replication om uw virtuele machines te back-uppen, inclusief VM’s met meerdere kernen per CPU. Regelmatige back-up helpt u bij het beschermen van uw gegevens en het herstellen van de gegevens in geval van een ramp.
Source:
https://www.nakivo.com/blog/the-number-of-cores-per-cpu-in-a-virtual-machine/