Ping-Latenz mit vhost_net, macvtap und virtio

Ping-Latenz mit vhost_net, macvtap und virtio

Ich habe den Netzwerkdurchsatz und die Latenz getestet und frage mich, ob meine Messungen meinen Erwartungen entsprechen. Für den Test habe ich Fedora 17 sowohl für Host als auch für Gast mit Kernel 3.5.2-3.fc17.86_64 verwendet.

Wenn vom Host aus über eine Gigabit-Schnittstelle ein Ping an einen externen Server im LAN gesendet wird, sind die Ergebnisse:

# 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

Wenn ich vom Gast aus denselben externen Host im LAN anpinge, scheint die Latenz viel höher zu sein:

# 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

(Das LAN, der Host und der Gast sind während der Tests ansonsten inaktiv.)

Die Module vhost_net und macvtap werden auf den Host geladen und qemu wurde (von libvirtd) mit der Option -netdev vhost=on gestartet.

Ist das zu erwarten und normal, oder sehen andere bessere Latenzen? Kann ich etwas versuchen, um es besser zu machen? Welche Latenzen sehen andere?

Antwort1

geladene Module bedeuten nicht, dass die VM gut konfiguriert ist. Wie genau ist die VM, mit der Sie testen, eingerichtet?

Mit RHEL 5, Bridging und virtio_net erreiche ich eine Latenz von ca. 0,1 ms zwischen physischen Hosts und eine Latenz von ca. 0,18 ms beim Pingen innerhalb einer VM. Einfache Bridge, keine Optimierungen oder Änderungen und ein ziemlich alter RHEL 5-Stack.

verwandte Informationen