Condividi tramite


Funzionalità di personalizzazione vCore della macchina virtuale: disabilitare il multithreading simultaneo (SMT/HT) e i core vincolati configurabili (anteprima)

La personalizzazione di vm vCore è una nuova funzionalità di macchina virtuale di Azure che offre un maggiore controllo sulle risorse della CPU di una macchina virtuale. È costituito da due funzionalità correlate:

Disabilita multithreading simultaneo (thread per core = 1): consente di eseguire una macchina virtuale con un solo thread per ogni core CPU fisica, disattivando in modo efficace il multithreading simultaneo (SMT). La disabilitazione offre alla macchina virtuale l'uso completo di ogni core fisico, che può migliorare le prestazioni per determinati carichi di lavoro ( ad esempio alcune applicazioni hpc o sensibili alla latenza) che traggono vantaggio dall'accesso esclusivo ai core.

Core vincolati configurabili (Personalizza vCPU): consente di scegliere un numero personalizzato di vCPU per una nuova macchina virtuale, inferiore al conteggio predefinito per tale dimensione della macchina virtuale. Consente di allocare solo i core CPU necessari, ad esempio, per ridurre i costi di licenza per il software concesso in licenza per core (ad esempio database o server di analisi) pur ottenendo la memoria completa e l'I/O di una macchina virtuale di dimensioni maggiori.

Vantaggi: con queste funzionalità, è possibile ottimizzare le macchine virtuali per prestazioni e costi:

Prestazione: La disabilitazione dell'hyperthreading può offrire prestazioni più coerenti e talvolta più elevate a thread singolo eliminando conflitti tra thread nello stesso core.

Ottimizzazione costi: La riduzione del numero di vCPU di una macchina virtuale può ridurre i costi per il software che addebita per CPU. È possibile eseguire un'istanza di SQL Server a elevato utilizzo di memoria in una macchina virtuale con un minor numero di vCPU attivi, riducendo i costi di licenza SQL, senza pagare la capacità della CPU inutilizzata.

Non sono previsti costi aggiuntivi per l'uso di queste opzioni di configurazione della CPU. Il prezzo della macchina virtuale di base rimane invariato se è stata distribuita la macchina virtuale di dimensioni complete con le impostazioni predefinite. Tuttavia, i clienti ottengono costi di licenza ridotti per il software fatturato per vCPU.

Configurazione delle impostazioni di personalizzazione della macchina virtuale

È possibile configurare le impostazioni "Thread per core" e "vCPU disponibili" usando il portale di Azure, i modelli di Azure Resource Manager (ARM) o gli strumenti da riga di comando.

Portale di Azure

Nel portale di Azure il flusso di lavoro di creazione della macchina virtuale ha un'interfaccia utente per queste opzioni.

Iniziare a creare una macchina virtuale come di consueto, ad esempio fare clic su Crea una risorsa > Macchina virtuale e compilare la scheda Informazioni di base.

  1. Nella sezione Dimensioni della scheda Informazioni di base selezionare una dimensione della macchina virtuale che si vuole usare. Nella selezione delle dimensioni, cliccare sul pulsante "Personalizza i core". Verranno aperti altri campi per la personalizzazione della macchina virtuale.

  2. Per disabilitare SMT, impostare il Thread per core su 1. Lasciare 2 se si vuole mantenere abilitato l'hyperthreading.

  3. Per quanto riguarda il numero di vCPU, impostare le vCPU disponibili sul numero desiderato di vCPU. Il portale fornisce valori validi per le dimensioni della macchina virtuale scelta.

  4. Continuare con il resto della creazione della macchina virtuale (configurare dischi, rete e così via) e creare la macchina virtuale.

