分类: 其它

[家用显卡虚拟化]Hyper-V 配置GPU分区

前言

最近一段时间在搞 EVE Online 的脚本,而由于一个脚本程序在单台电脑上只支持开到最多15个端,故决定使用虚拟机。由于如果没有图形设备的话游戏根本跑不起来,vmware的3D加速功能性能实在堪忧,服务器只装了一张GT710,虚拟化之后完全带不动游戏,直通的方案也是同样的问题:只有一张显卡,没法分给多个虚拟机使用,于是最后决定使用Hyper-V的GPU分区(GPU-PV)功能

 

硬件平台

硬件方面用的是之前捡来的DL360p Gen8,两颗E5-2670 V2,8G x4内存加上一张GT710,算是废物利用了没什么好说的,唯一需要注意的一点是HP的服务器如果PCI-E插槽插了什么非HPE设备的话会导致风扇转速提升(其他品牌的服务器我不清楚,但大概率也会有相同的问题),服务器放在机柜里的话基本不用在意这些,当然了,如果你很在意这个问题并且你和我一样使用的是HP Gen8服务器,可以参考iLO Fan Hack

系统要求

我的虚拟机和宿主机使用的都是Windows 10 21H1版本,理论上20H2和Windows11应该都是可以的,但我没试过,至于判断的标准很简单,win+r运行dxdiag,显示-驱动程序-驱动程序模型:WDDM版本≥2.7即可

ps. Windows server 2019 就是1809版本,故不支持GPU-P功能

但是实际运行来看最好是要保证宿主机和虚拟机的系统版本一致,不然也会报错

安装

根据正常操作流程安装Hyper-V,创建好交换机和虚拟机,关闭虚拟机的检查点功能之后用管理员权限打开PowerShell,运行下面的命令

$vm = "你的虚拟机名称"

Remove-VMGpuPartitionAdapter -VMName $vm
Add-VMGpuPartitionAdapter -VMName $vm
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionVRAM 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionVRAM 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionEncode 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionEncode 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionDecode 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionDecode 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionCompute 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionCompute 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionCompute 10
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm
Start-VM -Name $vm

运行完成之后等待虚拟机开机,连接上之后进入设备管理器查看显卡是否已经能被识别,由于Nvidia屏蔽了家用显卡(AMD应该也屏蔽了,但我手上没有AMD的卡故没有测试)的虚拟化功能,所以此时虽然已经可以在设备管理器看到显卡已被正确识别,但仍然无法安装驱动,必须要手动复制宿主机的以下驱动文件到虚拟机上:

先将

C:\Windows\System32\nvapi64.dll

复制到System32文件夹中,再创建

C:\Windows\System32\HostDriverStore
C:\Windows\System32\HostDriverStore\FileRepository

两个文件夹,在宿主机里打开设备管理器找到显卡-驱动-驱动程序详细信息,拉到最下面

找到一个nv开头的文件夹,在

C:\Windows\System32\DriverStore\FileRepository

文件夹中找到这个文件夹,复制到虚拟机上面刚创建的\FileRepository 文件夹内,重启虚拟机,打开设备管理器可以看到显卡已经可以正确识别并工作了

运行dxdiag,在呈现一栏可以再检查一下设备是否正常运转

ps. 不要使用Hyper-V的增强会话进行连接,增强会话模式会禁用Direct3D 加速,宿主机驱动更新之后要同步把文件再拷贝到虚拟机一次,不然会报错

性能测试

刚弄好还没试过,感官上感觉基本没什么性能损耗

EVE特效全低再64fps左右,宿主机显卡占用到54%,基本是710的性能了

其他问题

为什么不用RemoteFX

RemoteFX由于存在安全漏洞已被Microsoft移除:CVE-2020-1036 KB4570006

并且RemoteFX存在显存分配上的bug,最高256MiB的显存只能拿来跑分

看起来圆滚滚的方糖

查看留言

最近的文章

使用S3 SDK访问华为云OBS

客户要求文件要存到华为云OBS…

2周 之前

使用React和Three.js实现NII格式CT数据的3D可视化预览

引言 医学影像数据的可视化是现…

3月 之前

无HKID激活Stripe香港个人账号

前言 朋友意外的在Github…

1年 之前

大疆V2 fpv眼镜wtfos moonlight串流教程

大家用过大疆V2眼镜的肯定都知…

2年 之前

This website uses cookies.