Come impostare i core della CPU per socket in VMware vSphere: procedure consigliate

Quando si configurano le impostazioni del processore per una nuova VM, è importante comprendere alcuni concetti fondamentali. Tra questi figurano il modo in cui calcolare il numero di core della CPU per socket e come tale configurazione possa influire sulle prestazioni della VM. È inoltre essenziale comprendere l’impatto derivante dall’utilizzo di un numero minore di processori con più core rispetto a un numero maggiore di processori con meno core. Chiarire queste relazioni può aiutarti a scegliere una configurazione in linea con il tuo carico di lavoro e le capacità dell’host.

Continua a leggere per approfondire questi concetti e i principi di base della configurazione della CPU per le VM su host ESXi.

NAKIVO for VMware vSphere Backup

NAKIVO for VMware vSphere Backup

Complete data protection for VMware vSphere VMs and instant recovery options. Secure backup targets onsite, offsite and in the cloud. Anti-ransomware features.

Terminologia

Iniziamo con le definizioni dei termini che dovresti conoscere quando configuri le impostazioni della CPU per VM per aiutarti a comprenderne il principio di funzionamento.

Una CPU (Central Processing Unit, chip microprocessore o processore) è un componente chiave del computer. Si tratta di un circuito elettronico dotato di transistor collegato a un socket. Una CPU esegue istruzioni per effettuare calcoli, eseguire applicazioni e portare a termine attività. Quando la velocità di clock dei processori si è avvicinata alla barriera termica, i produttori hanno modificato l’architettura dei processori e hanno iniziato a produrre processori con più core. Per evitare confusione tra processori fisici e logici o core di processore, alcuni vendor definiscono un processore fisico come «socket».

Un socket CPU è un connettore fisico sulla scheda madre a cui è collegata una singola CPU fisica. Una scheda madre dispone di almeno un socket CPU. Le schede madri dei server dispongono solitamente di più socket CPU che supportano diversi processori multicore. I socket CPU sono standardizzati per le diverse serie di processori. Intel e AMD utilizzano socket CPU diversi per le loro famiglie di processori.

Un core della CPU è la parte del processore che contiene la cache L1. Esegue operazioni di calcolo in modo indipendente senza interagire con altri core e con i componenti esterni di un processore “grande” che sono condivisi tra i core. In sostanza, un core può essere considerato un piccolo processore integrato nel processore principale collegato a un socket. Le applicazioni dovrebbero supportare i calcoli paralleli per utilizzare in modo razionale i processori multicore.

L’hyper-threading è una tecnologia sviluppata da Intel per consentire il calcolo parallelo su processori con un singolo core. L’hyper-threading ha fatto il suo debutto nel 2002 con il lancio del processore Pentium 4 HT, destinato ai computer desktop. Il sistema operativo rileva un processore single-core con hyper-threading come un processore con due core logici (non fisici). Analogamente, un processore a quattro core con hyper-threading appare al sistema operativo come un processore con 8 core. Più thread vengono eseguiti su ciascun core, più attività possono essere svolte in parallelo. I moderni processori Intel dispongono sia di più core che di hyper-threading. Di solito è abilitato per impostazione predefinita e può essere attivato o disabilitato nel BIOS. L’AMD Simultaneous Multi-Threading (SMT) è l’analogo dell’hyper-threading per i processori AMD.

Una vCPU è un processore virtuale configurato come dispositivo virtuale nelle impostazioni dell’hardware virtuale di una VM. Può utilizzare più core della CPU. Una vCPU è collegata a un socket virtuale.

L’overcommitment della CPU si verifica quando si assegnano alle VM residenti su un host fisico più processori logici (core della CPU) rispetto al numero totale di processori logici disponibili sull’host.

Il NUMA (Non-Uniform Memory Access) è un modello di memoria utilizzato nei computer multiprocessore. L’idea è quella di fornire una memoria separata per ciascun processore (a differenza dell’UMA, in cui tutti i processori accedono alla memoria condivisa tramite un bus). Allo stesso tempo, un processore può accedere alla memoria appartenente ad altri processori utilizzando un bus condiviso (tutti i processori accedono a tutta la memoria del computer). Una CPU presenta il vantaggio in termini di prestazioni di poter accedere alla propria memoria locale più rapidamente rispetto ad altre memorie su un computer multiprocessore.

The UMA and NUMA designs for multiprocessor computers

