查看: 13407|回复: 6
收起左侧

[讨论] Hyper-V设置GPU Partition(GPU Passthrough,显卡直通)

[复制链接]
a27573
发表于 2023-1-28 23:31:31 | 显示全部楼层 |阅读模式
本帖最后由 a27573 于 2023-1-29 00:07 编辑

顾名思义就是把显卡直接通到虚拟机内,这样虚拟机内就可以使用显卡来加速游戏/物理模拟器,使用CUDA等等,并且还可以对显卡进行划分
使用场景可以是对破解版游戏的安全性有顾虑,或者不希望在宿主机加载会扫盘/影响性能等的反外{过}{滤}挂驱动,把游戏在虚拟机里运行,或者是想用虚拟机分割显卡性能,用串流软件多人同时玩等等

老技术了,我看好像没人发就来发一下
而且我在使用的过程中也遇到了一些问题,因此这篇就当抛砖引玉,看看能不能摇到大佬

成品效果图:

首先确保你使用的是Win10 20H1以上的系统

可以使用自动化脚本:https://github.com/grrminator/Easy-GPU-PV

但是自动化脚本有个问题:必须要新建一个虚拟机,不能用原有的,而且对ISO的格式有要求,Windows Media Creation Tool创建的ISO不能用

所以我自己是手动搞的,也不难

先创建一个第二代虚拟机,安装的系统的版本最好和宿主机一样,注意要禁用检查点

然后打开管理员模式的Powershell
用Get-VMPartitionableGpu(Win11是Get-VMHostPartitionableGpu)列出可以分区的GPU,记住InstancePath
如果不确定对应关系的话去设备管理器里点开显卡看详细信息里的设备实例路径

运行
  1. $vm = "你的虚拟机的名字"
  2. Remove-VMGpuPartitionAdapter -VMName $vm
  3. Add-VMGpuPartitionAdapter -VMName $vm -InstancePath "刚才记住的路径"
  4. Set-VM -GuestControlledCacheTypes $true -VMName $vm
  5. Set-VM -LowMemoryMappedIoSpace 3GB -VMName $vm
  6. Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm
复制代码

然后把宿主机C:\Windows\System32\DriverStore\FileRepository\里对应的显卡驱动文件夹(比如nv_dispi.inf_amd64)复制到虚拟机的C:\Windows\System32\HostDriverStore\FileRepository\里,版本较低的系统可能还要把system32下面一些文件也复制到虚拟机system32里面,比如N卡就是nv开头的所有文件,具体可以用dxdiag导出到txt,设备管理器也可以看

然后重启就可以了
如果要限制虚拟机对显卡资源的使用的话,可以试试看
  1. Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1
  2. Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionVRAM 11
  3. Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionVRAM 10
  4. Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1
  5. Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionEncode 11
  6. Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionEncode 10
  7. Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1
  8. Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionDecode 11
  9. Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionDecode 10
  10. Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionCompute 1
  11. Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionCompute 11
  12. Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionCompute 10
复制代码
具体数字参考刚才Get-VMHostPartitionableGpu的输出自行调整

然后,由于Windows的RDP的性能限制,安装一个串流软件
目前我用的是Parsec+VBCable(传递声音)+usbmidd(虚拟屏幕)

参考阅读:
https://learn.microsoft.com/en-u ... s-devices-using-dda
https://www.bilibili.com/read/cv15539810
https://github.com/grrminator/Easy-GPU-PV
https://forum.level1techs.com/t/ ... -with-hyperv/172234


然后下面是我自己的一些见解和发现,不一定对,也可能有更好的解决方法:
1、自动脚本用的iso必须内置install.wim而不是install.esd
2、自动脚本在安装软件前会先ping google,这个要改才能用

3、一些软件检测虚拟机是靠检测CPUID的特定位,因此开启嵌套虚拟化,在虚拟机中启用Hyper-V可以骗过去,软件会误以为标志位是虚拟机中的Hyper-V设置的,比如原神
4、有些教程和脚本禁用了Hyper-V Video,但这会导致OpenGL出问题,因此,不要使用Parsec的VDD,使用usbmidd,如果手上有HDMI诱骗线是最好的

5、虚拟机内无法安装Geforce Experience

但是
目前我碰到了一些麻烦的问题,希望大佬能指导一下
1、我测试了OpenGL,DX12,性能损失都在可接受的范围内,但DX11性能损失非常明显,3DMark中物理分数特别低,实际游戏中,原神帧率在10-20帧徘徊,CPU和GPU占用却一直很低,且调低画质后明显无改善,而糖豆人帧率只是勉强能玩(这俩都是DX11)
2、只有在启用独显直连之后Parsec才能正常工作,在混合模式下,按照官方文档强制Parsec在核显上运行也不行
3、尝试其他串流软件,sunshine+moonlight,moonlight连接后黑屏无响应,Steam Link黑屏
4、刚才提到的限制资源占用的命令,似乎只有显存限制有用,且Get-VMGpuPartitionAdapter结果中CurrentPartitionCompute总是0,CurrentPartitionEncode总是1000000000,无法达到18446744073709551615

我目前用的是y9000x 2022 3060+Win11 22H2

@YorkWaugh 看乃以前整过VMWare,不知乃对这方面有没有什么了解?

评分

参与人数 3人气 +11 收起 理由
YorkWaugh + 3 版区有你更精彩: )
BushYan + 3 版区有你更精彩: )
danger + 5 精品文章

查看全部评分

wheyu。。。
发表于 2023-1-29 09:38:00 | 显示全部楼层
这个话题挺好的
tao8023yy
发表于 2023-1-29 09:55:41 来自手机 | 显示全部楼层
脚本是开源的针不戳。
★心空☆
发表于 2023-3-4 13:20:01 来自手机 | 显示全部楼层
关注一下
sanwoodwind
发表于 2023-3-7 19:56:15 | 显示全部楼层
可以直连了啊,下次试试。谢谢楼主。
test2333
发表于 2023-3-18 12:38:52 | 显示全部楼层
个人觉得,微软对hyper-v的显卡虚拟化不太上心,最初的remotefx3D,有图形界面以供选择虚拟显卡的显存大小和要虚拟的显卡;虽然显存最大只能选1G,性能受限,且虚拟机的设备管理器里只显示有remotefx adapter这一个显卡,和VMware的虚拟显卡类似,但这个虚拟化方案里显卡的3个dx加速都是可用的。后来2020年微软以安全为由砍掉了这个功能,转用gpu partition,也就是楼主所介绍的方案,虚拟显卡设置的gui被砍掉了,虽然虚拟出来的显卡跑分虽然能达到宿主机的90%+,但是dx加速只有一个能用,实际效果不太好。
a27573
 楼主| 发表于 2023-4-6 21:10:17 | 显示全部楼层
test2333 发表于 2023-3-18 12:38
个人觉得,微软对hyper-v的显卡虚拟化不太上心,最初的remotefx3D,有图形界面以供选择虚拟显卡的显存大小 ...

对的,但是那个安全问题真的很严重。。。
虚拟机Passthrough首先要保证虚拟机的安全性,不然就用虚拟机的意义就没了

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-22 15:23 , Processed in 0.131727 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表