在Proxmox VE 7.1 中开启vGPU_unlock,实现显卡虚拟化 (自定义vgpu参数)

一:了解NVIDIA vGPU

下图是Nvidia vGPU的原理。在宿主机上安装vGPU驱动,使用nvidia vGPU管理器控制vGPU,随后创建多个mdev设备,也就是vGPU,用于直通到虚拟机,虚拟机使用Nvidia 驱动用于驱动vGPU。有点类似gvt-g。不过这里最重要的是NVIDIA vGPU管理器 。

在宿主机上安装好nvidia vgpu驱动之后,会有2个服务。

  • nvidia-vgpud.service
  • nvidia-vgpu-mgr.service

简单的解释下这2个服务在vgpu启动时的作用:

1、在使用vGPU卡的时候,正常逻辑是,开机之后,nvidia-vgpud 服务会查询内核中所有已安装的 GPU,并检查 vGPU 功能。如果找到支持 vGPU 的 GPU,则 nvidia-vgpu 会创建一个 MDEV 设备,系统会创建 /sys/class/mdev_bus 目录。

2、将这些设备分配给 VM,当 VM 启动时,它将打开 MDEV 设备。nvidia-vgpu-mgr 此时会使用 ioctl 与内核进行通信。当 nvidia-vgpu-mgr 询问 GPU 是否支持 vGPU 时,vgpu会回答是,随后尝试初始化 vGPU 设备。

目前vgpu_unlock项目只支持Time-sliced技术,也就是单GPU实例性能会动态分配。如一张P4,如果只有一个GPU实例,那么多获得接近100%的性能,同时2个GPU实例,会分别获得1/2的性能。

根据Nvidia vgpu限制,单GPU实例,最少1g显存。如P4 8G,最多有8个1G 显存的GPU实例同时运行

注意,Nvidia-vGPU授权是驱动授权,不是硬件授权。vgpu_unlock 这个项目并不能破解Nvidia-vGPU授权。

它这是使消费卡能够支持vGPU 技术,而不是破解了授权。需要授权,还是需要去nvidia购买!

 

 

二:了解vgpu_unlock原理

正如我们上说vgpu的启动流程。当然我们使用消费卡的时候,nvidia-vgpud这个服务会检测卡的类型,如果是消费卡,自然不会创建mdev设备。如果使用vgpu_unlock,此脚本会拦截nvidia-vgpud的调用,然后欺骗它,这是一张vGPU卡,快产生mdev设备信息吧!

将mdev设备直通给虚拟机,启动的时候,vgpu_unlock又会拦截nvdia-vgpu-mgr服务,告诉它,GPU支持vGPU,快初始化设备吧!

三:vGPU_unlock支持的显卡

 

四:准备环境