Queste architetture di base sono combinate nei moderni computer multiprocessore. I processori sono raggruppati in un pacchetto o nodo CPU multicore. Quelli che appartengono allo stesso nodo condividono l’accesso ai moduli di memoria, in modo simile all’architettura UMA. Inoltre, i processori possono accedere alla memoria dal nodo remoto tramite un’interconnessione condivisa. Lo fanno nell’architettura NUMA, ma con prestazioni inferiori, attraverso la CPU proprietaria di quella memoria piuttosto che direttamente.

The mixed architecture for modern multiprocessor computers

I nodi NUMA sono coppie CPU/memoria costituite da un socket CPU e dai moduli di memoria più vicini. Il NUMA viene solitamente configurato nel BIOS come impostazione di interleaving dei nodi o di memoria interleaved.

Il NUMA virtuale (vNUMA) è l’analogo del NUMA per le VM VMware. Un vNUMA utilizza le risorse hardware di più di un nodo NUMA fisico per fornire prestazioni ottimali. La tecnologia vNUMA espone la topologia NUMA a un sistema operativo guest. Di conseguenza, il sistema operativo guest è a conoscenza della topologia NUMA sottostante. La versione dell’hardware virtuale di una VM deve essere 8 o superiore per poter utilizzare vNUMA.

La gestione di vNUMA è stata notevolmente migliorata in VMware vSphere 6.5, 8.0 e 9.0. Questa funzione non è più controllata dal valore dei core CPU per socket nella configurazione della VM. Per impostazione predefinita, vNUMA è abilitato per le VM che dispongono di più di 8 processori logici (vCPU). È possibile abilitare manualmente vNUMA per una VM modificando il file di configurazione VMX della VM e aggiungendo la riga numa.vcpu.min=X , dove X è il numero di vCPU della VM.

Sebbene il valore “Core per socket” non controlli l’attivazione di vNUMA, configurare manualmente questa impostazione in modo che corrisponda alla topologia dei nodi NUMA fisici dell’host rimane una procedura consigliata per ottenere prestazioni ottimali su VM di grandi dimensioni con un numero elevato di vCPU.

Calcolo del numero di core

Scopriamo come calcolare il numero di core fisici della CPU, i core logici della CPU e altri parametri su un server.

  • Il numero totale di core fisici della CPU su una macchina host si calcola con la formula:

    (Numero di socket del processore) x (Numero di core per processore) = Numero di core fisici del processore

    Nota : Devono essere considerati solo i socket del processore con processori installati.

  • Se è supportata la tecnologia Hyper-Threading, è possibile calcolare il numero di core logici del processore utilizzando la formula:

    (Numero di core fisici del processore) x (2 thread per processore fisico) = Numero di processori logici

  • Infine, utilizzare questa formula per calcolare le risorse di processore disponibili che possono essere assegnate alle VM:

    (Socket CPU) x (Core CPU) x (thread)

    Ad esempio, se si dispone di un server con due processori, ciascuno con 4 core e che supporta l’hyper-threading, il numero totale di processori logici che possono essere assegnati alle VM è:

    2 (CPU) x 4 (core) x 2 (HT) = 16 processori logici

    Un processore logico può essere assegnato come singolo processore o come singolo core di CPU per una VM.

    Per quanto riguarda le VM, grazie alle loro funzioni di emulazione hardware, possono utilizzare più processori e core di CPU nella loro configurazione. Un singolo core di CPU fisico può essere configurato come CPU virtuale o come core di CPU virtuale per una VM.

  • Il numero totale di cicli di clock disponibili per una VM viene calcolato come segue:

    (The number of logical sockets) x (The clock speed of the CPU)

    For example, if you configure a VM to use 2 vCPUs with 2 cores when you have a physical processor with a clock speed of 3.0 GHz, then the total clock speed is 2 x 2 x 3 = 12 GHz. If CPU overcommitment is used on the ESXi host, the available frequency for the VM can be less than calculated if VMs perform CPU-intensive tasks.

Limitations for CPU Cores Per Socket

The CPU/core limitations in vSphere 7.0 Update 1, vSphere 8.0 and vSphere 9.0 are listed below:

  • The maximum number of virtual processor sockets that can be assigned to a VM is 768. If you want to assign more, configure the VM to use multicore processors.
  • The maximum number of processor cores that can be assigned to a single VM is 768 in vSphere 8.0 (virtual hardware version 18) and increases to 960 in vSphere 9.0 (virtual hardware version 22). A virtual machine cannot use more CPU cores than the number of logical processor cores on the physical machine.
  • CPU Hot-Add . If a VM has 128 vCPUs or fewer, you cannot use the CPU Hot-Add feature, nor can you edit the CPU configuration while the VM is running.
  • OS CPU restrictions . If an operating system has a limit on the number of processors, and you assign more virtual processors to a VM, the additional processors are not identified or used by the guest OS. The OS technical design and OS licensing restrictions can cause these limits. Note that there are operating systems licensed per-socket and per CPU core (for example, Windows Server 2019 or Windows Server 2025).

