我有一台作为guest虚拟机运行Solaris(OpenIndiana)虚拟机的VMWare ESXi 5.1.0(版本1065491)主机。 我已经为ESXi和Solaris之间的NFS通信创build了专用vSwitch。 Solaris VM安装了VMware工具,并在专用vSwitch上安装了VMXnet3适配器( vmxnet3s0 )。
使用dd从Solaris VM上直接读取文件读取文件时(如果已经被ARC / L2ARCcaching),速度最高可达4.5 GB /秒(44.8千兆/秒)
从VMware读取相同的文件,我只能得到0.163 GB /秒(1.131千兆位/秒)
为什么有这样的区别? 我期望由于TCP和NFS以及虚拟networking而导致一些开销,但是这种差别不是我打开的开销 ,它看起来有点不对劲。
Solaris VM上的CPU永远不会超过20%。 负荷平均值较低。 主机上有足够的可用RAM(不交换),主机上的CPU利用率远低于50%(通常约为33%)。 在guest虚拟机上, dladm show-linkprop vmxnet3s0显示速度为10000(10 Gbit / sec),MTU为9000(启用巨帧)
作为一个testing,我尝试使用“标准”E1000 vmnic( e1000g0 ),但是我能够启用巨型帧(9000 MTU),但是通过NFS从VMware读取相同的文件,我最多只能获得0.124 GB /秒(0.992千兆/秒),因为E1000的链路速度只有1000兆。
为什么我只能在VMware ESXi 5.1和OpenIndiana Solaris VM之间看到大约1千兆/秒的传输速度?
更新:在应用VFrontDe推荐的性能调整后,我在Solaris和具有vmxnet3适配器的Linux VM之间获得了令人印象深刻的8-9 Gbit / sec。 在Linux下,我正在通过NFS读取一个caching文件〜6 Gbps:
root@iperf:/mnt/public/ISO# dd if=Test.cdr of=/dev/null bs=1024k 5884+1 records in 5884+1 records out 6170824704 bytes (6.2 GB) copied, 8.44985 s, 730 MB/s
但是,在VMware ESXi主机上读取相同的文件,我得到了一个糟糕的1.91 Gbps:
/vmfs/volumes/3d77318f-82c7901a/ISO # time dd if=Windows\ 7\ Home\ Premium.cdr of=/dev/null bs=1024k 5884+1 records in 5884+1 records out real 0m 27.85s user 0m 17.32s sys 0m 0.00s
27.85秒内6.2 GB的速度为1.91 gbps 。
什么导致Vmware ESXi的vmknic执行如此糟糕,当vmxnet3到vmxnet3更好?
看起来像Solaris的vmxnet3适配器有一些问题和错误。 请看这个非常详细的post: http : //blog.cyberexplorer.me/2013/03/improving-vm-to-vm-network-throughput.html作者经过一些调整后能够获得更好的吞吐量,但在这里重复所有步骤太多了。