使用VirtualBox的NVidia GPU?


29

如何使VirtualBox来宾使用NVidia图形?

主机设置:

  • Windows 7 x64

  • NVidia Optimus

  • 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硬件加速,但不幸的是英特尔。


2
虚拟机没有直接的硬件访问权限-它们有虚拟的GPU。。。相关问题:superuser.com/questions/395245/…–
ernie

6
@ernie VirtualBox可以使访客直接访问主机GPU的OpenGL API。据我所知,它可以在我的机器上运行。只有VirtualBox使用Intel GPU而不是NVidia GPU。引用VirtualBox手册“通过使用此功能,如果虚拟机内部的应用程序通过OpenGL或Direct3D 8/9编程接口使用3D功能,而不是在软件中模拟它们(这很慢),VirtualBox会尝试使用您主机的3D硬件。”
feklee 2014年

@feklee问题的标题令人误解:您想将nVidia GPU 用于 VBox。“发件人”也是可能的,但其含义有所不同:硬件直通,即。直接从VBox内部访问主机的GPU 。
larkey


查找有关“ virtualbox直通视频”的信息。
e-info128

Answers:


20

我知道已经过去了几年,但想回答一下,因为当您在Google上搜索“ virtualbox 3d多GPU”时,该帖子显示的很高。在过去的时间里,事情变得越来越简单和更好。

偶然发现此线程的人很可能会落在这里,因为他们的笔记本电脑或PC具有两个GPU,这在当今很普遍,尤其是在游戏笔记本电脑上。板载英特尔GPU用于渲染窗口和常规应用程序,但是使用GPU 3D功能的应用程序应通过性能更高的Nvidia GPU来实现。

今天,我在笔记本电脑上构建了一个Ubuntu VM,以进行一些跨平台的开发,但是一切都很好,但guest虚拟机非常慢,并且没有任何解释,因为CPU,内存和磁盘都显示出低利用率。

很快就发现导致问题的原因是视频性能。启动应用程序,最大化/最小化窗口-我们在2019年将所有事情视为理所当然,但需要3D加速才能以任何合理的速度工作-使用的是GPU 0。

确定这一点很容易,因为Windows 10现在可以使用“任务管理器”和“性能”选项卡查看GPU利用率。当我移动窗口(最大化,最小化)时,我可以看到,这是通过主机上的GPU完成的。主机上的GPU是集成的Intel HD GPU,我想使用NVidia GTX-1050ti,即GPU1。

在四处搜寻之后,我没有真正找到可以指定使用哪个GPU的地方。但是这个线程以及其他一些线程提醒我,在这种设置下,您必须进入NVi​​dia控制面板,然后进入“管理3d设置”,然后进入“程序设置”选项卡。

您可能不会在列表中找到“ Virtualbox”。但是您可以按“添加”按钮,并添加virtualbox.exe。您可能需要深入研究Virtualbox安装所在的驱动器/路径。添加完后,在下面的设置中确保将第2项设置为“希望为该程序选择首选图形处理器”。在我的情况下,它是“高性能NVIDIA处理器”。 。

不要将其设置为自动,当然也不要将其设置为集成。当然,您需要在3D加速框打勾的情况下设置VM设置,并且需要在主机上安装来宾添加。但是,如上所述,您已设置主机视频3d设置后,请关闭来宾VM,退出虚拟盒,然后重新启动VirtualBox和VM。

如果您使用任务管理器|性能,并查看“ virtualbox管理器”过程,并观察在导航访客VM的UI时使用了什么GPU,那么现在应该使用更好的GPU来查看它。请参见下面粘贴的图像。

所有这些,不要指望能够在来宾VM中运行游戏。通过3D加速传递还不是很远。但是您可以期望在来宾中拥有现代的OS和UI,并且可以接受。像基于DirectX9的任何游戏一样,您将可以在来宾VM中玩较旧的游戏。不幸的是,随着虚拟化GPU封装的能力,3d游戏技术发展得更快。

屏幕截图


2
我今天对VirtualBox和VMWare的3D加速功能进行了一些研究,截至2019年1月,如果来宾VM中的GPU加速对您很重要,那么选择VMWare是您的最佳选择-特别是如果您的来宾OS是Windows。VirtualBox支持GPU加速功能的开发还不够完善,因为您只能为来宾VM最多提供128MB的视频RAM,而在VMWare中,最多可以将2GB分配给视频内存。VMWare支持DirectX 10,Virtualbox支持DirectX9。正如我在帖子中所说的那样,directx 9已经过时了。
Thomas Carlisle

1
““为此程序选择首选的图形处理器”已设置为您要使用的GPU”我看不到上面的选项。我看到了Ambinetn,各向异性过滤...等,但“选择首选grapics处理器”上却什么也没有
Moondra

您需要PCI直通,尽管我还没有在Optimus上使用它,但我仍然认为有些可能
kensai

我设法做过类似的技巧来强制为virtualbox启用nvidea卡,但是Virtualbox提供的3个可用图形控制器中的任何一个都不能与Neon KDE来宾OS正常唤醒。我的UI出现了小故障,因此在我的情况下使用nvidea并不是一个选择。感谢@ThomasCarlisle的建议,我将尝试使用VMware。
Arkemlar,

17

为访客提供完全的GPU访问权限可能是不可能的。如果虚拟机在主机使用GPU时可以直接访问您的GPU,则会发生Bad Things TM,因为在两台实际上不同的计算机之间共享内存不是一件容易的事;指针和地址以及它们之间没有什么不同。(没有消费者可使用的卡支持同时服务两台计算机。)

但是,您可以尝试一些操作。首先,在NVidia控制面板(3D设置管理3D设置首选图形处理器)中将首选的图形处理器设置为良好的图形处理器。这可能会使VirtualBox与用于OpenGL的NVidia卡一起使用。

如果这样做没有帮助,请尝试在访客上以安全模式安装访客添加

最后,在Linux主机上,您可以尝试将GPU传递到虚拟机,但这仅适用于PCI卡,但我无法确定您的显卡是否为P​​CI,即使这样,您也很有可能从主机上剥夺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:00.0@03.01.0

通常,在Linux主机上更有可能通过GPU。请参阅如何使用GPU直通设置游戏机


2
将GPU连接到VM的前提是“错误”。有一大群人希望这样做,以便在裸机管理程序上创建游戏虚拟机。如果要在Linux中执行此操作,则需要将PCIe GPU列入黑名单,这样内核才可以使用芯片组图形。这样可以防止“共享内存”问题。防止Windows拿起卡可能是解决此问题最困难的问题,并且可能需要禁用设备或卸载optimus和nvidia驱动程序。
Tim G

@TimG好点了,我已经稍微澄清了我的帖子。谢谢!
本N

@BenN很好的答案,但我需要澄清一点。您是否曾在Windows主机上尝试过此操作?该手册说,这仅在Linux主机(virtualbox.org/manual/ch09.html#pcipassthrough)上可用,而我自己也不能与Windows主机一起使用。
Baris Demiray

@BarisDemiray如果我没记错的话,该命令在尝试时没有报告任何错误,但是我认为我没有测试过VM是否可以使用该设备。但是,很久以前,很抱歉。
本ñ

@BenN,您好,非常感谢您抽出宝贵的时间回复。这就是我尝试时发生的情况,命令行中没有错误,但VM中没有图形卡。
Baris Demiray
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.