virtio /proc/net/dev

virtio /proc/net/dev

我们在大学里做一些 VM(citrix-xen)/真实机器基准测试,遇到了一个奇怪的行为。我们使用 netperf 的流测试来测量两台机器之间的性能。两者的结果都是相同的 940 mbit,但输出/proc/net/dev不同:

117 MB/sec vs. 112 MB/sec.

nload我尝试在家中使用 VirtualBox 重现这种情况。我测量了虚拟机上显示的流量在虚拟机主机上。

使用模拟的1000mbit设备时:

vm says: 107 MB/sec
vm host says: 107 MB/sec

两个值匹配. 到目前为止一切顺利。但是当使用 virtio-net 设备时:

vm says: 102 MB/sec
vm host says: 107 MB/sec

价值不匹配。所以罪魁祸首似乎是半虚拟化网络设备。有人知道这个问题吗?我猜,通常列出的“字节”是/proc/dev/net针对以太网帧的,当使用半虚拟化设备时,它只列出数据包的字节(没有报头),因为 VM 主机会处理整个数据包?

谢谢任何建议:)

编辑1:

我刚刚使用 wireshark 进行了一些测试。Wireshark 说:线路上有 1514 个字节,一个数据包包含 1448 个字节的数据。要从 1448 得到这个数字,需要乘以 1,0456(大约)。当从上面乘以 102 MB 时,我们得到 106,7 MB => ~107 MB

=> 似乎可以证明半虚拟化网络跳过了/proc/net/dev

编辑2:

我是不是询问半虚拟化网络是否比模拟网络更快。我已经知道这是肯定的。从我提到的值可以看出,流量两个都情况下为 107 MB/秒(当然 CPU 使用率不同)。

/proc/net/dev列表VM 内的不同值。在主机内,两个值是相同的!所以我想问的是,/proc/net/dev/在使用半虚拟化网络驱动程序时是否会列出不同的值(例如没有数据包头)。

答案1

是的。虚拟网络设备可以以比 NIC 宣传的速度更快的速度发送数据。

您还可以通过本地主机对此进行基准测试来查看这一点。

有关虚拟网络基准测试和故障排除的一些重要参考:

http://wiki.xen.org/xenwiki/Network_Throughput_Guide

http://openvswitch.org/papers/hotnets2009.pdf

相关内容