Eu tenho um host VMWare ESXi 5.1.0 (build 1065491) executando umSolaris (OpenIndiana)VM como convidado. Criei um vSwitch privado para tráfego NFS entre ESXi e Solaris. A VM Solaris possui as ferramentas VMware instaladas e possui um adaptador VMXnet3 ( vmxnet3s0
) no vSwitch privado.
Lendo de um arquivo diretamente na VM Solaris usando, dd
obtenho velocidades de até 4,5 GB/s (44,8 gigabit/s) ao ler um arquivo (se ele tiver sido armazenado em cache pelo meu ARC/L2ARC)
Lendo o mesmo arquivo via NFS do VMware, só consigo obter no máximo 0,163 GB/s (1,131 gigabit/s)
Por que existe essa diferença? Espero alguma sobrecarga devido ao TCP e NFS, bem como à rede virtual, mas essa diferença não é o que eu chamariaa sobrecarga, parece que algo está errado.
A CPU na VM Solaris nunca é usada em mais de 20%. As médias de carga são baixas. Muita RAM livre no host (não há troca) e a utilização da CPU no host está bem abaixo de 50% (normalmente em torno de 33%). Na VM convidada, dladm show-linkprop vmxnet3s0
mostra que a velocidade é 10.000 (10 Gbit/seg) e o MTU é 9.000 (Jumbo Frames habilitados)
Como teste tentei usar um E1000 vmnic "padrão" ( e1000g0
) e consegui habilitar jumbo frames (9000 MTU), porém lendo o mesmo arquivo via NFS do VMware, só consigo obter no máximo 0,124 GB/s (0,992 gigabit /s), o que faz sentido, já que a velocidade do link no E1000 é de apenas 1.000 megabits.
Por que estou vendo apenas velocidades de transferência de cerca de 1 gigabit/segundo entre o VMware ESXi 5.1 e minha VM OpenIndiana Solaris?
ATUALIZAR:Depois de aplicar o ajuste de desempenho recomendado por VFrontDe em sua resposta, agora estou obtendo impressionantes 8-9 Gbit/s entre Solaris e uma VM Linux com um vmxnet3
adaptador. Estou obtendo ~ 6 Gbps lendo um arquivo em cache via NFS no Linux:
root@iperf:/mnt/public/ISO# dd if=Test.cdr of=/dev/null bs=1024k
5884+1 records in
5884+1 records out
6170824704 bytes (6.2 GB) copied, 8.44985 s, 730 MB/s
No entanto, lendo o mesmo arquivo no host VMware ESXi, recebo péssimos 1,91 Gbps:
/vmfs/volumes/3d77318f-82c7901a/ISO # time dd if=Windows\ 7\ Home\ Premium.cdr of=/dev/null bs=1024k
5884+1 records in
5884+1 records out
real 0m 27.85s
user 0m 17.32s
sys 0m 0.00s
6,2 GB em 27,85 segundos equivalem a 1,91 gbps.
O que está fazendo com que o VMware ESXi vmknic
tenha um desempenho tão ruim quando vmxnet3
é vmxnet3
muito melhor?
Responder1
Parece que há alguns problemas e bugs com o adaptador vmxnet3 para Solaris. Por favor, dê uma olhada nesta postagem muito detalhada:http://blog.cyberexplorer.me/2013/03/improving-vm-to-vm-network-throughput.htmlO autor conseguiu obter um rendimento muito melhor após alguns ajustes, mas é demais repetir todas as etapas aqui.