我有一台 VMWare ESXi 5.1.0(內部版本 1065491)主機,運行Solaris(印第安納公開賽)VM 作為訪客。我為 ESXi 和 Solaris 之間的 NFS 流量創建了一個專用 vSwitch。 Solaris VM 安裝了 VMware 工具,並且vmxnet3s0
在專用 vSwitch 上有一個 VMXnet3 適配器 ( )。
使用 直接在 Solaris VM 上讀取檔案時,dd
讀取檔案時的速度高達 4.5 GB/秒(44.8 GB/秒)(如果該檔案已由 ARC/L2ARC 快取)
從 VMware 透過 NFS 讀取相同文件,我只能獲得最大 0.163 GB/秒(1.131 GB/秒)
為什麼會有這樣的差異呢?我預計 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),但是通過 NFS 從 VMware 讀取同一文件,我只能獲得最大 0.124 GB/秒(0.992 GB)/秒)這是有道理的,因為E1000 上的鏈路速度僅為1000 兆位元。
為什麼我在 VMware ESXi 5.1 和 OpenIndiana Solaris VM 之間只能看到約 1 GB/秒的傳輸速度?
更新:在應用 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經過一些調整,作者能夠獲得更好的吞吐量,但是在這裡重複所有步驟有點太多了。