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.
![](http://www.windowserver.it/wp-content/uploads/2017/03/2017_03_24_Hyperv-02.jpg)
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.
![](https://www.windowserver.it/wp-content/uploads/2020/09/2020_09_25_numa-01.png)
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.
![](https://www.windowserver.it/wp-content/uploads/2020/09/2020_09_25_numa-02.png)
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.