使用显卡虚拟化转码,使用DDA分配显卡

 Windows Server 2016 开始,可以使用离散设备分配 (DDA) 将整个 PCIe 设备传递到虚拟机 (VM) 中。这样做允许从 VM 中高性能访问 NVMe 存储或显卡等设备,同时能够应用设备的本机驱动程序。有关正常工作的设备以及可能的安全隐患的详细信息,请参阅规划使用离散设备分配部署设备

 重要

尽管不是必需的,但如果未启用或不支持单根 I/O 虚拟化 (SR-IOV),则在使用 DDA 部署图形设备时可能会遇到问题。

将设备与 DDA 配合使用有三个步骤:

  1. 为 DDA 配置 VMConfigure the VM for DDA
  2. 从主机分区中卸除设备
  3. 将设备分配给来宾 VM

您可以以管理员身份在 Windows PowerShell 控制台上执行主机上的所有命令。

为 DDA 配置 VMConfigure the VM for DDA

解决方案的第一步是解决对 VM 的 DDA 限制。 使用以下 PowerShell cmdlet 配置 VM 以启用 TurnOffAutomatic Stop Action

PowerShell的复制
Set-VM -Name VMName -AutomaticStopAction TurnOff

图形设备的 VM 准备

如果以某种方式配置 VM,则某些硬件的性能会更好。有关硬件是否需要以下配置的详细信息,请与硬件供应商联系。有关详细信息,请参阅规划使用离散设备分配部署设备以及此博客文章

  1. 使用以下 cmdlet 在 CPU 上启用写入组合:

    PowerShell的复制
    Set-VM -GuestControlledCacheTypes $true -VMName VMName
    
  2. 使用以下 cmdlet 配置 32 位 MMIO 空间:

    PowerShell的复制
    Set-VM -LowMemoryMappedIoSpace 3Gb -VMName VMName
    
  3. 使用以下 cmdlet 配置大于 32 位的 MMIO 空间:

    PowerShell的复制
    Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName VMName
    

     提示

    显示的 MMIO 空间值是为试验单个 GPU 而设置的合理值。如果在启动 VM 后,设备报告与资源不足相关的错误,则可能需要修改这些值。有关如何精确计算 MMIO 要求的详细信息,请参阅规划使用离散设备分配部署设备

从主机分区中卸除设备

按照本节中的说明从主机分区中卸除设备。

安装分区驱动程序(可选)

DDA 使硬件供应商能够为其设备提供安全缓解驱动程序。此驱动程序与来宾 VM 中安装的设备驱动程序不同。由硬件供应商自行决定是否提供此驱动程序。但是,如果他们确实提供了驱动程序,请在从主机分区中卸除设备之前安装它。请与硬件供应商联系,看看他们是否有缓解驱动程序。

如果未提供分区驱动程序,则在卸除期间,必须使用该选项绕过安全警告。有关安全隐患的详细信息,请参阅规划使用离散设备分配部署设备-Force

找到设备的位置路径

需要 PCI 位置路径才能从主机卸除和装载设备。示例位置路径如下所示:.有关查找位置路径的详细信息,请参阅规划使用离散设备分配部署设备PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000)

禁用设备

使用设备管理器或 PowerShell 确保设备处于禁用状态

卸除设备

根据供应商是否提供了缓解驱动程序,必须使用该选项,如下所示:-Force

  • 如果安装了缓解驱动程序,请使用以下 cmdlet:

    PowerShell的复制
    Dismount-VMHostAssignableDevice -LocationPath $locationPath
    
  • 如果未安装缓解驱动程序,请使用以下 cmdlet:

    PowerShell的复制
    Dismount-VMHostAssignableDevice -Force -LocationPath $locationPath
    

将设备分配给来宾 VM

最后一步是告诉 Hyper-V VM 应有权访问设备。指定 VM 的位置、路径和名称。

PowerShell的复制
Add-VMAssignableDevice -LocationPath $locationPath -VMName VMName

在 VM 上完成任务

将设备成功装载到 VM 中后,现在可以启动该 VM 并与设备交互,就像在裸机系统上运行一样。现在可以在 VM 中安装硬件供应商的驱动程序,并且应用程序能够看到硬件。可以通过在来宾 VM 中打开设备管理器并查看硬件是否可用来验证它。

移除设备并将其返回给主机

如果要将设备恢复到其原始状态,必须停止 VM 并发出以下命令:

PowerShell的复制
# Remove the device from the VM
Remove-VMAssignableDevice -LocationPath $locationPath -VMName VMName
# Mount the device back in the host
Mount-VMHostAssignableDevice -LocationPath $locationPath

然后,您可以在设备管理器中重新启用设备,主机操作系统将能够再次与设备交互。

将 GPU 装载到 VM

此示例使用 PowerShell 配置名为 ddatest1 的 VM,以采用制造商 NVIDIA 提供的第一个 GPU 并将其分配到 VM 中。

PowerShell的复制
# Configure the VM for a Discrete Device Assignment
$vm = "ddatest1"
# Set automatic stop action to TurnOff
Set-VM -Name $vm -AutomaticStopAction TurnOff
# Enable Write-Combining on the CPU
Set-VM -GuestControlledCacheTypes $true -VMName $vm
# Configure 32 bit MMIO space
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
# Configure Greater than 32 bit MMIO space
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm

# Find the Location Path and disable the Device
# Enumerate all PNP Devices on the system
$pnpdevs = Get-PnpDevice -presentOnly
# Select only those devices that are Display devices manufactured by NVIDIA
$gpudevs = $pnpdevs | Where-Object {$_.Class -like "Display" -and $_.Manufacturer -like "NVIDIA"}
# Select the location path of the first device that's available to be dismounted by the host.
$locationPath = ($gpudevs | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths).data[0]
# Disable the PNP Device
Disable-PnpDevice -InstanceId $gpudevs[0].InstanceId

# Dismount the Device from the Host
Dismount-VMHostAssignableDevice -Force -LocationPath $locationPath

# Assign the device to the guest VM.
Add-VMAssignableDevice -LocationPath $locationPath -VMName $vm

解决挂载 GPU 的问题

如果已将 GPU 传递到 VM 中,但远程桌面服务或应用程序无法识别 GPU,请检查以下常见问题:

  • 请确保已安装 GPU 供应商支持的驱动程序的最新版本,并且该驱动程序未报告错误。您可以通过在设备管理器中检查设备状态来执行此操作。

  • 确保设备在 VM 中分配了足够的 MMIO 空间。有关详细信息,请参阅 MMIO 空间

  • 请确保在此配置中使用供应商支持的 GPU。例如,某些供应商在传递到 VM 时会阻止其消费者卡工作。

  • 确保应用程序支持在 VM 中运行,并且应用程序同时支持 GPU 及其关联的驱动程序。某些应用程序具有 GPU 和环境的允许列表。

  • 如果在客户机上使用远程桌面会话主机角色或 Windows 多点服务,则必须确保将特定的组策略条目设置为允许使用默认 GPU。使用应用于来宾的组策略对象(或来宾上的本地组策略编辑器)导航到以下组策略项:

    计算机配置 \ 管理员模板 \ Windows 组件 \ 远程桌面服务 \ 远程桌面会话主机 \ 远程会话环境 \ 对所有远程桌面服务会话使用硬件图形适配器

    将“组策略”值设置为“已启用”,然后在应用策略后重新启动 VM。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值