Hyper-V Series: configurare il NUMA dopo la migrazione di una VM tra host

Hyper-V Server

In passato abbiamo affrontato il capitolo relativo al Non-Uniform Memory Access (NUMA) un’architettura presente nei computer con due o più processori che permette di gestire in modo intelligente la coppia CPU/RAM, facendo in modo che venga sfruttato lo stesso Bus, cosa che porta ad un notevole aumento delle performance.

Ogni “coppia” è definita NUMA Nodes.

Figura 1 – Architettura NUMA

In uno scenario fisico, con anche i software capaci di sfruttare queste potenzialità, viene fatto un partizionamento della RAM in base alla sua appartenenza della CPU. Ad esempio se abbiamo un server con 128GB di RAM e 2 socket, se l’applicativo utilizzerà 64GB di RAM il NUMA farà in modo di dividere l’utilizzo tra i due canali e di usare 32GB da una CPU e 32GB dall’altra CPU. Usare lo stesso canale permette uno scambio più veloce delle informazioni e quindi latenze minori.

Se volete leggere l’articolo completo, potete farlo a questo link: Hyper-V Series: Configurare il NUMA

Virtual Machine Migration

Il NUMA è una cosa buona ma può diventare pericoloso quando si va a muovere una macchina virtuale da un host verso un altro e questo soprattutto quando le configurazioni hardware sono diverse tra di loro. Il rischio è di sovraconfigurare, o sottoconfigurare, l’uso delle risorse della VM, cosa che può tradurre in una perdita di perfomance.

In questo scenario, abbiamo una macchina virtuale all’interno di un host basato su 2 CPU Intel Gold Series 52xx con 128GB di RAM; come si può vedere dalla figura 2, la configurazione del NUMA è impostata per usare un certo tipo di risorse.

Figura 2 – Configurazione NUMA su Host 1

La VM è stata mossa all’interno di un host basato su 2 CPU Intel Gold Series 62xx con 768GB RAM. Dopo la migrazione, la configurazione è rimasta la stessa e questo, come detto in precedenza, ha avuto un impatto sulle performance perchè la macchina non era capace di sfruttare a pieno le nuove risorse.

Per risolvere il problema, è sufficiente modificare la configurazione della macchina virtuale (sezione Processore), tramite Hyper-V Manager, o il Failover Cluster Manager, cliccando sul pulsante Use Hardware Topology.

Il risultato sarà l’aggiornamento della configurazione hardware come mostrato nella figura 3.

Figura 3 – Configurazione NUMA su Host 1

Conclusioni

Quando si effettua uno spostamento di una macchina virtuale, da un host verso un altro, è importante tenere sempre in considerazione la parte del NUMA anche se è bene ricordare che questo scenario è vero solo nei seguenti casi:

  • Da un nodo standalone verso un Cluster
  • Da un Cluster verso un nodo standalone
  • Da un nodo standalone verso un nodo standalone

In uno scenario basato su cluster, questo controllo non è necessario perchè ogni singolo nodo deve essere uguale con gli altri, per non perdere la validazione che rende la struttura utilizzabile in produzione.