如何讓 VirtualBox 來賓使用 NVidia 顯示卡?
主機設定:
Windows 7 x64
英偉達擎天柱
在NVIDIA 控制面板,我明確選擇了高效能 NVIDIA 處理器 為了:
C:\Program Files\oracle\VirtualBox\VirtualBox.exe C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
當 VirtualBox 運行時,NVidia 軟體不會將其列為使用 NVidia GPU 的應用程式。因此,我假設VirtualBox確實不使用Nvidia GPU。
客人:
Windows 7 x64(即與主機相同)
嘉賓補充已安裝
在 VirtualBox 設定中啟用 3D 加速:顯示/影片/啟用 3D 加速
什麼犀牛,支援 OpenGL 的應用程式報告為視訊適配器:
Humper Chromium OpenGL version: 2.1 Chromium 1.9 Render version: 2.0 Shading Language: 1.40 - Intel Build 9.17.10.3517 Driver Date: NA Driver Version: NA Maximum Texture size: 8192 x 8192 Z-Buffer depth: 32bits Maximum Viewport size: 8192 x 8192 Total Video Memory: 64 MB
在我看來,虛擬機確實使用了主機的 3D 硬體加速,但不幸的是英特爾的。
答案1
我意識到幾年過去了,但我想回答一下,因為當你在 google 上搜尋「virtualbox 3d multiple GPU」時,這篇文章的出現率非常高。隨著時間的流逝,事情變得更加簡單和美好。
偶然發現這條線索的人很可能會來到這裡,因為他們擁有一台帶有兩個 GPU 的筆記型電腦或 PC,這在當今很常見,尤其是在遊戲筆記型電腦上。板載 Intel GPU 用於渲染視窗和一般應用程序,但使用 GPU 3D 功能的應用程式應透過效能更高的 Nvidia GPU 來實現。
今天,我在我的筆記型電腦上建立一個Ubuntu 虛擬機來進行一些跨平台開發,一切都很好,除了來賓虛擬機非常慢,而且沒有任何解釋,因為CPU、記憶體、磁碟都顯示利用率很低。
沒多久就發現問題是視訊效能造成的。啟動應用程式、最大化/最小化視窗——我們在 2019 年認為理所當然但需要 3D 加速才能以任何合理速度工作的任何事情——都在使用 GPU 0。
確定這一點很容易,因為 Windows 10 現在可以使用「工作管理員」和「效能」標籤查看 GPU 利用率。當我移動視窗、最大化、最小化時,我可以看到這是透過主機上的 GPU 完成的。主機上的GPU是整合的Intel HD GPU,我想使用NVidia GTX-1050ti,也就是GPU1。
經過一番搜尋後,我並沒有真正找到可以指定要使用哪個 GPU 的地方。但這個貼文和其他一些貼文提醒我,在這些類型的設定中,您必須進入 NVidia 控制面板,然後“管理 3d 設定”,然後“程式設定”標籤。
您可能不會在清單中找到“Virtualbox”。但您可以按下「新增」按鈕,然後新增 virtualbox.exe。您可能需要深入了解 virtualbox 安裝所在的磁碟機/路徑。新增後,在下面的設定中確保第 2 項「為此程式選擇首選圖形處理器」設定為您希望其使用的 GPU,在我的例子中是「高效能 NVIDIA 處理器」 。
不要將其設為自動,當然也不要將其設定為整合。當然,您需要在勾選 3D 加速框的情況下設置 VM 設置,並且需要在主機上安裝來賓附加功能。但是,一旦您按照上述方式設定了主機視訊 3d 設置,請關閉來賓 VM,退出 virtual box,然後重新啟動 virtualbox 和 VM。
如果您使用工作管理員|performacne並查看「virtualbox管理器」進程並觀察在導航來賓VM的UI時使用的GPU,您現在應該會看到它使用更好的GPU。請參閱下面貼上的圖像。
儘管如此,不要指望能夠在來賓虛擬機中運行遊戲。 3D 加速傳遞仍然沒有那麼遠。但您可以期望在您的來賓中擁有現代化的作業系統和使用者介面,並獲得可接受的體驗。人們可以在來賓虛擬機器中玩舊遊戲,例如任何基於 directX9 的遊戲。不幸的是,隨著 GPU 虛擬化能力的不斷發展,3D 遊戲技術也發展得更快。
答案2
為來賓提供完整的 GPU 存取權限可能是不可能的。如果虛擬機器在主機使用 GPU 時可以直接存取 GPU,就會發生壞事TM,因為在兩台實際上不同的電腦之間共享記憶體是不存在的;指針和地址之類的東西在它們之間會有很大的不同。 (沒有消費者可用的卡片支援同時服務兩台電腦。)
不過,有些事情您可以嘗試。首先,在 NVidia 控制面板中將您首選的圖形處理器設定為合適的處理器(3D 設定→管理 3D 設定→首選圖形處理器)。這可能會使 VirtualBox 與 NVidia 卡一起使用 OpenGL。
如果這沒有幫助,請嘗試在安全模式下安裝來賓添加在客人身上。
最後,在 Linux 主機上,你可以嘗試將GPU傳遞到虛擬機,但這僅適用於PCI卡,我無法找到你的是否是PCI,即使如此,你仍然有很大的機會將GPU從虛擬機中剝離出主機或引起其他問題。首先找到好卡的 PCI 位址(匯流排、裝置和功能)。將虛擬機器的晶片組設定為 ICH9;當我嘗試時,這並沒有立即破壞任何東西。然後使用 VBoxManage 實用程式附加卡:
vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f
Your VM Name
酌情更換。BB
是主機上 GPU 的匯流排號碼;DD
是設備;F
是函數。之後@
,輸入它將位於客戶機上的 PCI 插槽。例如:
vboxmanage modifyvm "Windows 7 x64" --pciattach 01:[email protected]
一般來說,GPU 直通更有可能在 Linux 主機上實作。看如何設定具有 GPU 直通功能的遊戲機。