在Linux KVM中配置vGPU
最近搞到了NVIDIA Cloud Gaming的vGPU驱动, 但是貌似不支持ESXi, 只有KVM和XenServer驱动. XenServer的激活感觉太烦了, 于是选择试试KVM. 以下示例系统为Ubuntu20.04
开启IOMMU
编辑 /etc/default/grub
文件中 GRUB_CMDLINE_LINUX
字段的内容为:
GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"
若系统以Legacy模式启动, 输入命令: grub-mkconfig -o /boot/grub/grub.cfg
若系统以UEFI模式启动, 输入命令: grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
安装KVM和相关组件
apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager mdevctl
输入以下命令, 将用户添加到对应用户组:usermod -aG libvirt $USER && usermod -aG kvm $USER
安装vGPU主机驱动
示例: chmod 744 NVIDIA-Linux-x86_64-510.73.06-vgaming-vgpu-kvm.run && ./NVIDIA-Linux-x86_64-510.73.06-vgaming-vgpu-kvm.run
创建vGPU设备
1.使用 lspci | grep NVIDIA
命令查看可用GPU的总线位置
2.使用 nvidia-smi vgpu -s
命令查看受支持的vGPU类型
3.使用 nvidia-smi vgpu -c
命令查看可创建的vGPU类型
4.查看对应vGPU设备的路径
grep -l "vgpu-type" /sys/class/mdev_bus/domain\:bus\:slot.function/mdev_supported_types/nvidia-*/name
5.查看对应vGPU设备的可创建数量
cat /sys/class/mdev_bus/domain\:bus\:slot.function/mdev_supported_types/nvidia-*/available_instances
6.为vGPU设备生成通用唯一标识符(UUID)并创建对应的实例, 并使mdev设备文件持久化
uuidgen
echo "uuid" > /sys/class/mdev_bus/domain\:bus\:slot.function/mdev_supported_types/nvidia-*/create
mdevctl define --auto --uuid uuid
若是在支持SR-IOV的GPU(Ampere架构及以后)上创建mdev设备, 需使用以下命令为sysfs文件系统中的物理GPU启用虚拟功能:
/usr/lib/nvidia/sriov-manage -e domain:bus:slot.function
额外选项: 输入下方命令以暂时禁用帧速率限制器(FRL)和启用 Unified Memory
echo "frame_rate_limiter=0, enable_uvm=1, enable_debugging=1, enable_profiling=1" > /sys/bus/mdev/devices/uuid/nvidia/vgpu_params
向虚拟机添加vGPU设备
创建虚拟机后, 使用 virsh edit vm-name
命令编辑虚拟机的XML文件, 并添加以下字段
<device>
...
<hostdev mode='subsystem' type='mdev' model='vfio-pci'>
<source>
<address uuid='uuid'/>
</source>
</hostdev>
</device>
安装vGPU客户端驱动并获取对应许可
Windows系统安装驱动后使用 nvidia-smi -q | findstr "Product License"
命令查询vGPU设备型号和是否已获取许可
删除vGPU设备
echo "1" > /sys/class/mdev_bus/domain\:bus\:slot.function/uuid/remove
mdevctl undefine --uuid uuid
test
大佬 NVIDIA-Linux-x86_64-510.73.06-vgaming-vgpu-kvm.run 这个可以分享下嘛~
NVIDIA-Linux-x86_64-510.73.06-vgaming-vgpu-kvm.run 您好 这个驱动求分享个 下载的可以码
你好 我通过这个创建uuid后
echo "uuid" > /sys/class/mdev_bus/domain:bus:slot.function/mdev_supported_types/nvidia-*/create
再次重启服务器 发现创建的uuid的设备没有了 这个有没什么办法可以解决 就是重启后也还在的
[root@vgpu ~]# ls -l /sys/bus/mdev/devices/
total 0
上面写了,通过mdevctl define使uuid持久化
而且再次生成uuid它提示 未找到匹配路径: /sys/class/mdev_bus//mdev_supported_types/nvidia-/name
你好 我按照你说的 mdevctl define使uuid持久化 大部分机器解决了 但是有个别几台是p40显卡 重启后uuid就没有了 然后再重启几次就有了 这个好奇怪 求求大佬有没思路解决
root@gk001:~# ls -l /sys/bus/mdev/devices/
total 0