我们在Ubuntu Servers 12.04.4 / Libvirt 0.9.8-2ubuntu17.17上运行了许多Debian Wheezy虚拟机
主机通过中继连接到networking。 然后分割VLAN,并用下面的conf创build一个桥梁:
auto eth4.2 kvmbrtrunk.2 iface eth4.2 inet manual up ifconfig eth4.2 up down ifconfig eth4.2 down iface kvmbrtrunk.2 inet manual bridge-ports eth4.2 bridge-stp no bridge-fd 0 bridge-maxwait 0
虚拟机configuration如下:
<interface type='bridge'> <mac address='54:52:00:02:10:70'/> <source bridge='kvmbrtrunk.2'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </interface>
而且他们使用VirtIO
00:09.0 Ethernet controller: Red Hat, Inc Virtio network device
主angular(全部在同一个VLAN上):
A: 1st Ubuntu 12.04 desktop B: 2nd Ubuntu 12.04 desktop C: 1st VM, 1st host D: 2nd VM, 1st host E: 3rd VM, 2nd host
当我们做一个60平方米的系列“rtt min / avg / max / mdev”时:
A -> B = 0.093/0.132/0.158/0.015 ms A -> C = 0.272/0.434/1.074/0.113 ms A -> D = 0.294/0.460/0.832/0.091 ms A -> E = 0.324/0.505/0.831/0.069 ms C -> D = 0.348/0.607/0.863/0.124 ms C -> E = 0.541/0.792/0.972/0.101 ms
因此,这些结果似乎表明,libvirt的虚拟交换机/过滤不仅增加了一些延迟,正如人们所预料的那样,而是三倍(0.132 vs 0.460)
题
Is there anything that can be done to attenuate this extra latency?
提前感谢您的任何提示。
你愿意牺牲什么样的function来减less延迟?
首先,尝试禁用桥接口上的iptables / ebtables。 您可以将/proc/sys/net/bridge/bridge-nf-call-iptables更改为0来完成此操作。 这里的缺点是你不能再对访客stream量进行任何forms的过滤。
这里的'better'选项是使用SR-IOV切换到虚拟网卡。 这要求您的主板和networking控制器支持它。 你每个网卡也只限于7个用户(千兆以太网,我相信10Gig是更高的)。 这通过给每个访客直接访问networking硬件来工作。 主机操作系统不参与数据包stream,虚拟机只是直接与网卡通信。
SR-IOV将为您提供最佳的性能(在我们的testing中,CPU使用率大约低10%,对于高水平的networkingstream量)和最低的延迟(因为软件层与软件包交互的层数less得多)。 我相信你可以用这个来configurationvlan标记,但是这个设置可能会有点困难(SR-IOV基本上是没有logging的魔法,而且你会做很多设置的摆弄)。