在Proxmox VE 7.1 中开启vGPU_unlock,实现显卡虚拟化
时间:2023-02-27 10:31 来源:未知 作者:IT
一:了解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支持的显卡
请务必参考下面列表显卡,如果是专业卡,请和下面同代核心就行。
不支持30系!!!!!!!!!!
点击查看显卡列表
四:准备环境
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 安装驱动
本内容需要 登录 后才能查看
附:笔记本也支持
(责任编辑:IT)
一:了解NVIDIA vGPU下图是Nvidia vGPU的原理。在宿主机上安装vGPU驱动,使用nvidia vGPU管理器控制vGPU,随后创建多个mdev设备,也就是vGPU,用于直通到虚拟机,虚拟机使用Nvidia 驱动用于驱动vGPU。有点类似gvt-g。不过这里最重要的是NVIDIA vGPU管理器 。 在宿主机上安装好nvidia vgpu驱动之后,会有2个服务。
简单的解释下这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支持的显卡请务必参考下面列表显卡,如果是专业卡,请和下面同代核心就行。 不支持30系!!!!!!!!!!
点击查看显卡列表
四:准备环境4.1: 配置软件源
4.2 安装必要的软件包
安装mdevctl
4.3 配置内核
4.4 配置引导
4.5 安装驱动
本内容需要 登录 后才能查看
附:笔记本也支持 (责任编辑:IT) |