使用 VirtualBox 的 NVidia GPU?

fek*_*lee 47 windows-7 virtualbox virtual-machine optimus nvidia-graphics-card

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

主机设置:

  • 视窗 7 x64

  • 英伟达擎天柱

  • NVIDIA Control Panel 中,我明确选择了高性能 NVIDIA 处理器

     C:\Program Files\oracle\VirtualBox\VirtualBox.exe
     C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
    
    Run Code Online (Sandbox Code Playgroud)
  • 当 VirtualBox 运行时,NVidia 软件不会将其列为使用 NVidia GPU 的应用程序。因此,我假设 VirtualBox 确实没有使用 Nvidia GPU。

客人:

  • Windows 7 x64(即与主机相同)

  • 已安装来宾添加

  • 在 VirtualBox 设置中启用 3D 加速:显示/视频/启用 3D 加速

  • 什么Rhinoceros,一个支持 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
    
    Run Code Online (Sandbox Code Playgroud)

    在我看来,虚拟机确实使用了主机的 3D 硬件加速,但不幸的是英特尔。

Tho*_*sle 42

我意识到几年已经过去了,但我想回答一下,因为当您在谷歌搜索“virtualbox 3d multiple GPU”时,这篇文章的排名非常高。在过去的时间里,事情变得更简单和更好。

偶然发现此线程的人可能会来到这里,因为他们有一台配备两个 GPU 的笔记本电脑或 PC,这在当今很常见——尤其是在游戏笔记本电脑上。板载 Intel GPU 用于渲染窗口和一般应用程序,但使用 GPU 3D 功能的应用程序应该通过更高性能的 Nvidia GPU 来完成。

今天在笔记本上搭建了一个Ubuntu虚拟机做一些跨平台的开发,一切正常,除了guest虚拟机非常慢,没有任何解释,因为CPU,内存,磁盘都表现出低利用率。

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

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

在四处搜索之后,我并没有真正找到可以指定使用哪个 GPU 的任何地方。但是这个线程和其他一些线程提醒我,在这些类型的设置中,您必须进入 NVidia 控制面板,然后“管理 3d 设置”,然后是“程序设置”选项卡。

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

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

如果您使用 task manager|performacne 并查看“virtualbox manager”进程并观察在您导航来宾 VM 的 UI 时使用了哪些 GPU,您现在应该会看到它使用了更好的 GPU。请参阅下面粘贴的图像。

尽管如此,不要指望能够在来宾 VM 中运行游戏。3D 加速通过仍然不是很远。但是您可以期望在您的来宾中拥有现代操作系统和用户界面,并获得可接受的体验。人们将能够在来宾 VM 中玩旧游戏,就像任何基于 directX9 的游戏一样。不幸的是,随着 GPU 虚拟化能力的发展,3d 游戏技术发展得更快。

截屏

  • 我今天对 VirtualBox 和 VMWare 的 3D 加速功能进行了一些研究,截至 2019 年 1 月,如果来宾 VM 中的 GPU 加速对您很重要,那么选择 VMWare 是最好的选择——尤其是如果您的来宾操作系统是 Windows。VirtualBox 支持 GPU 加速功能有点欠发达,因为您只能为来宾 VM 提供最大 128MB 的视频 RAM,而在 VMWare 中,最多可以为视频内存分配 2GB。VMWare 支持 DirectX 10,Virtualbox 支持 DirectX9。正如我在帖子中所说,directx 9 已经过时了。 (3认同)

Ben*_*n N 21

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

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

如果这没有帮助,请尝试在来宾上以安全模式安装来宾添加

最后,在 Linux 主机上,您可以尝试将 GPU 传递到虚拟机,但这仅适用于 PCI 卡,我无法确定您的是否为 PCI,即使如此,您也很有可能从主机上撕下 GPU 或导致其他问题。首先找到好卡的PCI地址(总线、设备和功能)。将您的 VM 的芯片组设置为 ICH9;当我尝试时,这并没有立即破坏任何东西。然后使用 VBoxManage 实用程序附加卡:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f
Run Code Online (Sandbox Code Playgroud)

Your VM Name适当更换。BB是主机上 GPU 的总线编号;DD是设备;F是函数。在 之后@,输入它将在来宾上的 PCI 插槽。例如:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0
Run Code Online (Sandbox Code Playgroud)

一般来说,GPU 直通更有可能在 Linux 主机上实现。请参阅如何使用 GPU 直通设置游戏机

  • 将 GPU 连接到 VM 是“坏事”的前提是不正确的;有一大群人想要在裸机管理程序上创建游戏虚拟机。如果想在 Linux 中执行此操作,则需要将 PCIe GPU 列入黑名单,以便内核仅用于芯片组图形;这可以防止“共享内存”问题。阻止 Windows 提取卡可能是解决这个问题最难的问题,它可能需要禁用设备或卸载 optimus 和 nvidia 驱动程序。 (3认同)