- VMware 中的 GPU 直通 (vDGA/VMDirectPath I/O) 將完整的實體 GPU 對應到虛擬機,以實現接近原生效能。
- 它的使用需要滿足嚴格的要求。 硬件 虛擬機器上的(VT-d/AMD-V、IOMMU、MMIO 64 位元)和 EFI/UEFI 韌體。
- 啟用 vDGA 會導致使用直通模式 GPU 的虛擬機器失去一些關鍵的 vSphere 功能,例如 vMotion、DRS 和快照。
- 與 vGPU 和其他解決方案相比,vDGA 優先考慮專用效能,而不是靈活性和在多個虛擬機器之間共享 GPU 的能力。
在 VMware 中將實體 GPU 直接連接到虛擬機器。 在處理大量圖形任務時,這種改變會帶來巨大的不同。 IA 或用於 3D 渲染。從模擬顯示卡切換到透過直通(vDGA / VMDirectPath I/O)直接存取顯示卡,可以使虛擬機的效能更接近實體機,但作為交換,它也增加了一些要求和限制,這些要求和限制在開始之前應該非常清楚。
此外,在目前的生態系中,虛擬化環境中使用 GPU 的方式有多種並存: 專用直通、共享虛擬GPU以及BitFusion或GPU分區等技術了解每項技術的作用、適用場景以及如何在 vSphere/ESXi 中進行配置(以及與 Hyper-V DDA 等類似技術的關係)是避免在硬體或所選虛擬機器管理程式版本方面陷入困境的關鍵。
VMware 中的 GPU 直通(vDGA / VMDirectPath I/O)是什麼?
VMware 中的 GPU 直通,也稱為 vDGA 或 VMDirectPath I/O在這種運作模式下,安裝在 ESXi 主機上的實體顯示卡直接指派給虛擬機器。客戶作業系統不再使用由虛擬機器管理程式模擬的圖形適配器,而是將 GPU 視為幾乎直接插入實體主機板的圖形適配器。
這個快捷方式允許虛擬機器利用 圖形晶片的所有功能、顯存和高階特性 例如,它可以原生支援 CUDA、OpenCL、Direct3D 和 OpenGL 等技術,幾乎不會因虛擬機器管理程式而增加額外開銷。在 VMware 實驗室測試中,與在裸機上運行相同的 GPU 相比,效能通常會損失 4-5% 左右。
實際上,使用GPU直通意味著 此顯示卡完全專用於單一虛擬機器。多個虛擬機器之間沒有細粒度的資源分配,也沒有像 vGPU 解決方案那樣在 ESXi 上載入第三方軟體層來共享顯示卡。 NVIDIA 網格。
需要注意的是,這種方法與其他在虛擬化中使用 GPU 的方法有所不同,例如: NVIDIA vGPU(共享 vGPU)、Hyper-V 或 BitFusion 類別解決方案上的 RemoteFX/分區這些技術旨在利用不同的虛擬化或遠端重新導向技術,將一個 GPU 或一組 GPU 分配到多台機器上。
在 VMware 領域,當我們談論 vDGA 時,我們本質上是在描述這一點。 將GPU的PCIe設備直接分配給虛擬機 使用 VMDirectPath I/O,它既有優點(效能),也有缺點(移動性和高可用性限制)。

