Linux 虛擬機器考慮

相較于 hyper-v 中 Windows 的虛擬機器,Linux 和 BSD 虛擬機器有其他考慮。

第一個考慮是 Integration Services 是否存在,或 VM 是否只在沒有啟蒙的模擬硬體上執行。 具有內建或可下載 Integration Services 的 Linux 和 BSD 版本資料表可在Windows 的 Hyper-v 支援的 Linux 和 FreeBSD 虛擬機器中取得。 這些頁面有適用于 Linux 發行版本的可用 Hyper-v 功能,以及這些功能適用的注意事項。

即使來賓正在執行 Integration Services,也可以使用舊版硬體進行設定,而不會呈現最佳效能。 例如,針對來賓設定和使用虛擬乙太網路介面卡,而不是使用傳統網路介面卡。 使用 Windows Server 2016,您也可以使用 sr-iov 等 advanced 網路功能。

Linux 網路效能

Linux 預設會啟用硬體加速和卸載。 如果在主機上的 NIC 的屬性中啟用了 vRSS,而 Linux 來賓具有使用 vRSS 的功能,則會啟用此功能。 在 Powershell 中,您可以使用命令來變更相同的參數 EnableNetAdapterRSS

同樣地,VMMQ (虛擬交換器 RSS) 功能可在 guest屬性所使用的實體 NIC 上啟用 [ 設定 ... ] 可以使用下列命令,在 Powershell 中將 [Advanced] 索引標籤設定虛擬交換器 RSS啟用或啟用 VMMQ:

 Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True

在來賓中,可以藉由增加限制來執行額外的 TCP 調整。 由於虛擬化工作負載的延遲高於「裸機」,因此可讓您在多個 Cpu 上進行最佳的效能分配工作負載,並讓深度工作負載產生最佳的輸送量。

一些在網路效能評定中有用的微調參數範例包括:

net.core.netdev_max_backlog = 30000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 12582912 33554432
net.ipv4.tcp_rmem = 4096 12582912 33554432
net.ipv4.tcp_max_syn_backlog = 80960
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_abort_on_overflow = 1

適用于網路 microbenchmarks 的公用程式是 ntttcp,可在 Linux 和 Windows 上取得。 Linux 版本是開放原始碼,可從 ntttcp-linux on github.com 取得。 您可以在下載中心找到 Windows 版本。 微調工作負載時,最好盡可能使用最多的資料流程來取得最佳的輸送量。 使用 ntttcp 來建立流量模型, -P 參數會設定所使用的平行連接數目。

Linux 儲存體效能

以下是一些最佳作法,如下列範例所示,是在 hyper-v 上執行 Linux 的最佳作法。 Linux 核心具有不同的 i/o 排程器,可使用不同的演算法來重新排序要求。 NOOP 是先進先出的佇列,可將排程決策傳遞給程式管理人員進行。 建議您在 Hyper-v 上執行 Linux 虛擬機器時,使用 NOOP 作為排程器。 若要變更特定裝置的排程器,請在開機載入器的設定 (/etc/grub.conf (例如) )中新增 elevator=noop 至核心參數,然後重新開機。

與網路功能類似,使用儲存體的 Linux 來賓效能可充分利用有足夠深度的多個佇列,讓主機保持忙碌。 使用 libaio 引擎的 fio 基準測試,Microbenchmarking 儲存體效能可能最適合。

其他參考資料