CPU (CPU sockets) support limits for some operating systems:

  • Windows 10 Pro – 2 CPUs
  • Windows 10 Home – 1 CPU
  • Windows 10 Workstation – 4 CPUs
  • Windows 11 Home/Pro x64 – 2 CPUs (max logical processors or vCPUs/cores is 256)
  • Windows 11 Pro for Workstations – 4 CPUs (max logical processors or vCPUs/cores is 256)
  • Windows Server 2022 (Standard/Datacenter) – 64 CPUs (up to 640 logical processors or CPU cores)
  • Windows Server 2025 (Standard/Datacenter) – 64 CPUs (up to 2048 logical processors or CPU cores)
  • 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
Prova NAKIVO Backup & Replication per VMware vSphere

Prova NAKIVO Backup & Replication per VMware vSphere

Inizia la tua prova gratuita di 15 giorni per eseguire backup incrementali delle macchine virtuali senza agenti, con opzioni di ripristino completo e granulare istantaneo, protezione anti-ransomware e molto altro ancora.

Raccomandazioni di configurazione

Per le versioni precedenti di vSphere, si consiglia di utilizzare i socket anziché i core nella configurazione delle VM. Inizialmente, potresti non notare una differenza significativa tra socket CPU e core CPU, che può influire sulle prestazioni delle VM. Tieni presente alcune funzioni di configurazione. Tenete presente NUMA e vNUMA quando valutate le impostazioni di più processori virtuali (socket) per una VM al fine di ottenere prestazioni ottimali.

Se vNUMA non viene configurato automaticamente, rispecchiate la topologia NUMA del server fisico. Ecco alcuni consigli per le VM in VMware vSphere 6.5 e versioni successive (comprese vSphere 8.0 e 9.0):

  • Quando si definisce il numero di processori logici (vCPU) per una VM, scegliere la configurazione “core per socket”. Continuare fino a quando il conteggio supera il numero di core della CPU su un singolo nodo NUMA del server ESXi. Applicare la stessa logica fino a superare la quantità di memoria disponibile su un singolo nodo NUMA del proprio server ESXi fisico.
  • A volte, il numero di processori logici nella configurazione della macchina virtuale supera il numero di core CPU fisici su un singolo nodo NUMA, oppure la quantità di RAM è superiore alla memoria totale disponibile per un singolo nodo NUMA. Per ottenere prestazioni ottimali, si consiglia di distribuire il numero di processori logici (vCPU) tra il numero minimo di nodi NUMA.
  • Non impostare un numero dispari di vCPU se il numero di CPU o la quantità di memoria supera il numero di core CPU. Lo stesso vale nel caso in cui la memoria superi la quantità allocata per un singolo nodo NUMA su un server fisico.
  • Non creare una VM con un numero di vCPU superiore al numero di core del processore fisico presente sull’host fisico.
  • Se non è possibile disabilitare vNUMA a causa dei requisiti, non abilitare la funzione di aggiunta a caldo delle vCPU.

Se vNUMA è abilitato in vSphere prima della versione 6.5 e avete definito il numero di processori logici (vCPU) per la VM, selezionate il numero di socket virtuali mantenendo il numero di core per socket pari a 1 (il valore predefinito). La configurazione con un core per socket consente a vNUMA di selezionare automaticamente la migliore topologia vNUMA per il sistema operativo guest. Questa configurazione automatica è ottimale sulla topologia fisica sottostante del server.

Se vNUMA è abilitato e si utilizza lo stesso numero di processori logici (vCPU), aumentando però il numero di core CPU virtuali e riducendo di pari misura il numero di socket virtuali, vNUMA non è in grado di impostare la configurazione NUMA ottimale per la VM. Di conseguenza, le prestazioni della VM ne risentono e possono peggiorare.

Se il sistema operativo guest e gli altri software installati sulla VM sono concessi in licenza per processore, configurare la VM in modo che utilizzi un numero inferiore di processori con un numero maggiore di core CPU. Ad esempio, Windows Server 2012 R2 è concesso in licenza per socket, mentre Windows Server 2016 (e versioni successive) è concesso in licenza per core.

Se si utilizza l’overcommitment della CPU nella configurazione delle VM VMware, tenere presenti questi valori:

  • Da 1:1 a 3:1 – Non dovrebbero esserci problemi nell’esecuzione delle VM;
  • Da 3:1 a 5:1 – Si osserva un calo delle prestazioni;
  • 6:1 – È previsto un calo significativo delle prestazioni.

