Windows Server 2008 網速慢,Xen 3.4.3 HVM ISO
我在執行 Xen 3.4.3-5 和以下核心的主機節點上設置了一個執行 Windows Server 2008 的 VM:2.6.18-308.1.1.el5xen #1 SMP Wed Mar 7 05:38:01 EST 2012 i686 i686 i386 GNU/Linux
VM 上的網路速度非常慢——使用線上速度測試我只能達到 8-9mbps。該線路是 100mbps 可突發的,並且主機節點可以毫無問題地達到這些速度。如果我設置一個執行 CentOS(而不是 Windows Server 2008)的虛擬機,該 CentOS 虛擬機在實現這些速度方面沒有問題——只有 Win2K8 比較困難。
我做了一些非常詳盡的故障排除,但沒有任何幫助:
- Win2k8 的新VM 安裝確實有同樣的網路問題。
- 升級到最新的 kernel-xen 並沒有幫助(2.6.18-308.1.1.el5xen)。
- 從 xen 3.4.0 升級到 xen 3.4.3-5 沒有幫助。
- 禁用 Windows 防火牆等沒有幫助。
- 將網卡設備配置從自動協商更改為手動 100mbps 全雙工並沒有幫助。
- 更改網路接收緩衝區數據包大小沒有幫助(嘗試了從 64k 到 8k 的所有組合)。
在這一點上,我幾乎沒有想法 - 任何幫助將不勝感激!
編輯:我最終解決了這個問題。請參閱下面我接受的答案。
我通過在 Windows 中為 NIC 和其他組件安裝 Xen 半虛擬化驅動程序解決了這個問題。Windows 客戶機上的預設驅動程序與 Xen 主機節點進行了可怕的互動。我注意到在 VM 上的 Internet Explorer 中下載文件會使主機節點上的 CPU 飆升至 75-90%。為 Windows Server 2008 32 位安裝 James Harper 的 GPLPV 驅動程序解決了該問題。
如果有人有類似的問題,只需下載並安裝適當的 GPLPV 驅動程序集即可: http ://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers
但是,對於我的特定伺服器,僅安裝 GPLPV 驅動程序是不夠的。GPLPV 驅動程序將下載速度恢復到正常水平(~66mbps),但上傳速度約為 2mbps。然後我重新嘗試了@WesleyDavid 提供的技巧,以禁用 NIC 配置中的所有形式的解除安裝(通過設備管理器),並將上傳速度提高到 36mbps。我已經在其他系統上安裝了 GPLPV 驅動程序,並且不需要修改 NIC 配置。
更新:
自從我一年前發布這個問題以來,我已經在各種不同的 Xen 機器上安裝了 Windows。每次我安裝 James Harper 的 GPLPV 驅動程序時,網路性能和一般系統性能都會顯著提高。如果不使用 Harper 的 GPLPV 驅動程序,我永遠無法達到完整的下載/上傳速度。
任何在 RHEL/CentOS 主機上使用 Xen 虛擬化 Windows 的人都應該嘗試http://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers提供的驅動程序
問題可能出在 Windows 客戶機及其與虛擬 NIC 的通信方式上。以下是一些可以嘗試的事情:
**在 Windows 來賓中禁用 TCP 煙囪解除安裝。**要確定它是否已啟用,請執行
netsh int tcp show global
。要禁用它執行netsh int tcp set global chimney=disabled
**在 Windows 客戶機的 NIC 上禁用 TCP 解除安裝。**在來賓 Windows 安裝中,轉到設備管理器,打開有問題的 NIC,轉到高級選項卡並蒐索與 TCP/UDP、校驗和、largesend 和/或 TCP/IP 解除安裝有關的任何選項。禁用它們。如果它說“解除安裝”禁用它。
**在 Windows 客戶機中禁用接收端縮放。**檢查它是否已啟用
netsh int tcp show global
。用 禁用它netsh int tcp set global rss=disabled
。**在 Windows 來賓中禁用 NetDMA。**檢查它是否已啟用
netsh int tcp show global
。要手動啟用/禁用它,需要添加系統資料庫項。檢查它是否已經存在get-itemproperty -path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -name EnableTCPA
。如果它不存在並且啟用了 NetDMA,請使用 PowerShell 創建以下系統資料庫項:New-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableTCPA New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "EnableTCPA" -Value 0 -PropertyType "DWord"
**在 Windows 來賓中禁用 Windows 網路任務解除安裝。**使用 PowerShell 檢查系統資料庫項是否存在:
get-itemproperty -path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -name DisableTaskOffload
. 如果沒有,請使用 PowerShell 添加此系統資料庫項:New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "DisableTaskOffload" -Value 1 -PropertyType "DWord"
**在 Windows 客戶機中禁用自動調整。**首先檢查它是否已啟用:
Netsh interface tcp show global
. 如果是,請使用以下命令禁用它:Netsh interface tcp set global autotuning=disabled
**如果啟用,請在 Windows 客戶機中禁用遠端差異壓縮。**轉到執行命令並執行 appwiz.cpl,選擇“打開或關閉 Windows 功能”並取消選擇遠端差分壓縮。
**檢查防病毒是否設置為掃描實時流量。**可以將防病毒工具設置為掃描來自主機的所有流量以查找任何惡意內容。如果您的 Windows 客戶機出現這種情況,請暫時禁用它以進行測試。
編輯 1
一些最後的努力包括:
- 我的一個猜測是埠速度不匹配 - 但你解決了這個問題。除非您在這方面有更多選擇。
- 我通常建議更新網路驅動程序,但這在 VM 中不太必要,因為虛擬 NIC 相當普通。
- 將最新的來賓工具安裝到 Windows 來賓中。
- 我在 Windows 客戶端上看到了一些 IPv6 問題導致神秘的 TCP/IP 減速。不知道為什麼;我沒有深入研究它。我想您可以從 NIC 中解除安裝/刪除 v6。
- 檢查 Windows 客戶機中的 TCP/IP 統計資訊,看看是否有很多錯誤或其他有趣的數字。
netstat -es
會成功的。- 最後但同樣重要的是,安裝網路監視器並檢查流量是否有任何異常。CRC 錯誤、重新連接、丟包……誰知道呢。任何看起來難看的東西。