微软黑科技-hyper-v虚拟机gpu虚拟化
时间:2023-06-25 11:39:02 | 来源:网站运营
时间:2023-06-25 11:39:02 来源:网站运营
微软黑科技-hyper-v虚拟机gpu虚拟化:微软将会在下一版windows10 (wddm2.9驱动模型)中加入wsl2的gpu虚拟化功能
下面这篇博客中提到,gpu虚拟化GPU Paravirtualization这个功能早已在Windows Defender Application Guard, Windows Sandbox ,Hololens 2 emulator中使用,下一步是将该功能增加到wsl2中
这个黑科技到底是啥玩意儿?
Windows Defender Application Guard,这是虚拟化运行浏览器和office的功能,相信一般人从来没用过。
Windows Sandbox,windows沙盒,我曾经在1903用过一次,该功能是通过rdp协议连接到一个hyper-v虚拟机的,感觉显示很卡,之后再也没用过。网上也有很多人反映这是不好用的鸡肋。
Hololens 2 模拟器,这是开发者用的,一般人应该也没见过
windows 10x模拟器,也是开发用的,一般人应该也没见过
这些小众玩意儿都藏着gpu虚拟化黑科技,这个黑科技的本质就是在hyper-v虚拟机中共用主机的wddm驱动。也就是隐藏着一块显卡。
经过几个月的搜索资料和实验,对这个黑科技有了一定的了解。
1.GPU Paravirtualization是wddm2.4的功能,从windows insider 17074(1803 pre release)就开始支持,而不是微软博客声称的wddm2.5才支持该功能
2.wddm2.4的系统中,主机和客户机必须是相同的内核版本,否则虚拟显卡加载错误
3.wddm2.5及以上的系统中,主机和客户机可以是不同的系统,比如主机使用1809,客户机可以是1809及以上的版本
4.wddm2.7以前的系统,客户机运行d3d独占模式进入全屏的应用会引起各种主机蓝屏,但有规避方式
5.gpu虚拟化的性能接近原生,我最近录制了一些虚拟机3d性能的视频,可以参考:
最后总结一下hyper-v开启gpu虚拟化的步骤:
1.管理员模式运行powershell
2.$vm = "我的虚拟机名字"
3.Add-VMGpuPartitionAdapter -VMName $vm
4.Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000
5.Set-VM -GuestControlledCacheTypes $true -VMName $vm
6.Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
7.Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm
8.虚拟机开机,从主机上复制C:/Windows/System32/DriverStore/FileRepository目录到虚拟机C:/Windows/System32/HostDriverStore/
此时虚拟机上看到是这样的目录结构:C:/Windows/System32/HostDriverStore/FileRepository
备注:HostDriverStore这个目录要自己创建,FileRepository里面本质上只要有主机显卡驱动就可以了,这里偷懒直接复制整个目录,如果只想复制主机显卡驱动目录,可以通过设备管理器查看主机加载的显卡驱动目录
9.重启虚拟机,查看虚拟机设备管理器显卡,运行dxdiag查看显卡特性