Virtualizzazione: architetture ARM e x86 a confronto

 

Negli ultimi 12 mesi si è parlato molto di ARM in ambito server e data center. Nel settore il controllo di Intel e delle soluzioni x86  resta ancora inattaccabile ma la concorrenza ha finalmente iniziato a mostrare
diversi progetti interessanti, come ad esempio i chip ThunderX Cavium, caratterizzati da un ottimo rapporto prestazioni/consumi. In particolare modo questi ultimi si sono rivelati inferiori a quelli dei noti processori Xeon, attirando l’attenzione di tutti coloro che puntano all’ottimizzazione degli impianti e ad un abbassamento dei consumi energetici – recentemente abbiamo parlato dell’evoluzione delle tecniche di efficientamento e dell’impiego di energia pulita nei data center.

Il taglio dei consumi energetici rappresenta uno dei punti di forza per ARM ma è chiaro che per impensierire Intel non basta. Le performance sono importanti. E quando si parla di virtualizzazione, l’overhead richiesto dall’astrazione di risorse hardware-software deve essere il più basso possibile – in modo da garantire prestazioni di un certo livello.

Supporto alla tecnologia

E’ bene ricordare che le architetture ARM e x86 non furono inizialmente pensate per la virtualizzazione. Fu nella seconda metà degli anni 90 che, con l’avanzata inarrestabile di VMware, Intel iniziò ad adeguare i propri progetti alla promettente tecnologia. ARM si avvicino solo successivamente al mondo degli hypervisor, pagando di fatto per il ritardo accumulato, ma i progressi ottenuti  negli ultimi anni sono ritenuti encomiabili dagli addetti ai lavori – tanto che si parla di prestazioni comparabili a x86.

Un gruppo di ricercatori della Columbia University ha pubblicato un interessante paper, consultabile online, nel quale si cerca di valutare in maniera oggettiva quali siano le reali performance offerte da ARM con gli hypervisor più noti. Vediamo di riportare gli estratti più significativi.

Uno dei redattori del paper, Christoffer Dall, afferma che le scarse prestazioni di ARM con la virtualizzazione sono più una “convinzione comune” che un dato di fatto inoppugnabile. Certo, è vero che ARM non si trova perfettamente a suo agio con alcuni hypervisor (KVM) ma le performance registrate dai ricercatori mostrano inaspettati risultati.

ARM vs x86 hypervisor overhead

Il grafico mostra l’overhead di virtualizzazione richiesto rispetto all’applicazione nativa. I valori più bassi indicano una prestazione migliore – fonte “ARM Virtualization: Performance and Architectural Implications”

Analisi e conclusioni finali

E’ stato detto in apertura di paragrafo che ARM si è avvicinata solo in un secondo momento alla virtualizzazione: il supporto alla tecnologia è stato costruito sull’hardware in maniera simile a x86 – pur adottando approcci differenti. Il ricercatore osserva che ARM “è come se fosse stata concepita [per lavorare] con Xen”. Di conseguenza l’impiego di KVM si è rivelato problematico, nonostante l’aggiunta del supporto alla virtualizzazione in ARMv.8, ha aggiunto Christoffer.

In merito al grafico è possibile constatare la presenza di vari colli di bottiglia. La cosidetta “exiting VM operation” è qualla in cui sono stati registrati i valori più discordanti: la transizione, in base all’architettura ed all’hypervisor impiegati, ha infatti richiesto un quantitativo di tempo fino a 4 volte più lento o più veloce del normale.

Per quanto riguarda ARM, il costo dei colli di bottiglia è quantificabile nell’ordine dei 6500 cicli con l’hypervisor KVM ed attorno ai 375 cicli con Xen. “Abbiamo concluso che all’atto pratico, con una serie di applicazioni benchmark, [il presunto divario prestazionale sembra non essere marcato] – nei test, su architettura ARM, KVM  si rivela molto più rapido di Xen. In generale sia ARM che x86 sono alla pari in termini di overhead”.

 

Fonti