Descobri que não há uma resposta simples e absoluta para perguntas como a sua. Cada solução de virtualização se comporta de maneira diferente em testes de desempenho específicos. Além disso, testes como a taxa de transferência de E / S do disco podem ser divididos em muitos testes diferentes (leitura, gravação, reescrita, ...) e os resultados variam de solução para solução e de cenário para cenário. É por isso que não é trivial apontar uma solução como a mais rápida para E / S de disco, e é por isso que não há resposta absoluta para rótulos como sobrecarga para E / S de disco.
Torna-se mais complexo ao tentar encontrar relação entre diferentes testes de benchmark. Nenhuma das soluções que testei teve bom desempenho em testes de microoperação. Por exemplo: dentro da VM, uma única chamada para "gettimeofday ()" levou, em média, 11,5 vezes mais ciclos de clock para concluir do que no hardware. Os hipervisores são otimizados para aplicações do mundo real e não apresentam bom desempenho em micro-operações. Isso pode não ser um problema para o seu aplicativo que possa se encaixar melhor como no mundo real. Por microoperação, qualquer aplicativo que gaste menos de 1.000 ciclos de clock para concluir (para uma CPU de 2,6 GHz, 1.000 ciclos de clock são gastos em 385 nanossegundos ou 3,85e-7 segundos).
Fiz testes extensivos de benchmark nas quatro soluções principais para consolidação de data center para arquitetura x86. Fiz quase 3000 testes comparando o desempenho nas VMs com o desempenho do hardware. Chamei de 'sobrecarga' a diferença de desempenho máximo medido dentro de VM (s) e desempenho máximo medido em hardware.
As soluções:
- VMWare ESXi 5
- Microsoft Hyper-V Windows 2008 R2 SP1
- Citrix XenServer 6
- Virtualização da Red Hat Enterprise 2.2
Os SOs convidados:
- Microsoft Windows 2008 R2 de 64 bits
- Red Hat Enterprise Linux 6.1 64 bits
Informações do teste:
- Servidores: 2X Sun Fire X4150, cada um com 8GB de RAM, 2X CPU Intel Xeon E5440 e quatro portas Ethernet de gigabit
- Discos: discos SAS de 6X 136 GB sobre iSCSI sobre Ethernet de gigabit
Software de referência:
CPU e memória: benchmark Linpack para 32 e 64 bits. Isso consome muita CPU e memória.
E / S e latência de disco: Bonnie ++
E / S de rede: Netperf: TCP_STREAM, TCP_RR, TCP_CRR, UDP_RR e UDP_STREAM
Microoperações : rdtscbench : chamadas do sistema, comunicação entre tubulações entre processos
As médias são calculadas com os parâmetros:
CPU e memória: MÉDIA (HPL32, HPL64)
E / S de disco: MÉDIA (put_block, reescrever, get_block)
E / S de rede: MÉDIA (tcp_crr, tcp_rr, tcp_stream, udp_rr, udp_stream)
Microoperações MÉDIA (getpid (), sysconf (), gettimeofday (), malloc [1M], malloc [1G], 2pipes [], simplemath [])
Para o meu cenário de teste, usando minhas métricas, as médias dos resultados das quatro soluções de virtualização são:
Sobrecarga da camada da VM, convidado do Linux:
CPU e memória: 14,36%
E / S de rede: 24,46%
E / S de disco: 8,84%
Latência do disco para leitura: 2,41 vezes mais lenta
Tempo de execução de micro-operações: 10,84 vezes mais lento
Sobrecarga da camada da VM, convidado do Windows:
Observe que esses valores são genéricos e não refletem o cenário de casos específicos.
Consulte o artigo completo: http://petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions