Testare una virtual machine
Provare le prestazioni di una macchina virtuale non è una cosa da nulla, ma bisogna fare attenzione ad alcuni aspetti che possono portare a dei comportamenti apparentemente anomali ma che si possono spiegare osservando le specifiche di costruzione dell’hypervisor e delle varie strategie adottate per migliorare le performance degli ambienti virtuali.
Qui sotto è riportato un semplice esempio che mostra come si possono rilevare degli strani valori da una misurazione fatta senza la dovuta conoscenza dei meccanismi di funzione del software di virtualizzazione.
Hdparm è uno strumento per Linux in grado di testare la velocità della lettura sequenziale di un disco o della sua cache, indipendentemente dal tipo di filesystem. E’ estremamente interessante confrontare quanto è il degrado delle prestazioni di un disco virtuale rispetto ad un disco fisico. Le prestazioni, all’interno delle macchine virtuali, sono influenzate dai vari approcci scelti per la virtualizzazione dell’I/O e della gestione dell’immagine disco.[ad#midarticlequadr]
E’ stato eseguito hdparm su una macchina virtuale HVM (cioè quella modalità che fa uso delle estensioni di virtualizzazione in dotazione ai più recenti processori) e sul host in modo nativo (ovvero non in una macchina virtuale).
I picchi sono causati ad un meccanismo di caching che restituisce dei risultati con molta varianza (306,81), la media fra tutti i valori si attesta poco di più di 28 MB/sec mentre per il sistema operativo nativo attorno ai 43 MB/sec, registrando una varianza bassa (0,09). La caching determina dei risultati anomali nell’uso di hdparm in domU paravirtualizzati, per cui non è stato possibile ottenere valori confrontabili.
Il minor throughput è dovuto al fatto che HVM utilizza l’emulazione per alcuni dispositivi, il cui codice è fornito dal progetto QEMU.
L’hardware è emulato mediante l’uso di una versione modificata ad-hoc del demone “device manager” (qemu-dm) di QEMU che funziona come backend nel dom0. Per aumentare le prestazioni è disponibile un driver per Windows, per Linux purtroppo non si può utilizzare una versione sufficientemente stabile.