L’overcommitment della CPU con valori normali può essere utilizzato in ambienti di test e sviluppo senza rischi.

Configurazione delle VM su host ESXi

Innanzitutto, determinare il numero totale di processori logici (il numero totale di CPU) obbligatori affinché l’host fisico possa eseguire correttamente una VM e garantire prestazioni sufficienti. Successivamente, definire il numero di socket virtuali con processori (il numero di socket in vSphere Client) e il numero di core della CPU (core per socket) da impostare per la VM, tenendo conto delle raccomandazioni e delle limitazioni precedenti. La tabella riportata di seguito può aiutarti a selezionare la configurazione necessaria.

calculate CPU cores per socket for multiprocessor VMs

Se devi assegnare più di 8 processori logici alla macchina virtuale, la logica rimane la stessa. Per calcolare il numero di CPU logiche in vSphere Client, moltiplica il numero di socket per il numero di core. Ad esempio, se devi configurare una macchina virtuale per utilizzare socket a 2 processori, ciascuno con 2 core di CPU, il numero totale di CPU logiche è 2 * 2 = 4. Ciò significa che, per applicare questa configurazione, è necessario selezionare 4 CPU nelle opzioni dell’hardware virtuale della VM in vSphere Client.

Configurazione dei core per CPU in vSphere Client

Spieghiamo come configurare le opzioni della CPU per una VM in VMware vSphere Client. La procedura di configurazione è identica nelle versioni vSphere 6.x, 7.0, 8.0 e 9.0.

  1. Digitare l’indirizzo IP del proprio vCenter Server in un browser web e aprire VMware vSphere Client.
  2. Nel pannello di navigazione, aprire Host e cluster , quindi selezionare la VM che si desidera configurare. Assicurarsi che la VM sia spenta per modificare la configurazione della CPU.
  3. Fare clic con il tasto destro del mouse sulla VM, quindi selezionare Modifica impostazioni dal menu contestuale per aprire le impostazioni della VM.
  4. Espandere la sezione CPU nella scheda Hardware virtuale della finestra Modifica impostazioni .
    • CPU . Fare clic sul menu a discesa nella riga CPU e selezionare il numero totale di processori logici necessari per questa VM. In questo esempio, selezioniamo 4 processori logici per la VM Ubuntu ( blog-Ubuntu1 ).
    • Core per socket . In questa voce, fare clic sul menu a discesa e selezionare il numero necessario di core per ciascun socket virtuale (processore).
    • Hot Plug della CPU . Per utilizzare questa funzione, selezionare la casella di controllo Abilita aggiunta a caldo della CPU . Tenere presenti le limitazioni e i requisiti.

      Configuring processors and the number of cores per CPU

    • Reservation . Selezionare l’allocazione minima garantita della velocità di clock della CPU (frequenza, MHz o GHz) per la VM su un host o cluster ESXi.
    • Limit . Selezionare la velocità di clock massima della CPU per il processore della VM. Questa frequenza rappresenta la frequenza massima per la VM, anche se tale VM è l’unica in esecuzione sull’host o cluster ESXi con risorse di processore libere disponibili. Il limite impostato applica a tutti i processori virtuali della VM. Se dispone di 2 processori single-core e il limite è 1000 MHz, entrambi i processori virtuali funzioneranno con una velocità di clock totale di un milione di cicli al secondo (500 MHz per ciascun core).
    • Quote . Questo parametro definisce la priorità di consumo delle risorse da parte delle VM (Bassa, Normale, Alta, Personalizzata) su un host ESXi o un pool di risorse. A differenza dei parametri Reservation e Limit , il parametro Shares viene applicato alla VM solo in caso di carenza di risorse CPU all’interno di un host ESXi, di un pool di risorse o di un cluster DRS.

      Opzioni disponibili per il parametro Shares :

      • Low – 500 shares per processore virtuale
      • Normal – 1000 shares per processore virtuale
      • High – 2000 shares per processore virtuale
      • Custom – imposta un valore personalizzato

      Maggiore è il valore di Shares , maggiore sarà la quantità di risorse CPU assegnate alla VM all’interno di un host ESXi o di un pool di risorse.

    • Virtualizzazione hardware . Selezionare questa casella di controllo per abilitare virtualizzazione annidata. Questa opzione è utile se si desidera eseguire una VM all’interno di un’altra VM a scopo di test o didattico.
    • Contatori di prestazioni . Questa funzione consente il debug e l’ottimizzazione di un’applicazione installata all’interno della VM dopo aver misurato le sue prestazioni della CPU.
    • Affinità di schedulazione . Questa opzione viene utilizzata per assegnare una VM a un processore specifico. Il valore può essere simile a questo: “ 0, 2, 4-7 ”.
    • I/O MMU . Questa funzione consente alle VM di accedere direttamente ai dispositivi di input/output hardware, quali controller di storage, schede di rete e schede grafiche (anziché utilizzare dispositivi emulati o paravirtualizzati). L’I/O MMU è nota anche come Intel Virtualization Technology for Directed I/O (Intel VT-d) e AMD I/O Virtualization (AMD-V). L’I/O MMU è disabilitata per impostazione predefinita. Questa opzione è deprecata in vSphere 7.0. Se l’I/O MMU è abilitata, la VM non può essere migrata con vMotion e non è compatibile con gli snapshot, l’overcommit di memoria, lo stato di sospensione della VM, la condivisione delle schede di rete fisiche e Virtualizzazione di rete NSX.

