Ho scoperto che non esiste una risposta semplice e assoluta a domande come la tua. Ogni soluzione di virtualizzazione si comporta in modo diverso su specifici test delle prestazioni. Inoltre, test come il throughput I / O del disco possono essere suddivisi in molti test diversi (lettura, scrittura, riscrittura, ...) e i risultati varieranno da una soluzione all'altra e da uno scenario all'altro. Questo è il motivo per cui non è banale indicare una soluzione come la più veloce per l'I / O su disco, ed è per questo che non esiste una risposta assoluta per etichette come overhead per l'I / O su disco.
Diventa più complesso quando si cerca di trovare una relazione tra diversi test di benchmark. Nessuna delle soluzioni che ho testato ha avuto buone prestazioni nei test di micro-operazioni. Ad esempio: all'interno della VM una singola chiamata a "gettimeofday ()" ha richiesto in media 11,5 volte più cicli di clock rispetto all'hardware. Gli hypervisor sono ottimizzati per le applicazioni del mondo reale e non funzionano bene con le micro-operazioni. Questo potrebbe non essere un problema per la tua applicazione che potrebbe adattarsi meglio come applicazione del mondo reale. Con micro-operazione intendo qualsiasi applicazione che impiega meno di 1.000 cicli di clock per terminare (per una CPU da 2,6 GHz, vengono spesi 1.000 cicli di clock in 385 nanosecondi o 3,85e-7 secondi).
Ho svolto test di benchmark approfonditi sulle quattro soluzioni principali per il consolidamento dei data center per l'archittettura x86. Ho eseguito quasi 3000 test confrontando le prestazioni all'interno delle macchine virtuali con le prestazioni hardware. Ho chiamato 'overhead' la differenza delle massime prestazioni misurate all'interno delle VM con le massime prestazioni misurate sull'hardware.
Le soluzioni:
- VMWare ESXi 5
- Microsoft Hyper-V Windows 2008 R2 SP1
- Citrix XenServer 6
- Red Hat Enterprise Virtualization 2.2
I SO guest:
- Microsoft Windows 2008 R2 64 bit
- Red Hat Enterprise Linux 6.1 64 bit
Informazioni sul test:
- Server: 2X Sun Fire X4150 ciascuno con 8 GB di RAM, 2 CPU Intel Xeon E5440 e quattro porte Gigabit Ethernet
- Dischi: dischi SAS 6X 136 GB su iSCSI su Ethernet gigabit
Software di riferimento:
CPU e memoria: benchmark Linpack per 32 e 64 bit. Questo richiede molta CPU e memoria.
I / O e latenza del disco: Bonnie ++
I / O di rete: Netperf: TCP_STREAM, TCP_RR, TCP_CRR, UDP_RR e UDP_STREAM
Micro-operazioni: rdtscbench : chiamate di sistema, comunicazione tra processi
Le medie sono calcolate con i parametri:
CPU e memoria: MEDIA (HPL32, HPL64)
I / O su disco: AVERAGE (put_block, rewrite, get_block)
I / O di rete: AVERAGE (tcp_crr, tcp_rr, tcp_stream, udp_rr, udp_stream)
Micro-operazioni AVERAGE (getpid (), sysconf (), gettimeofday (), malloc [1M], malloc [1G], 2pipes [], simplemath [])
Per il mio scenario di test, usando le mie metriche, le medie dei risultati delle quattro soluzioni di virtualizzazione sono:
Overhead del livello VM, guest Linux:
CPU e memoria: 14,36%
I / O di rete: 24,46%
I / O del disco: 8,84%
Latenza del disco per la lettura: 2,41 volte più lenta
Tempo di esecuzione di micro-operazioni: 10,84 volte più lento
Sovraccarico layer VM, guest Windows:
Si noti che tali valori sono generici e non riflettono lo scenario di casi specifici.
Leggi l'articolo completo: http://petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions