vhost_net、macvtap、virtio を使用した ping 遅延

vhost_net、macvtap、virtio を使用した ping 遅延

ネットワーク スループットとレイテンシをテストしていますが、測定値が期待どおりかどうか気になっています。テストでは、ホストとゲストの両方にカーネル 3.5.2-3.fc17.86_64 を使用した Fedora 17 を使用しました。

ギガビット インターフェイスを使用してホストから LAN 上の外部サーバーに ping を実行すると、結果は次のようになります。

# 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

ゲストから LAN 上の同じ外部ホストに ping を実行すると、遅延がはるかに大きくなるようです。

# 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

(テスト中、LAN、ホスト、ゲストはアイドル状態になります。)

vhost_net および macvtap モジュールがホストにロードされ、qemu が -netdev vhost=on オプションで (libvirtd によって) 起動されました。

これは予想どおりで正常なのでしょうか、それとも他の人はもっと良い遅延を目にしているのでしょうか? 改善するために何か試すことはできますか? 他の人はどのような遅延を目にしているのでしょうか?

答え1

ロードされたモジュールは、VM が適切に構成されていることを意味するわけではありません。テストしている VM は正確にはどのようにセットアップされていますか?

RHEL 5、ブリッジング、virtio_net を使用すると、物理ホスト間のレイテンシは約 0.1 ミリ秒、VM 内から ping を実行するとレイテンシは約 0.18 ミリ秒になります。シンプルなブリッジで、最適化や変更はなく、かなり古い RHEL 5 スタックです。

関連情報