2026年10月16日星期五

共享核显给hyper-v 中的虚拟机以提升虚拟机显示性能

首先配置好hyper-v组件并安装好虚拟机,示例命名:VM1
1、宿主机以管理员方式启动 PowerShell,查看显卡信息,输入命令:
Windows11:
Get-VMHostPartitionableGpu
Windows10:
Get-VMPartitionableGpu

2、Name中的就是我们可以调用的显卡,需要复制一下里面的内容做备用,示例:
PS C:\WINDOWS\system32> Get-VMHostPartitionableGpu
Name                          : \\?\PCI#VEN_8086&DEV_A7A8&SUBSYS_3E7419E5&REV_04#3&11583659&0&10#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV
ValidPartitionCounts          : {32}

3、添加vGPU到虚拟机中
环境变量讲解:vm=虚拟机名变量 gpu=显卡Name
宿主机以管理员方式启动 PowerShell,根据虚拟机名及显卡Name编辑并输入以下自定义命令:
$vm = "VM1"
$gpu_path = "\\?\PCI#VEN_8086&DEV_A7A8&SUBSYS_3E7419E5&REV_04#3&11583659&0&10#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV"


4、添加 GPU 分区:
Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $gpu_path

修改以下参数**必须关闭虚拟机,开机状态执行直接报错**。
为虚拟机设置 高位内存映射 I/O 空间(High‑MMIO 空间),大小设置为 32GB(PCI 寻址地址范围,不占用宿主机物理内存):
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm

5、设置分区资源(示例值):
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

6、是否允许虚拟机内部修改内存页的缓存属性:(默认false,Hypervisor 接管全部缓存控制)
Set-VM -GuestControlledCacheTypes $false -VMName $vm
Set-VM -GuestControlledCacheTypes $true -VMName $vm

设置完成后,先重启宿主机,再开启虚拟机。
到了这一步,虚拟机中已经可以看见显卡信息,但是还没驱动,不用急,继续往下,先关闭虚拟机。

7、把宿主机显卡驱动文件复制到虚拟机相应位置,设置完成后,重启虚拟机。
(显卡不同,文件名就不同)文件复制到虚拟机C:\Windows\System32\HostDriverStore\FileRepository
HostDriverStore\FileRepository  虚拟机没有这个文件夹需要自己创建

8、取消分配 GPU 分区:
$vm = "VM1"
Remove-VMGpuPartitionAdapter -VMName $vm