为什么 Solaris 和 VMware 之间的传输速度只有 1gbps?

为什么 Solaris 和 VMware 之间的传输速度只有 1gbps?

我有一台 VMWare ESXi 5.1.0(内部版本 1065491)主机,运行索拉里斯 (印第安纳公开赛)VM 作为客户机。我已为 ESXi 和 Solaris 之间的 NFS 通信创建了一个私有 vSwitch。Solaris VM 已安装 VMware 工具,并vmxnet3s0在私有 vSwitch 上有一个 VMXnet3 适配器 ( )。

使用 Solaris VM 直接读取文件时,dd读取文件的速度高达 4.5 GB/秒(44.8 千兆位/秒)(如果它已被我的 ARC/L2ARC 缓存)

通过 VMware NFS 读取同一个文件,我最多只能获得 0.163 GB/秒(1.131 千兆位/秒)

为什么会有这样的差异?我预计 TCP 和 NFS 以及虚拟网络会产生一些开销,但这种差异并不是我所说的高架,看上去有些不对劲。

Solaris VM 上的 CPU 使用率从未超过 20%。平均负载较低。主机上有大量可用 RAM(未交换),主机上的 CPU 利用率远低于 50%(通常约为 33%)。在客户 VM 上,dladm show-linkprop vmxnet3s0显示速度为 10000(10 Gbit/秒),MTU 为 9000(启用巨型帧)

作为测试,我尝试使用“标准” E1000 vmnic(e1000g0),并且能够启用巨型帧(9000 MTU),但是从 VMware 通过 NFS 读取同一个文件时,我只能获得最大 0.124 GB/秒(0.992 千兆位/秒),这是有道理的,因为 E1000 上的链接速度只有 1000 兆位。

为什么我只看到 VMware ESXi 5.1 和我的 OpenIndiana Solaris VM 之间的传输速度仅为约 1 千兆/秒?


更新:在应用 VFrontDe 在其回答中推荐的性能调整后,我现在在 Solaris 和带有适配器的 Linux VM 之间获得了令人印象深刻的 8-9 Gbit/秒vmxnet3。我在 Linux 下通过 NFS 读取缓存文件的速度约为 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性能却好得多?

答案1

看起来 Solaris 的 vmxnet3 适配器存在一些问题和错误。请查看这篇非常详细的帖子:http://blog.cyberexplorer.me/2013/03/improving-vm-to-vm-network-throughput.html经过一些调整后,作者能够获得更好的吞吐量,但在这里重复所有步骤太多了。

相关内容