Se si utilizza un Host VMware ESXi autonomo e VMware Host Client per configurare le VM in un browser web, il principio di configurazione è lo stesso di VMware vSphere Client.

Configurazione dei core per CPU in VMware Workstation

Se ci si connette a un VMware vCenter oppure a un host ESXi all’indirizzo VMware Workstation e si aprono le impostazioni di una macchina virtuale VMware vSphere, è possibile modificare la configurazione di base dei processori virtuali.

  1. Fare clic su Macchina virtuale > Impostazioni , selezionare la scheda Hardware e fare clic su Processori .
  2. Selezionare il numero di processori virtuali (socket) e il numero di core per processore.

    Nella schermata seguente è possibile vedere la configurazione del processore per la stessa VM Ubuntu configurata in precedenza in vSphere Client.

    Il numero totale di core del processore (core logici dei processori fisici su un host ESXi o un cluster) viene calcolato e visualizzato automaticamente qui sotto. In confronto, nell’interfaccia di vSphere Client si imposta il numero totale di core del processore (l’opzione CPU), si seleziona il numero di core per processore e quindi il numero di socket virtuali viene calcolato e visualizzato.

    the number of cores per CPU for vSphere VMs in VMware Workstation

Configurazione dei processori delle macchine virtuali in PowerCLI

Se si preferisce utilizzare l’interfaccia a riga di comando per configurare i componenti di VMware vSphere, utilizzare Power CLI per modificare la configurazione della CPU delle macchine virtuali. Scopriamo come modificare la configurazione della CPU per una VM ( Ubuntu 19 ) in PowerCLI. Utilizzate questi comandi per le VM spente.

  1. Per configurare una VM in modo che utilizzi due processori virtuali single-core (vengono utilizzati due socket virtuali), utilizzate il comando:

    get-VM -name Ubuntu19 | set-VM -NumCpu 2

    Inserite un altro numero se desiderate impostare un numero diverso di processori (socket) per la VM.

  2. Nell’esempio seguente è possibile vedere come configurare una VM per l’utilizzo di due processori virtuali dual-core (vengono utilizzati 2 socket):

    $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

    Una volta applicata una nuova configurazione della CPU alla VM, questa viene salvata nel file di configurazione VMX della VM. In questo esempio, controlliamo il file Ubuntu19.vmx situato nella directory della VM sull’archivio dati (/vmfs/volumes/datastore2/Ubuntu19/). Le righe con la nuova configurazione della CPU si trovano alla fine del file VMX.

    numvcpus = “2”

    cpuid.coresPerSocket = “2”

  3. Se è necessario ridurre il numero di processori (socket) per una VM, utilizzare lo stesso comando mostrato in precedenza con valori inferiori. Ad esempio, per impostare un processore (socket) per una VM, utilizzare questo comando:

    get-VM -name Ubuntu19 | set-VM -NumCpu 1

Il vantaggio principale dell’utilizzo di Power CLI è la possibilità di configurare più VM in blocco. Automazione delle attività Ciò è importante se il numero di VM da configurare è elevato. Utilizzate i cmdlet VMware e la sintassi di Microsoft PowerShell per creare script.

Conclusione

La configurazione dei socket virtuali e dei core per socket in VMware vSphere consente di definire come la topologia della CPU di una VM viene presentata al sistema operativo guest. Queste impostazioni contribuiscono a garantire che la configurazione della macchina virtuale sia conforme ai requisiti del sistema operativo e delle applicazioni installate. VMware offre opzioni flessibili per regolare il numero di core per socket, consentendo di allineare la configurazione alle esigenze di amministrazione o di licenza. Comprendere come vSphere espone la topologia della CPU è fondamentale nella pianificazione delle implementazioni delle macchine virtuali.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Le persone leggono anche