Una volta distribuita la macchina virtuale, ha il numero specificato di vCPU. Se si imposta Thread per core su 1, il sistema operativo della macchina virtuale vede metà del numero consueto di processori (dal momento che l'hyperthreading è disattivato). Se si riducessero le vCPUs, si vedrebbe quel conteggio ridotto.

Azure CLI

Per disabilitare SMT e configurare i core durante l'avvio dell'istanza:

Per disabilitare SMT/HT, usare il comando dell'interfaccia della riga di comando di Azure e specificare il valore 1 per vCPUsPerCore per il parametro --cpu-options. Per configurare i core, specificare il numero di core CPU per vCPUsAvailable. In questo esempio, per specificare il numero di core CPU predefinito per un'istanza di Standard_D8s_v6, specificare il valore 8.

Az vm create --resource-group ccctest-rg-01 --name ccctestvm01 --image Ubuntu2204 --size Standard_D8s_v6 --location eastus2euap --admin-username azureuser --generate-ssh-keys --public-ip-address '""' --v-cpus-available 4 --v-cpus-per-core 1

PowerShell

Per disabilitare SMT e configurare i core durante l'avvio dell'istanza

Usare PowerShell e specificare le proprietà nell'oggetto di configurazione sottostante. Per disabilitare SMT/HT, specificare il valore 1 per vCPUsPerCore per il parametro --cpu-options. Per configurare i core, specificare il numero di core CPU per vCPUsAvailable.

$vmConfig = New-AzVMConfig -VMName "MyVM" -VMSize "Standard_D8s_v6"

$vmConfig.HardwareProfile.VmSizeProperties = New-Object Microsoft.Azure.Management.Compute.Models.VMSizeProperties

$vmConfig.HardwareProfile.VmSizeProperties.VCPUsAvailable = 4

$vmConfig.HardwareProfile.VmSizeProperties.VCPUsPerCore = 1

Passare quindi all'impostazione del sistema operativo, della rete e così via e usare New-AzVM per creare la macchina virtuale. Questo approccio usa gli oggetti azure PowerShell SDK direttamente per inserire i valori.

Modello ARM (Azure Resource Manager)

Per l'automazione o gli scenari in cui è necessario eseguire la distribuzione tramite infrastruttura come codice, è possibile usare i modelli di Azure Resource Manager per specificare queste opzioni della CPU. Può essere usato per disabilitare SMT e distribuire macchine virtuali personalizzate tramite l'interfaccia della riga di comando o PowerShell (distribuendo un modello).

Nella definizione della risorsa del modello di Resource Manager (ARM template) per la macchina virtuale, le opzioni della CPU vengono specificate nella proprietà hardwareProfile della risorsa della macchina virtuale. In particolare, si usa vmSizeProperties all'interno di hardwareProfile per impostare i valori:

vCPUsPerCore: impostare questa opzione su 1 per disabilitare l'hyperthreading (ad esempio, 1 thread per core). Omettere questa proprietà o impostare su null/2 per usare l'hyperthreading predefinito (2 thread per core).

vCPUsAvailable: impostare questo valore sul numero di vCPU da attivare. Se questa proprietà non è impostata, la macchina virtuale usa il numero predefinito di vCPU per tale dimensione.

Di seguito alcuni esempi di blocchi di codice del modello ARM per diversi scenari:

Disabilitare SMT (SMT/HT Off)

Questo frammento di codice mostra l'impostazione per disattivare SMT in una macchina virtuale (la macchina virtuale usa 1 thread per core)

"properties": {

"hardwareProfile": {

"vmSize": " Standard_D8s_v6",

"vmSizeProperties": {

"vCPUsPerCore": 1

}

},

...

}

In questo caso, se Standard_D8s_v6 normalmente ha 8 vCPU (4 core * 2 thread), l'impostazione di vCPUsPerCore: 1 indica che la macchina virtuale ha 4 vCPU (una per core).

Limitare il numero di vCPU (Personalizza core)

Questo frammento di codice mostra una macchina virtuale configurata per l'uso di un numero specifico di vCPU (minore del valore predefinito)

"properties": {

"hardwareProfile": {

"vmSize": " Standard_D8s_v6",

"vmSizeProperties": {

"vCPUsAvailable": 2

}

},

...

}

Qui abbiamo richiesto due core. In Standard_D8s_v6 (che è iperthreaded per impostazione predefinita) vengono allocati 2 core fisici e, poiché SMT è ancora attivo per impostazione predefinita (2 thread per core), la macchina virtuale ha 4 vCPU logiche.

Disabilitare SMT e personalizzare le vCPU

È possibile combinare entrambe le impostazioni come illustrato:

"properties": {

"hardwareProfile": {

"vmSize": " Standard_D8s_v6",

"vmSizeProperties": {

"vCPUsPerCore": 1,

"vCPUsAvailable": 2

}

},

...

}

In questo esempio vCPUsPerCore: 1 disabilita SMT e vCPUsAvailable: 2 quindi richiede 2 vCPU. Con SMT disattivato, quei 2 corrispondono direttamente a due core fisici (senza threading). La macchina virtuale ha due processori logici nel sistema operativo.

Assicurarsi di usare una versione API 2021-07-01 o successiva per la risorsa Microsoft.Compute/virtualMachines nel modello, poiché è quando sono state introdotte le proprietà.

Identificare i vCore supportati per la configurazione

Per determinare quali vCPU possono essere vincolate in un'area specifica, è possibile usare l'interfaccia della riga di comando di Azure o il portale di Azure.

Uso dell'interfaccia della riga di comando di Azure

Esegui il comando seguente per recuperare l'elenco di SKU di calcolo per la tua sottoscrizione e regione:

az vm list-skus --location {location} --resource-type virtualMachines --query "[name=='VM_NAME_HERE']" 
  • Questo comando mostra le configurazioni vCPU supportate. Il campo "vCPUsConstraintsAllowed" descrive i vCore supportati.

Uso del portale di Azure

Se si richiede una configurazione vCPU non supportata, il portale visualizzerà un messaggio di errore e fornirà un elenco di opzioni vCPU supportate per le dimensioni della macchina virtuale.

Considerazioni

La maggior parte delle famiglie di macchine virtuali di Azure supporta queste funzionalità, ma esistono alcune importanti regole e considerazioni da comprendere quando si usa la funzionalità:

  • È possibile disabilitare l'hyperthreading solo nelle dimensioni delle macchine virtuali che usano l'hyperthreading per impostazione predefinita, ad esempio macchine virtuali con 2 thread per core.

  • È possibile ridurre solo il numero di vCPU, non aumentarlo oltre l'impostazione predefinita della macchina virtuale. Il valore vCPUsAvailable specificato deve essere minore o uguale al numero di vCPU predefinito delle dimensioni della macchina virtuale scelta.

  • Nelle dimensioni delle macchine virtuali con hyperthreading (predefinito 2 thread/core), qualsiasi numero di vCPU personalizzato deve essere un numero pari.

  • È possibile disabilitare l'hyperthreading e vincolare le vCPU contemporaneamente nella stessa macchina virtuale. In questo caso, si applicano entrambe le regole precedenti.

  • Le opzioni della CPU possono essere specificate solo in fase di creazione della macchina virtuale o durante un'operazione di ridimensionamento. Non è possibile modificare dinamicamente il numero di core o l'impostazione SMT in una macchina virtuale allocata. Questo aggiornamento richiede che la macchina virtuale venga deallocata.

  • Se si passa a una nuova dimensione di VM nella stessa famiglia che supporta anche la funzionalità, le impostazioni vengono mantenute per impostazione predefinita.

  • Se si esegue il ridimensionamento a una dimensione di macchina virtuale che non supporta l'impostazione, l'operazione viene bloccata o viene visualizzato un errore.

  • Ogni volta che si ridimensiona una macchina virtuale (all'interno della stessa serie o in una serie diversa), si verifica un riavvio della macchina virtuale. Pianificare il tempo di inattività durante l'operazione di ridimensionamento.

  • In anteprima sono supportate solo immagini di Azure Marketplace di prima parte (Windows Server, Ubuntu, Red Hat, SUSE e così via) e immagini personalizzate. Le offerte specializzate del Marketplace, ad esempio SQL Server in macchine virtuali, non sono supportate.