Intel N100 SR-IOV Install on PVE

系统环境 PVE 6.8.4-2

硬件 Intel N100

要求使用SR-IOV使虚拟机能使用PVE host上的N100显示能力。

1,安装SR-IOV 功能

添加 pve-header的源

echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
#如果需要换全部源,可参考这里

安装必要的软件

apt install -y build-* pve-headers-6.8.4-2-pve git dkms sysfsutils
#6.8.4-2 换成PVE当前安装的版本

安装DKMS

DKMS github https://github.com/strongtz/i915-sriov-dkms

git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms
dkms add .
dkms install -m i915-sriov-dkms -v 2024.08.09 --force
#此处版本号可能有变化,请按git发布页面
dkms status

出现 i915-sriov-dkms/2024.08.09, 6.8.4-2-pve, x86_64: installed 即为安装成功

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]

即为安装成功,N100的PCI设备序号为 00:02.0

添加内核参数

intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 到 GRUB_CMDLINE_LINUX_DEFAULT 中

GRUB_CMDLINE_LINUX_DEFAULT = "quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"

更新 grub update-grub

添加虚拟化显卡

echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
#最多7个,根据需求设置

reboot

dmesg | grep i915 看到若干个VFs 说明安装成功。

警告:虽然理论上可以虚拟7个虚拟GPU,但实际上强烈建议需要几个虚拟几个。如果只需要一台虚拟机使用该显示核心,请改成“1”个。N100一类的CPU,原则上不应该虚拟超过3个,否则容易崩溃。

2,安装Guest

Guest示例:Microsoft Windows

安装过程从略。配置要求:

CPU:Host模式,核心4(与N100的物理设计一致)

OMVF bios,Q35平台,先不要安装PCIE设备,先安装Windows。安装完毕系统后,关闭虚拟机。

添加PCIE设备:

0000:00:02.1

设备需要选择0000:00:02.1或之后的,0000:00:02.0 不是虚拟显卡,而是宿主机上的显卡位置,因此不能选择。(如果你虚拟了多个VFS, 序号从1开始,如果只有一个VFS,选择1即可)

选择主GPU,如果不必要,不要选择多余的功能。

修改Windows的PCI设备序号

nano /etc/pve/qemu-server/[虚拟机编号].conf

#例如Windows虚拟机的序号是101
则命令为:
nano /etc/pve/qemu-server/101.conf

在配置文件中添加以下内容,目的是在Windows中,将PCI设备序号设置为02.0(实际上刚才填写的是02.1,但是那是在PVE中的序号,如果不修改,可能Windows会找不到设备)

args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2

此处可参考这里

此时说明显示核心已经成功被虚拟机使用

进入系统后能看到显卡已识别,再去设备管理器中看到显示功能正常。

现在实验从虚拟机中调用显示核心,给一些负载。使用ffmpeg进行转码:

ffmpeg -hwaccel qsv -hwaccel_output_format qsv -i test.wmv -c:v h264_qsv -b:v 6000k -c:a aac -strict experimental -b:a 192k test-output.mp4

可以看到ffmpeg成功使用了SR-IOV虚拟化的显示芯片进行转码。

发表回复

您的电子邮箱地址不会被公开。