virtio / proc / net / dev

我们在大学里做了一些虚拟机(citrix-xen)/真机testing,并且碰到了一个奇怪的行为。 我们使用netperf的streamtesting来衡量两台机器之间的性能。 两者都导致相同的值为940 mbit,但是/proc/net/dev的输出是不同的:

 117 MB/sec vs. 112 MB/sec. 

我试图用VirtualBox在家里重现这种情况。 我用虚拟机虚拟机主机上的nload了显示的stream量。

当使用仿真的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 

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

thx任何build议:)

EDIT1:

我只是用wireshark进行一些testing。 Wireshark说:1514字节在线,一个数据包包含1448字节的数据。 从1448开始,需要乘以1,0456(大约)。 当从上面乘以102 MB时,我们得到106.7 MB =>〜107 MB

似乎certificate半虚拟化networking在/proc/net/dev跳过了头字节

EDIT2:

问半虚拟化networking是否比模拟networking快。 我已经知道这是一个给定的。 从我提到的值中可以看出, 两种情况下的stream量均为 107 MB /秒(当然,CPU使用率不同)。

但是/proc/net/dev 在VM中列出了不同的值 。 在主机内,两个值都是一样的! 所以我问在/proc/net/dev/列出不同的值(例如没有数据包标题)使用半虚拟化networking驱动程序时。

是。 虚拟networking设备可以通过NIC发送比通告的速度更快的数据。

您也可以通过本地主机进行基准testing来了解这一点。

关于虚拟networking基准testing和故障诊断的一些很好的参考

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

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