在 vSphere 中使用 GPU 直通的優勢
改用vDGA的主要原因是: 圖形和計算性能非常接近物理計算機。透過省略 PCIe 裝置的大部分虛擬化層,模擬 GPU 的典型瓶頸消失了,虛擬機器可以更流暢地運行遊戲、3D 應用程式或 AI 引擎。
在整合顯示卡或預設模擬虛擬顯示卡效能遠遠無法滿足需求的情況下,這一點尤其明顯: 進階圖形設計、CAD、3D建模與渲染、影片編輯、動畫和遊戲開發它在訓練嚴重依賴 CUDA 或同等技術的機器學習模型和 AI 工作負載方面也至關重要。
另一個明顯的優勢是資料中心層面硬體使用的彈性更高。無需再像以前那樣擁有… 每個使用者或每個專案一個實體工作站可以將一台容量充足的 ESXi 主機分配給多個虛擬機,每個虛擬機都可以擁有自己的 GPU 直通,並且可以調整計劃或應對高峰需求。
在某些環境下,尤其是在已有空閒 PCIe 插槽的伺服器的情況下, 按使用者或項目計費 與維護一批功能強大的實體工作站相比,這可能成本更低,尤其是在不需要每天 24 小時使用顯示卡,並且可以根據工作高峰期重新配置顯示卡的情況下。
最後,在安全性和營運方面也存在間接好處:透過維護圖形工作負載 在隔離的虛擬機器中如果出現問題(例如漏洞利用、驅動程式問題、設定錯誤),只要遵守直通的限制(我們稍後會看到),就更容易控制影響,恢復到先前的快照或從備份中復原。
GPU直通與vGPU及其他替代方案
在 VMware 生態系統中,有許多方式可以利用顯示卡,並非所有方式都會將顯示卡完全指派給單一虛擬機器。最常見的方式包括: vDGA / VMDirectPath I/O、vGPU(NVIDIA GRID 或其他)以及遠端存取/計算解決方案,例如 BitFusion.
在直接直通模式 (vDGA) 下,GPU 被分配 僅限虛擬機計算核心和顯存不會在多個虛擬機器之間共享,虛擬機器管理程式的作用幾乎不存在,它只是將 PCIe 設備路由到虛擬機器。這是最容易理解的方案,也是最接近配備獨立顯示卡的實體伺服器的方案。
在 vGPU 方法中,需要使用專門的軟體(例如 VMware vSphere 上的 NVIDIA GRID vGPU它在控制器層級處理 GPU 虛擬化,並公開 GPU 的虛擬實例,這些實例可以同時指派給多個虛擬機器。每個虛擬機器都能看到 GPU 的一個“切片”,這些切片擁有固定或共享的資源。
vGPU允許多個虛擬桌面或伺服器共用一張顯示卡,這在以下方面非常有用: VDI、輕量級加速辦公環境、零售或旅館業的第一線圖形工作站或在用戶間圖形使用峰值不均衡的情況下。作為交換,會產生一些開銷,並且無法達到與將整個實體 GPU 專用於單一虛擬機器相同的峰值效能。
還有一些解決方案,例如 BitFusion Flexdirect 及類似技術這使得可以透過網路從不同的虛擬機器使用 GPU,非常適合 AI 和 HPC 工作負載,因為在這些工作負載中,GPU 更像是遠端運算資源,而不是使用者圖形介面的顯示卡。
您可以選擇 vDGA、vGPU 或遠端 GPU 型號 這取決於你是否需要充分利用單一機器的 GPU(直通),是否想將昂貴的顯示卡分配給許多中等工作負載的使用者(vGPU),或者關鍵在於協調 GPU 池進行分散式運算(BitFusion 等)。
在 ESXi 上使用 vDGA 的硬體需求
在 VMware 中規劃 GPU 直通部署之前,您需要確保: 此硬體平台滿足一系列條件 這不僅僅是「將顯示卡插入伺服器」那麼簡單。
首先,ESXi主機主機板的處理器和晶片組必須支援 使用 IOMMU 進行虛擬化。 在 Intel英特爾 這是透過英特爾的 VT-x 和 VT-dy 技術實現的,也是透過 AMD 的 AMD-V 和 IOMMU 技術實現的。伺服器的 BIOS/UEFI 通常提供相應的選項。 啟動虛擬化擴展 I/O。
其次,你需要檢查支撐板。 MMIO 記憶體映射大於 4 GB (有時也稱為「4G以上解碼」、「4G以上記憶體映射I/O」或類似名稱)。這對於高階GPU來說尤其重要,例如: 特斯拉P100、V100 及同等晶片在其 BAR(基底位址暫存器)中聲明了非常大的記憶體區域。
有些高階顯示卡可以映射 超過 16 GB 的 MMIO 空間因此,除了演奏之外 的BIOS然後,需要調整 vSphere 中進階虛擬機器設定中的某些參數,以便虛擬機器能夠使用該 GPU 啟動而不會出現資源不足錯誤。
當然,GPU本身也必須是 與伺服器平台相容 並獲得主機製造商(戴爾、HPE、 聯想等等)在直通模式下使用時。實際上,大多數現代 PCIe GPU 都能正常工作,但建議查看相容性列表,特別是對於 GRID 顯示卡或非常新的型號。
軟體要求和版本相容性
在軟體層面,需要明確的是: VMware 在 vSphere 6.x 及更高版本中支援 vDGA然而,一些用戶報告稱,某些硬體組合存在特定問題(例如,戴爾 R720 伺服器中的 NVIDIA GRID GPU 和 ESXi 6.x)。
在這些情況下,通常會看到諸如“設備已被使用”之類的錯誤,或者出現表明設備已在使用中的症狀。 從 ESXi 5.5 升級到 6.x 後,直通功能停止運作。但實際上,這是由於特定的漏洞、PCI 裝置管理或驅動程式的變化,而不是官方停止支援。
使用 GPU 直通的客戶作業系統必須具備 虛擬機器內已安裝官方廠商驅動程式 (NVIDIA、AMD、Intel),因為在使用 VMDirectPath I/O 時,ESXi 不會為該顯示卡載入任何特定的驅動程式;虛擬機器管理程式只會將裝置暴露給用戶端。
此外,虛擬機器必須配置為啟動到 EFI 或 UEFI 模式 當使用聲明了大型 MMIO 記憶體區域的 GPU 時,這一點至關重要:錯誤的虛擬機器韌體可能會導致故障。 開機 或者 GPU 無法從客戶作業系統正確初始化。
在客戶端,如果透過以下方式存取虛擬機器: 遠端桌面(RDP 或其他協定)需要啟動相應的策略,以便客戶系統在遠端會話中使用硬體圖形適配器,而不是使用沒有加速功能的通用驅動程式。

配置 ESXi 主機以在直通模式下使用 GPU
第一個實際步驟是準備… 將 GPU 暴露為 DirectPath I/O 裝置的 vSphere/ESXi 伺服器這包括存取 BIOS,檢查主機上的 PCI 清單,並標記該卡以便將其指派給虛擬機器。
如果 GPU 需要較大的 MMIO 記憶體區域(16 GB 或更多),則需要在伺服器的 BIOS/UEFI 中尋找類似這樣的選項。 “高於 4G 解碼”或“高於 4G 的 PCI 64 位元資源處理” 並激活它們。特定名稱因製造商而異,但通常可以在 PCI 設定或進階資源部分找到。
使用這些設定啟動 ESXi 後,您可以在 vSphere Client 中前往對應的主機並進行存取。 “配置 → 硬體 → PCI 設備 → 編輯” 若要查看偵測到的 PCI 裝置列表,您將看到 NVIDIA、AMD 或類似的顯示卡以及伺服器的其他 PCI 硬體。
如果 GPU 尚未啟用 DirectPath I/O,只需選取該核取方塊即可。 入口處的傳遞箱 在該清單中進行選擇。儲存變更時,vSphere 會提示您重新啟動主機以套用配置,因為虛擬機器管理程式需要預留並準備設備,以便重新指派給虛擬機器。
重啟後,返回該部分 “配置 → 硬體 → PCI 設備” 將顯示一個名為「可供虛擬機器使用的 DirectPath I/O PCI 設備」的窗口,其中列出了所有可用於虛擬機器的設備,包括 GPU,以及在許多情況下,像 Mellanox 這樣的高級網路適配器。
準備和配置虛擬機
主機準備就緒後,下一步是建立或調整將使用 GPU 的虛擬機器。首先要確保虛擬機器已正確配置。 它採用合適的 EFI/UEFI 韌體建立。尤其是在高階 GPU 和高 MMIO 的場景下。
在 vSphere 用戶端中,只需選擇虛擬機,然後前往 “編輯設定 → 虛擬機器選項 → 啟動選項” 並確認「韌體」欄位中選擇了「EFI」或「UEFI」。如果沒有選擇,則需要進行變更(在某些情況下,如果虛擬機器或作業系統不支援熱插拔,則需要重新建立虛擬機器或作業系統)。
當使用直通功能且卡片映射的 MMIO 空間超過 16 GB 時,建議調整虛擬機器配置中的一些進階參數,這些參數可透過以下方式存取: “編輯設定 → 虛擬機器選項 → 進階 → 設定參數 → 編輯配置”您可以在此處新增與 pciPassthru 相關的金鑰,以控制位址空間的保留方式。
具體來說,通常會啟用 64 位元 MMIO,並為該區域定義一個大小,該大小由以下方式計算: 虛擬機器將分配多少個高階GPU?通常的經驗法則是將 16 乘以 GPU 的數量,並將結果向上取整到下一個 2 的冪(例如,兩個這樣的 GPU 將最終得到 64 GB 的 64 位元 MMIO)。
調整這些參數後,即可執行安裝或驗證安裝是否成功。 客戶作業系統支援 EFI/UEFI,並且能夠處理相關的記憶體大小和 GPU。目前,顯示卡尚未連接到虛擬機器;環境只是在進行準備,以便連接後,一切能夠順利啟動,不會因資源不足或韌體不相容而出現錯誤。
使用 VMDirectPath I/O 將 GPU 指派給虛擬機
一旦主機將 GPU 標記為可用於 DirectPath I/O 並且虛擬機器配置正確,就可以開始執行操作了。 將該卡與該虛擬機器進行實體關聯。此步驟必須在虛擬機器完全斷電的情況下進行。
在 vSphere 用戶端中,選擇虛擬機器並輸入 點擊「編輯設定」查看虛擬硬體在裝置清單中,如果GPU尚未列出,您可以點擊「新增設備」並選擇「PCI裝置」。然後,選擇與顯示卡對應的PCI裝置(例如,主機上偵測到的NVIDIA或AMD顯示卡)。
配置儲存後,虛擬機器將在其硬體上顯示類似這樣的資訊。 與特定 GPU 關聯的“PCI 裝置 0”從現在開始,當客戶作業系統啟動時,它將看到一個與實體顯示卡對應的額外 PCIe 適配器。
虛擬機器必須具備以下條件: 保留分配給它的所有內存在 vSphere 中,此設定位於「編輯設定 → 虛擬硬體 → 記憶體」中,將「預留」值設定為虛擬機器配置的 RAM 容量。如果沒有此完整預留,PCI 直通可能會失敗或出現間歇性問題。
啟動虛擬機器後,在系統上 Linux 可以透過以下方式驗證 GPU 的存在: 命令 類型 lspci | grep nvidia而在Windows系統中,它會出現在「顯示適配器」下。 設備管理器同時看到 VMware 模擬圖形適配器和專用實體 GPU 是正常的。
最後一步是在訪客設備上安裝以下軟體: 驅動程序 GPU製造商官員應從 NVIDIA、AMD 或 Intel 網站下載驅動程序,避免使用通用驅動程式或提供的驅動程式。 Windows更新這可能並非針對傳遞場景進行最佳化。
vSphere 的限制和功能與 vDGA 不相容
VMware 中 GPU 直通的缺點是: 平台的一些高級功能丟失了。 透過將實體設備直接分配給虛擬機器來實現。這是獲得接近原生效能所需付出的代價。
第一個重大犧牲是 vMotion 和 DRS啟用直通模式的虛擬機器無法熱遷移到其他主機,因為顯示卡已實際鎖定到原始伺服器。涉及在叢集中主機之間移動虛擬機器的自動負載平衡策略也無法使用。
功能例如 傳統快照或某些高可用性機制 對於該特定虛擬機而言,由於它依賴於非常特殊的實體硬件,因此凍結和恢復複雜狀態的能力會受到影響。
另一個需要考慮的方面是,在這種模式下, GPU 不被多個虛擬機器共享。如果同一台機器上需要多個具有圖形加速功能的桌面或伺服器,則每個虛擬機器需要一張顯示卡;或者,也可以使用 vGPU 模型,將顯示卡虛擬化到多個實例中。
在支援方面,可能存在一些特殊情況,例如: 某些硬體和驅動程式的組合可能會導致問題。一些使用者在特定伺服器(例如 Dell R720)上使用 NVIDIA GRID 卡升級到 ESXi 6.x 時觀察到,在這種情況下,建議查看 VMware 和 GPU 製造商的文檔,並在必要時提交支援案例。
最後,需要指出的是,某些與圖形互動的技術或服務,例如: 遠端桌面、Windows 中的 Linux 子系統或進階作業系統功能如果偵測到您在虛擬機器中使用 GPU 直通功能,它們可能會幹擾 NVIDIA 驅動程式或導致「代碼 43」錯誤。
其他虛擬機器管理程式中的 GPU 直通:與 Hyper-V 並行
雖然本文重點是 VMware,但了解以下方面也很有價值: 其他虛擬機器管理程式(例如) 使用 KVM 和 virt-manager 進行虛擬化)滿足將實體 GPU 分配給虛擬機器的相同需求因為術語和工具雖然會改變,但基本思想是相似的。
在 Hyper-V 中,VMware VMDirectPath I/O 的等效項是 使用DDA(離散裝置分配)進行直接裝置分配該技術允許將特定的 PCIe 裝置(例如 GPU 或 NVMe)直接對應到 Windows 虛擬機器中,其控制等級和效能與 ESXi 中的直通類似。
早期版本的 Windows Server 使用了這項技術。 RemoteFX的 提供GPU虛擬化功能,允許多個虛擬機器共享一張顯示卡。 El Temppo由於安全問題和效能限制(例如每個虛擬機器 1GB 記憶體上限和 30 FPS),微軟棄用了 RemoteFX,並將 DDA 作為專用 GPU 場景的主要途徑。
在 Windows 10 和 窗戶11尤其是一些合輯,已經出現了對…的支持 GPU 分割區以及 WSL2 和 Windows Sandbox 中的複用機制但是,它的配置通常涉及複雜的腳本和將驅動程式從主機複製到虛擬機,這不像在 vSphere 中分配設備那麼直接。
了解這些替代方案能讓我們明白: 透過直接的 PCIe 通道提供接近原生 GPU 存取的概念 雖然每個虛擬機器管理程式都有自己的細微差別、命令和相容性限制,但它在多個虛擬機器管理程式中都很常見。
整個直通、vGPU 和 DDA 生態系統表明,只要配置得當並配備合適的硬件, 在內部使用強大的GPU是完全可行的。 生產用虛擬機 對於從要求嚴格的圖形桌面到人工智慧和高效能運算等各種工作負載,始終要假設您必須放棄傳統虛擬化的某些便利,並密切關注驅動程式、虛擬機器管理程式版本和 GPU 製造商的支援。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。