4.1: 配置软件源

  • rm /etc/apt/sources.list
  • rm /etc/apt/sources.list.d/*
  • echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free">>/etc/apt/sources.list
  • echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free">>/etc/apt/sources.list
  • echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free">>/etc/apt/sources.list
  • echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free">>/etc/apt/sources.list
  • echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscription">>/etc/apt/sources.list

4.2 安装必要的软件包

  • apt update && apt install dkms git build-essential pve-kernel-5.15 pve-headers-5.15 dkms cargo jq uuid-runtime -y

安装mdevctl

  • wget -P /opt/ http://ftp.br.debian.org/debian/pool/main/m/mdevctl/mdevctl_0.81-1_all.deb
  • dpkg -i /opt/mdevctl_0.81-1_all.deb

4.3 配置内核

  • echo vfio >> /etc/modules
  • echo vfio_iommu_type1 >> /etc/modules
  • echo vfio_pci >> /etc/modules
  • echo vfio_virqfd >> /etc/modules
  • echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
  • echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
  • update-initramfs -k all -u

4.4 配置引导

  • #编辑grub,请不要盲目改。根据自己的环境,选择设置
  • nano /etc/default/grub
  • #在里面找到:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet"
  • #然后修改为:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
  • #如果是amd cpu请改为:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
  • #更新引导
  • update-grub

4.5 安装驱动

 

重启主机,待重启之后,验证系统内核是否在5.15

  • root@pve:~# uname -r
  • 5.15.30-2-pve

如出现5.15则说明正确。

 

验证是否开启iommu

  • 出现有如下iommu group说明成功
  • root@pve3:~# dmesg |grep iommu
  • [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.11.22-7-pve root=/dev/mapper/pve-root ro quiet iommu=pt intel_iommu=on
  • [ 0.075784] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.11.22-7-pve root=/dev/mapper/pve-root ro quiet iommu=pt intel_iommu=on
  • [ 0.352588] iommu: Default domain type: Passthrough (set via kernel command line)
  • [ 1.373583] pci 0000:00:00.0: Adding to iommu group 0
  • [ 1.373592] pci 0000:00:02.0: Adding to iommu group 1
  • [ 1.373605] pci 0000:00:14.0: Adding to iommu group 2
  • [ 1.373613] pci 0000:00:17.0: Adding to iommu group 3
  • [ 1.373623] pci 0000:00:1c.0: Adding to iommu group 4
  • [ 1.373637] pci 0000:00:1d.0: Adding to iommu group 5
  • [ 1.373647] pci 0000:00:1d.2: Adding to iommu group 6
  • [ 1.373656] pci 0000:00:1d.3: Adding to iommu group 7
  • [ 1.373675] pci 0000:00:1f.0: Adding to iommu group 8
  • [ 1.373683] pci 0000:00:1f.2: Adding to iommu group 8
  • [ 1.373691] pci 0000:00:1f.3: Adding to iommu group 8
  • [ 1.373699] pci 0000:00:1f.4: Adding to iommu group 8
  • [ 1.373707] pci 0000:00:1f.6: Adding to iommu group 9
  • [ 1.373717] pci 0000:01:00.0: Adding to iommu group 10
  • [ 1.373726] pci 0000:03:00.0: Adding to iommu group 11
  • [ 1.373735] pci 0000:05:00.0: Adding to iommu group 12
  • [ 1.656483] intel_iommu=on
展开

验证nouveau是否未启用

  • 无输出,代表未启用
  • root@pve3:~# lsmod|grep nouveau
  • root@pve3:~#

下载驱动

  • #将驱动下载至/opt目录
  • wget https://mirrors.apqa.cn/d/vGPU/vgpu_unlock/drivers/NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm-custom.run -P /opt

给驱动添加可执行权限

  • chmod +x /opt/NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm-custom.run

以dkms方式安装驱动

  • sh -c /opt/NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm-custom.run --dkms

运行命令后,会提示是否用dkms方式安装,选择yes,回车继续

出现xorg告警,忽略

询问是否启用32位兼容库。这里可选可不选

开始安装驱动

进度条走完就ok,可能会有点时间。

五:配置vgpu_unlock

5.1 编译

  • cd /opt && git clone https://github.com/mbilker/vgpu_unlock-rs.git
  • cd /opt/vgpu_unlock-rs
  • cargo build --release
  • mkdir /etc/systemd/system/{nvidia-vgpud.service.d,nvidia-vgpu-mgr.service.d}
  • echo -e "[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so" > /etc/systemd/system/nvidia-vgpud.service.d/vgpu_unlock.conf
  • echo -e "[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so" > /etc/systemd/system/nvidia-vgpu-mgr.service.d/vgpu_unlock.conf
  • systemctl daemon-reload

重启主机。

六:验证

重启之后,使用nvidia-smi 确认是否如下,显示GPU信息。

  • root@pve:~# nvidia-smi
  • Wed Apr 27 23:33:10 2022
  • +-----------------------------------------------------------------------------+
  • | NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.2 |
  • |-------------------------------+----------------------+----------------------+
  • | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
  • | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
  • | | | MIG M. |
  • |===============================+======================+======================|
  • | 0 P106-090 Off | 00000000:05:00.0 Off | N/A |
  • | 31% 35C P0 28W / 75W | 11MiB / 3071MiB | 0% Default |
  • | | | N/A |
  • +-------------------------------+----------------------+----------------------+
  • +-----------------------------------------------------------------------------+
  • | Processes: |
  • | GPU GI CI PID Type Process name GPU Memory |
  • | ID ID Usage |
  • |=============================================================================|
  • | No running processes found |
  • +-----------------------------------------------------------------------------+
展开

使用mdevctl types 验证是否出现mdev设备

  • root@pve:/opt/vgpu_unlock-rs# mdevctl types
  • 0000:05:00.0
  • nvidia-156
  • Available instances: 12
  • Device API: vfio-pci
  • Name: GRID P40-2B
  • Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=12
  • nvidia-215
  • Available instances: 12
  • Device API: vfio-pci
  • Name: GRID P40-2B4
  • Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=12
  • nvidia-241
  • Available instances: 24
  • Device API: vfio-pci
  • Name: GRID P40-1B4
  • Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=24
  • nvidia-283
  • Available instances: 6
  • Device API: vfio-pci
  • Name: GRID P40-4C
  • Description: num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=4096x2160, max_instance=6
  • nvidia-284
  • Available instances: 4
  • Device API: vfio-pci
  • Name: GRID P40-6C
  • Description: num_heads=1, frl_config=60, framebuffer=6144M, max_resolution=4096x2160, max_instance=4
  • nvidia-285
  • Available instances: 3
  • Device API: vfio-pci
  • Name: GRID P40-8C
  • Description: num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=4096x2160, max_instance=3
  • nvidia-286
  • Available instances: 2
  • Device API: vfio-pci
  • Name: GRID P40-12C
  • Description: num_heads=1, frl_config=60, framebuffer=12288M, max_resolution=4096x2160, max_instance=2
展开

七:开始使用

7.0 认识原生vGPU和vGPU-rs

原生vGPU就是在系统内识别就是一个vGPU设备,需要安装vGPU驱动,需要授权

vGPU-rs是改写了vGPU逻辑信息,在系统里面识别出来是一个专业卡,安装专业卡的驱动。这样不需要授权了,但缺失了nevnc。需要做一些配置(如下)。

7.1 配置vgpu参数(可选配置。使用原生vgpu,可以忽略)

  • #创建配置文件夹
  • mkdir /etc/vgpu_unlock
  • #创建vgpu配置文件
  • touch /etc/vgpu_unlock/profile_override.toml

将vgpu配置信息写入/etc/vgpu_unlock/profile_override.toml每次启动一个vgpu设备,vgpu-mgr服务会自动读取此文件,所以修改此文件,是下次启动生效。

  • [profile.nvidia-18]
  • num_displays = 1
  • display_width = 1920
  • display_height = 1080
  • max_pixels = 2073600
  • cuda_enabled = 1
  • frl_enabled = 0
  • framebuffer = 12348030976
  • pci_id = 0x17F011A9
  • pci_device_id = 0x17F0

参数说明:

  • [profile.nvidia-18]这是针对nvidia-18 vgpu型号的配置。若需要配置的vgpu型号为nvidia-46,则需要改成nvidia-46。见7.2节
  • num_displays  最大显示器数量
  • display_width = 1920
  • display_height = 1080
  • max_pixels = 2073600 这3个是虚拟显示器的分辨率,max_pixels是长宽的乘积
  • cuda_enabled = 1是否开启cuda
  • frl_enabled = 0 是否限制帧数,0为不限制
  • framebuffer = 显存,请查看下面的补充
  • pci_id =  SDID SVID的组合
  • pci_device_id = DID 设备id

7.1.1 framebuffer

framebuffer意思是vgpu管理程序设定的vgpu显存。

通过这个网址换算在线文件大小(bit,bytes,KB,MB,GB,TB)转换换算-BeJSON.com

 

注意:vgpu会默认占用128M,所以如果要改显存,请将结果减去128M再去换算

例如,你期望显存为2048M,所以就用2048-128=1920

更新:新版本占用64M,所以-64,而不是128

进入上面的网址,进行换算。bytes是我们要的结果

换算结果为2013265920

注意!非必要情况,请勿修改显卡,否则无法初始化mdev设备。

 

7.1.2 pci_id和pci_device_id

在正常情况下,将vgpu设备直通给VM,会带有vgpu的设备id,这样在系统内,会识别这个vgpu为p40-1a或者rt6000-1a之类的型号。随后安装nvidia-vgpu驱动,会将vgpu设备作为一个vgpu设备来使用,如进行授权管理

正因为vgpu卡和普通的消费卡,核心相同,只是驱动不同,导致了功能有所不一样,所以有了vgpu_unlock项目,让消费卡也能支持vgpu。

这是宿主机层面的。

在虚拟机层面来讲。vgpu的核心,其实和显卡的核心一样,那么从理论上,将vgpu的设备id改成消费卡的id,那么也应该能够驱动。

然而,由于消费卡某些专业功能不能使用,所以建议将vgpu的设备id改成专业卡的id。

配置文件中的pci_id = 0x17F011A0pci_device_id = 0x17F0就是修改vgpu的设备信息。这些参数,vgpu管理程序会读取这些信息,重写vgpu配置,更加的稳定和真实。

pci_device_id:是vgpu所属的设备id

这项属性应该从此处获得:https://devicehunt.com/view/type/pci/vendor/10DE/

正因我们的目的,是改写vgpu信息,使其在虚拟机内,能被识别为专业卡,从而绕过vgpu的驱动限制,无需授权。所以,需要下载专业卡的驱动。

所以,我们应该根据你的物理卡的核心来配置这个设备id。

例如,你有一张1080来使用vgpu,从上面的网站,我们可以看到1080的核心代号为,

那么你应该选择核心为GP104GL的卡。如下,所以你应该选择P5000或者P4000。所以就去nvidia去下载P5000或者P4000的驱动。

所以如果你要用1080,那么你的pci_device_id = 0x1BB0。但是这个id可能打驱动,会识别不了硬件。只需要换一个,如果P5000的ID不行,换P4000的再试。

pci_id: SDID的SVID的组合

pci_id 和pci_device_id用下面一张图就可以看得懂

SDID是二级制造商设备识别码,可以和DID一样

SVID是二级制造商识别码。可以和VID一样

那么如果你不知道这些信息,你可以直接写pci_id = 0x1BB010DE

7.2 vgpu类型

当我们使用mdevctl types 会出现很多信息。其中就包括了vgpu的型号

  • root@pve2:/opt/vgpu_unlock# mdevctl types
  • 0000:01:00.0
  • nvidia-156
  • Available instances: 0
  • Device API: vfio-pci
  • Name: GRID P40-2B
  • Description: num_heads=4, frl_config=45, framebuffer=2048M ,
  • max_resolution=5120x2880, max_instance=12
  • nvidia-215
  • Available instances: 0
  • Device API: vfio-pci
  • Name: GRID P40-2B4
  • Description: num_heads=4, frl_config=45, framebuffer=2048M,
  • max_resolution=5120x2880, max_instance=12

这些是什么意思呢?

举个例子

  • nvidia-257
  • Available instances: 4
  • Device API: vfio-pci
  • Name: GRID RTX6000-2Q
  • Description: num=heads=4, frl_config=60,
  • framebuffer=2048MB,max_resolution=7680x4320, max_instance=4

 

  • nvidia-257 -->vgpu 类型
  • Available instances --->可用的设备数
  • Name--->显示名
  • Description--->描述,framebuffer 显存,frl 应该是最大 fps,分辨率,最多的设备

 

其中 GRID RTX6000-2Q 是 mdev 的名字,RTX6000--显卡名,2--2G 显存,Q 代表 vWS

关于最后一位字母,如下

A = Virtual Applications (vApps)

B = Virtual Desktops (vPC)

C = AI/Machine Learning/Training (vCS or vWS)

Q = Virtual Workstations (vWS)(性能最好)

每种不同类型的GPU卡,都会存在不同的vgpu类型。例如P4,有P4-1B,例如RTX6000-1B之类的

总体不变的是上面所说的规则:

按照显存分,如P4-1B,P4-1Q,都属于1g显存。

按照功能分,如P4-1B,vPC设备,P4-1Q,vDWS设备。需要不同的许可证。

在虚拟化层面,我们只关心vgpu的型号,也就是nvidia-257

在配置vgpu的时候,我们就需要选择正确的型号。

如上图所示,我们需要通过mdevctl types的输出,找到我们需要的vgpu型号,通过profile_override.toml配置参数,再去web界面配置vgpu,才能完成vgpu部署。

 

7.4.1 修改虚拟机配置(必须操作)//PVE  7.2-7无需此操作

添加下面行到虚拟机conf中

  • args: -uuid 00000000-0000-0000-0000-000000000100

注意的是,uuid最后的值需要改成你的vmid。如果你的vmid为3333,那么你应该改成

args: -uuid 00000000-0000-0000-0000-000000003333

如果你的vmid是121,那么你应该改成

args: -uuid 00000000-0000-0000-0000-000000000121

注意,uuid的长度和格式是不能变的,根据自己的vmid,替换尾数。

 

7.4.2 修改PVE的代码,以略过上述步骤,简化部署。//PVE  7.2-7之后无需修改,官方以添加此功能

先备份一下

  • cp /usr/share/perl5/PVE/QemuServer.pm /usr/share/perl5/PVE/QemuServer.pm.back

使用vim或者nano或者其他你熟悉的编辑器,打开/usr/share/perl5/PVE/QemuServer.pm

找到下面部分。

  • push @$cmd, $kvm_binary;
  • push @$cmd, '-id', $vmid;
  • my $vmname = $conf->{name} || "vm$vmid";
  • push @$cmd, '-name', $vmname;
  • push @$cmd, '-no-shutdown';
  • my $use_virtio = 0;

小技巧,可以通过搜索-no-shutdown 快速定位

 

-no-shutdown这一行下面添加2行

  • my $vmuuid = PVE::SysFSTools::generate_mdev_uuid($vmid);
  • push @$cmd, '-uuid' , $vmuuid;

最终结果如下

保存修改,

使用命令重启一下pvedaemon

systemctl restart pvedaemon.service

如果有报错,或者重启失败,那肯定是你没修改对。建议仔细看看

这样的好处是,系统自动给虚拟生成UUID,就不需要手动添加虚拟机配置文件了。直接在web上添加vgpu即可。

注意:没有测试过与其他mdev设备是否会冲突。如gvt-g。请自行测试。

升级之后,需要重启修改。

如果要回退,请执行

cp /usr/share/perl5/PVE/QemuServer.pm.back /usr/share/perl5/PVE/QemuServer.pm

 

 

 

7.5 创建虚拟机

使用vgpu建议使用Windows 21h1以上的系统。

7.5.1 创建虚拟机并安装系统

创建一个虚拟机,seabios和ovmf都可以,芯片组必须是Q35!除非你Q35确实不能用,则换成i440fx。此时不要直通显示设备。

参考配置如下

注意!

vgpu在系统中,是作为一个3d设备,所以需要一个额外的显示卡,也就是不要把显卡设置成无!

 

创建好系统之后,请在系统中,开启远程功能。如远程桌面,todesk,vnc,向日葵,parsec等。

这是因为Win10此类系统,会联网自动安装驱动,如果直通了vgpu,且系统安装了驱动,系统会呈现双显示器状态,可能导致PVE网页虚拟机控制台黑屏,或者是副屏状态,导致无法操作虚拟机。如下面

如果你不慎掉入这个的坑,请关闭虚拟机,分离vgpu,开启远程功能。

7.5.2 直通vgpu设备

在面板,点击添加PCI设备,勾选所有功能和PCIE(vGPU是一个3d设备,请不要勾选主GPU)。在Mdev类型中选择vgpu设备。选哪种,请参考上文。

最终虚拟机配置,像这样:

现在你可以开启虚拟机。如果是严格按照上面教程操作,那么应该不会有意外发生。

如果你看到有下面提示:

  • kvm: -device vfio-pci,sysfsdev=/sys/bus/pci/devices/0000:05:00.0/00000000-0000-0000-0000-000000003561,id=hostpci0,bus=ich9-pcie-port-1,addr=0x0: warning: vfio 00000000-0000-0000-0000-000000003561: Could not enable error recovery for the device
  • TASK OK

不要在意,这只是个提示,最终结果都是TASK OK。

 

7.5.3 安装显卡驱动

显卡驱动需要低于或者等于vGPU宿主机驱动。否则代码43。当然也不能太老。

例如本文460.73,所以用下面的453.10是完全可以的!要使用473,那一定会出现问题!

至于在哪里下驱动?我可以吐槽吗?当然是nvidia去下载咯,

https://www.nvidia.com/Download/Find.aspx?lang=en-us

选择模拟之后的卡的驱动,建议选择DCH驱动程序

 

我已经将比较兼容的驱动,放置在网盘中

https://foxi.buduanwang.vip/pan/foxi/Virtualization/vGPU/guestdrivers/

 

请按照自己的情况下载驱动。

若在系统中提示驱动和硬件不兼容,无法安装,请更换did

 

 

7.6 访问虚拟机

正常安装好驱动,那么不出意外,你的设备管理器,会看到模拟成专业卡的vgpu设备

屏幕也会有双屏

由于vgpu属于虚拟的,无法输出到物理显示器,所以应该通过远程协议访问。推荐使用parsec进行串流,但是parsec需要编码,如果你的显卡没有编码器,则不能用parsec,例如P106。

对于双屏,建议设置仅为vgpu屏幕。下面是通过系统内部的vnc(不是pve的novnc控制台),进行鲁大师跑分的截图。

再次强调!要玩主机游戏啥的,请使用串流软件。用rdp不行的。

九:排错

对于排错这部分,需要你掌握KVM知识、vgpu知识以及Linux基础。

如最开始所说,vgpu有2个服务。

可以通过2个命令查看nvidia-vgpu日志

  • journalctl -u nvidia-vgpud
  • journalctl -u nvidia-vgpu-mgr

如vgpu初始化部分

  • Apr 28 00:15:58 pve nvidia-vgpu-mgr[2534]: notice: vmiop_env_log: nvidia-vgpu-mgr daemon started
  • #创建vgpu设备
  • Apr 28 00:20:17 pve nvidia-vgpu-mgr[2534]: VgpuStart {
  • uuid: {00000000-0000-0000-0000-000000003561},
  • config_params: "vgpu_type_id=46",
  • unknown_410: [75, 13, 0, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 5, 0, 0],
  • }
  • #默认的vgpu配置
  • Apr 28 00:20:17 pve nvidia-vgpu-mgr[3528]: notice: vmiop_env_log: vmiop-env: guest_max_gpfn:0x0
  • ...skipping...
  • num_displays: 4,
  • display_width: 5120,
  • display_height: 2880,
  • max_pixels: 17694720,
  • frl_config: 60,
  • cuda_enabled: 1,
  • ecc_supported: 1,
  • mig_instance_size: 0,
  • multi_vgpu_supported: 0,
  • pci_id: 0x1b3811e8,
  • pci_device_id: 0x1b38,
  • framebuffer: 0x38000000,
  • mappable_video_size: 0x400000,
  • framebuffer_reservation: 0x8000000,
  • encoder_capacity: 0x64,
  • bar1_length: 0x100,
  • blob: [71, 82, 73, 68, 32, 80, 52, 48, 45, 49, 81, 0, 96, 1, 0, 0, 8, 80, 244, 134, 2, 179, 255, 255, 0, 0, 0, 0, 96, 1, 0>
  • license_type: "NVIDIA RTX Virtual Workstation",
  • }
  • #读取/etc/vgpu_unlock/profile_override.toml,并覆写vgpu配置
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Applying profile nvidia-46 overrides
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/num_displays: 4 -> 1
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/display_width: 5120 -> 1920
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/display_height: 2880 -> 1080
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/max_pixels: 17694720 -> 2073600
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/cuda_enabled: 1 -> 1
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/pci_id: 456659432 -> 472977896
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/pci_device_id: 6968 -> 7217
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: Patching nvidia-46/frl_enabled: 1 -> 0
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: op_type: 0xa0810115 failed.
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): Setting mappable_cpu_host_aperture to 10M
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): gpu-pci-id : 0x500
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): vgpu_type : Quadro
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): Framebuffer: 0x38000000
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): Virtual Device Id: 0x1c31:0x11e8
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: ######## vGPU Manager Information: ########
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: Driver Version: 460.73.01
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: op_type: 0x2080012f failed.
  • #在VM中获取vgpu信息
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): Cannot query ECC status. vGPU ECC support will be disabled.
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): Init frame copy engine: syncing...
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): vGPU migration disabled
  • Apr 28 12:42:18 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: display_init inst: 0 successful
  • Apr 28 12:42:49 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: ######## Guest NVIDIA Driver Information: ########
  • Apr 28 12:42:49 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: Driver Version: 453.10
  • Apr 28 12:42:49 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: vGPU version: 0x70001
  • Apr 28 12:42:49 pve nvidia-vgpu-mgr[26264]: notice: vmiop_log: (0x0): Current max guest pfn = 0x17cd58!
  • lines 477-521/521 (END)
展开

[/loginshow]

附:笔记本也支持

 

上一篇 麒麟系统虚拟机ESXi迁PVE后识别不到磁盘(其它linux类似)
下一篇 pve直通设备的虚拟机关机后pve重新驱动