Hyper-V 獨立設備分配與單根虛擬化網卡資源衝突及記憶體映射空間調整

Wailam Leung 40 信譽點數
2026-08-19T04:54:53.26+00:00

問題摘要:

目前在 Hyper-V 實施顯示卡直通時,遇到 PCIe 資源分配爭搶的問題:

當我們使用 獨立設備分配 (DDA) 將實體顯示卡直通給虛擬機器後,導致同台主機上網路卡上的 單根虛擬化 (SR-IOV) 虛擬功能 (VF) 運作異常並發生衝突。

根本原因與錯誤代碼:

經過排查,確認為宿主機與虛擬機器之間的 PCIe 記憶體分配產生衝突,系統回報 HasMMIOSpaceNotConfigured。主因是顯示卡需要極大的記憶體映射輸入輸出 (MMIO) 空間,導致原本預留給單根虛擬化網卡的 PCIe 基礎位址暫存器 (BAR) 空間遭到擠壓。

技術討論與協助需求:

希望與團隊討論以下重新配置方案:

  • 宿主機 PCIe 資源分配: 如何重新調校宿主機端的 PCIe 拓撲與 MMIO 預留區,避免顯示卡直通佔滿單根虛擬化虛擬功能所需的記憶體位址空間?
  • MMIO 參數調校: 目前預計透過 PowerShell 指令調整低端與高端記憶體映射空間(LowMemoryMappedIoSpace 與 HighMemoryMappedIoSpace),針對這種高密度網卡搭配顯示卡的架構,大家是否有建議的最佳實踐計算公式?
Windows 商務版 | Windows 365 企業版
0 則留言 沒有留言

1 個回答

排序依據: 最實用
  1. Hoang Le 6,445 信譽點數 獨立顧問
    2026-08-19T09:51:33.48+00:00

    你好,在你的案例中,衝突來自 GPU 直通需要大量 MMIO 空間,導致 SR-IOV 網卡的 VF BAR 無法正常分配。解法是調整 Hyper-V 主機的全域 MMIO 預留值。你可以透過 PowerShell 執行 Set-VMHost -LowMemoryMappedIoSpace 與 Set-VMHost -HighMemoryMappedIoSpace,常見建議是 Low 設定在 512MB 至 1GB,而 High 設定在 32GB 至 64GB,依 GPU 與 NIC 的 BAR 需求而定。要精準配置,先用 Get-PnpDeviceProperty 查詢各設備的 BAR 大小,將 GPU 與 SR-IOV NIC 的需求加總,再加上約 20% 的緩衝空間,作為 HighMemoryMappedIoSpace 的值。修改後必須重啟宿主機才能生效。若主板 BIOS 沒有開啟 "Above 4G Decoding" 或限制了 MMIO window,系統仍可能報錯,因此 BIOS 層面也要確認。總結來說,計算 BAR 需求、設定足夠的 HighMemoryMappedIoSpace、並在 BIOS 開啟高位地址映射,是避免 DDA 與 SR-IOV 衝突的最佳做法。希望這裡的內容對您有幫助。如果它能幫助您更深入地了解問題,請採納此答案。如果您還有其他問題,歡迎留言。祝您愉快!

    HL.

    此回答有幫助嗎?

    0 則留言 沒有留言

您的回答

答案可由問題作者標示為「已接受」,而由仲裁者標示為「推薦」,這可協助使用者知道答案解決了作者的問題。