使用 vhost_net、macvtap 和 virtio 的 ping 延遲

使用 vhost_net、macvtap 和 virtio 的 ping 延遲

我一直在測試網路吞吐量和延遲,我想知道我的測量結果是否符合預期。在測試中,我在主機和來賓上均使用 Fedora 17,使用核心 3.5.2-3.fc17.86_64。

從主機使用千兆介面 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

從訪客 ping LAN 上的相同外部主機,延遲似乎要高得多:

# 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 模組載入到主機上,並使用 -netdev vhost=on 選項啟動 qemu(由 libvirtd)。

這是預期的且正常的,還是其他人看到更好的延遲?我可以嘗試做一些事情來讓它變得更好嗎?其他人看到什麼延遲?

答案1

載入的模組並不意味著虛擬機器配置良好。您正在測試的虛擬機器到底是如何設定的?

使用 RHEL 5、橋接器和 virtio_net,實體主機之間的延遲約為 0.1 毫秒,從虛擬機器內部執行 ping 操作時的延遲約為 0.18 毫秒。簡單的橋樑,沒有優化或更改,以及相當舊的 RHEL 5 堆疊。

相關內容