Come funziona la gestione delle risorse assegnate alle virtual machine, in un ambiente virtuale basato su Nutanix AHV? Quanto incide la configurazione delle risorse in una topologia NUMA?
In una topologia NUMA, i tempi di accesso alla memoria di una VM dipendono dalla posizione di memoria rispetto al processore.
Una VM accede alla memoria locale di un processore più velocemente rispetto alla memoria non locale. È possibile ottenere un utilizzo ottimale delle risorse utilizzando sia la CPU che la memoria dallo stesso nodo NUMA fisico. Se si esegue la CPU su un nodo NUMA (ad esempio, il nodo 0) e la VM accede alla memoria da un altro nodo (nodo 1), si potrebbe verificare una latenza di memoria.
E’ quindi opportuno assicurarsi che la topologia hardware virtuale delle VM corrisponda alla topologia hardware fisica, per ottenere una latenza di memoria minima.
Gli host AHV supportano l’accesso alla memoria non uniforme virtuale (vNUMA) sulle macchine virtuali. È possibile abilitare vNUMA sulle VM durante la creazione o la modifica delle VM per ottimizzare le prestazioni di memoria.
vNUMA ottimizza le prestazioni di memoria delle macchine virtuali che richiedono più vCPU o memoria rispetto alla capacità di un singolo nodo NUMA fisico. In una topologia vNUMA, è possibile creare più nodi vNUMA, ognuno dei quali include vCPU e RAM virtuale.
Quando si assegna un nodo vNUMA a un nodo NUMA fisico, le vCPU possono determinare in modo intelligente la latenza della memoria (alta o bassa). Una bassa latenza della memoria all’interno di un nodo vNUMA si traduce in una bassa latenza all’interno di un nodo NUMA fisico.

Provo a fare un esempio pratico:
Ipotizziamo di avere un nodo NX-1065-G9 con le seguenti specifiche:
– Doppio processore Intel Xeon® Silver 4509Y 8 cores / 2.60 GHz
– 384 GB di RAM distribuiti equamente tra i due controller di memoria.
Abbiamo necessità di erogare una virtual machine con le seguenti caratteristiche:
– Minimo 12 core
– 256 GB di RAM
Questa configurazione richiede vNUMA?
Quale sarebbe il dimensionamento per vNUMA, in questo caso?
Soluzione
In questo scenario, osserviamo che le risorse previste dalla virtual machine sono maggiori di quelle disponibili da un singolo nodo NUMA fisico (ovvero 8 core CPU x 192 GB di RAM). In questo scenario è sicuramente consigliabile abilitare vNUMA per esporre l’architettura NUMA fisica al sistema operativo guest della VM per prestazioni ottimali.
Ovviamente, vNUMA dovrebbe essere dimensionato in base all’architettura del nodo NUMA fisico sottostante.
Come si fa ad abilitare vNUMA su una virtual machine in AHV?
Passaggio 1:
Utilizzare SSH e accedere a una VM del controller. Eseguire il seguente comando per verificare il numero di nodi NUMA disponibili su ciascun host AHV nel cluster.
nutanix@cvm$ hostssh "numactl --hardware"
Passaggio 2:
E’ possibile abilitare vNUMA quando crei una VM o ne modifichi una esistente. Di seguito vi riporto i due casi con i relativi comandi:
Abilita vNUMA se stai creando una VM:nutanix@cvm$ acli vm.create num_vcpus=x \
num_cores_per_vcpu=x memory=xG \
num_vnuma_nodes=x
Abilita vNUMA se stai modificando una VM esistente:nutanix@cvm$ acli vm.update \
num_vnuma_nodes=
PS: le informazioni qui riportate sono prese, in parte, da un corso Nutanix, disponibile sulla piattaforma https://university.nutanix.com/