latência de ping usando vhost_net, macvtap e virtio

latência de ping usando vhost_net, macvtap e virtio

Tenho testado o rendimento e a latência da rede e queria saber se minhas medições estão conforme o esperado. Para o teste, usei o Fedora 17 tanto para host quanto para convidado, usando kernel 3.5.2-3.fc17.86_64.

Executando ping em um servidor externo na LAN a partir do host, usando uma interface gigabit, os resultados são:

# ping -c 10 172.16.1.1
PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_req=1 ttl=64 time=0.109 ms
64 bytes from 172.16.1.1: icmp_req=2 ttl=64 time=0.131 ms
64 bytes from 172.16.1.1: icmp_req=3 ttl=64 time=0.145 ms
64 bytes from 172.16.1.1: icmp_req=4 ttl=64 time=0.116 ms
64 bytes from 172.16.1.1: icmp_req=5 ttl=64 time=0.110 ms
64 bytes from 172.16.1.1: icmp_req=6 ttl=64 time=0.114 ms
64 bytes from 172.16.1.1: icmp_req=7 ttl=64 time=0.112 ms
64 bytes from 172.16.1.1: icmp_req=8 ttl=64 time=0.117 ms
64 bytes from 172.16.1.1: icmp_req=9 ttl=64 time=0.119 ms
64 bytes from 172.16.1.1: icmp_req=10 ttl=64 time=0.128 ms

--- 172.16.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.109/0.120/0.145/0.011 ms

Fazendo ping no mesmo host externo na LAN do convidado, a latência parece ser muito maior:

# ping -c 10 172.16.1.1
PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_req=1 ttl=64 time=0.206 ms
64 bytes from 172.16.1.1: icmp_req=2 ttl=64 time=0.352 ms
64 bytes from 172.16.1.1: icmp_req=3 ttl=64 time=0.518 ms
64 bytes from 172.16.1.1: icmp_req=4 ttl=64 time=0.351 ms
64 bytes from 172.16.1.1: icmp_req=5 ttl=64 time=0.543 ms
64 bytes from 172.16.1.1: icmp_req=6 ttl=64 time=0.387 ms
64 bytes from 172.16.1.1: icmp_req=7 ttl=64 time=0.348 ms
64 bytes from 172.16.1.1: icmp_req=8 ttl=64 time=0.364 ms
64 bytes from 172.16.1.1: icmp_req=9 ttl=64 time=0.345 ms
64 bytes from 172.16.1.1: icmp_req=10 ttl=64 time=0.334 ms

--- 172.16.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.206/0.374/0.543/0.093 ms

(A LAN, o host e o convidado ficam ociosos durante os testes.)

Os módulos vhost_net e macvtap são carregados no host e o qemu foi iniciado (por libvirtd) com a opção -netdev vhost=on.

Isso é esperado e normal ou outras pessoas veem latências melhores? Posso tentar alguma coisa para melhorar? Que latências os outros veem?

Responder1

módulos carregados não significam uma VM bem configurada. Como exatamente a VM que você está testando está configurada?

Usando RHEL 5, bridging e virtio_net, obtenho latência de aproximadamente 0,1 ms entre hosts físicos e latência de aproximadamente 0,18 ms ao executar ping de dentro de uma VM. Ponte simples, sem otimizações ou alterações e uma pilha RHEL 5 bastante antiga.

informação relacionada