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.
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.
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.
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.