為什麼 Linux 客戶虛擬機在網路方面的性能優於 Windows 虛擬機?
我正在使用 Iperf 和 Netperf 在 Xen 和 Hyper-V 中測試 VM 的網路性能。在這兩個虛擬機管理程序中,我發現不同模式下的 Linux 客戶虛擬機具有比 Windows 更高的性能。即使是完全虛擬化的 Linux 客戶虛擬機也表現出比帶有 PV 驅動程序的 Windows 客戶虛擬機更好的性能。
因此,對於每個虛擬機,我使用環回地址在同一虛擬機上創建客戶端-伺服器模型。我在所有虛擬機上建立了相同的測試,我沒有指定任何緩衝區大小或視窗大小,我把它留給工具來決定。
例如,使用以下命令測試 TCP 連接:
iperf -c 127.0.0.1
或者
網路性能-H 127.0.0.1
我在 32 位環境中的 Hyper-V 上得到了 Iperf 的以下結果:
Linux (Enlightened): 18 Gbits/s Linux (Unenlightened): 10.5 Gbits/s Windows (Enlightened): 3 Gbits/s Windows (FV+IS): 0.5 Gbits/s Windows (Unenlightened): 0.4 Gbits/s
管理程序和工具都表現出相同的性能,在 64 位環境中也是如此。
那麼這有什麼解釋嗎?!
注意:FV+IS >> 安裝了集成服務的未開發客戶 VM。
提前致謝,
馬哈茂德
您的基準測試並未測試任一作業系統的網路性能。
Linux 將環回設備實現為純軟體層,與實際的網路設備沒有連接。在 Windows 上,甚至沒有連結到 127.0.0.1 地址的環回設備。
您所有的測試都可以測量 CPU 調度和記憶體頻寬的性能。Linux 和 Windows 有非常不同的網路堆棧,我不確定是否有人注意對環回設備驅動程序(或 Windows 核心中的任何等效項)進行任何性能優化。
您使用的任何特定應用程序通過本地 TCP/IP 連接傳輸大量數據嗎?如果是這樣,那是在本地傳輸數據的效率最低的方法之一。
關於實際網路性能,請注意 Windows 和 Linux 具有不同的網路堆棧和不同的預設設置。您應該調查您的應用程序將在緩衝區、TCP 視窗等方面使用什麼,並相應地調整 iperf/netperf 以模仿該行為。然後在同一主機上的不同虛擬機之間、不同主機上的虛擬機之間、虛擬機和物理伺服器之間傳輸數據。注意網路埠的設置、上行鏈路飽和度等。
同樣,您的測試只是對純粹在軟體中執行的非優化算法和資料結構進行基準測試。
**編輯:**您可能想了解更多關於Windows Server 2012 和 Windows 8 中環回網路的改進。