跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签 硬件 AI 广场
  1. 主页
  2. 版块
  3. 随便聊聊
  4. Proxmox VE 9.2+ Intel 核显 SR-IOV + AMD Radeon AI PRO R9700 直通+Ubuntu24.04部署实测(二)

Proxmox VE 9.2+ Intel 核显 SR-IOV + AMD Radeon AI PRO R9700 直通+Ubuntu24.04部署实测(二)

已定时 已固定 已锁定 已移动 随便聊聊
intelr9700ubuntu
1 帖子 1 发布者 79 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Magic629M 离线
    Magic629M 离线
    Magic629
    德高望重
    编写于 最后由 编辑
    #1

    Intel 核显 SR-IOV 部署与稳定性测试报告(远程娱乐办公)


    Arrow Lake-S(Core Ultra 7 265K)在 Proxmox VE 9.2 上成功切分 4 个 VF

    项目 内容
    PVE 主机 192.168.67.251(节点名 R9700,PVE 9.2.18,内核 7.0.14-16-pve)
    核显 00:02.0 Intel Arrow Lake-S [Intel Graphics],8086:7d67
    目标 切分 4 个 VF 供虚拟机做硬件编解码加速
    结果 部署成功,稳定性测试全部通过

    2b1403cc-3c53-4f6c-94ad-b78c1fd0b519-image.jpeg


    一、结果速览

    # 验收项 结果
    1 VF 数量 sriov_numvfs = 4(00:02.1 ~ 00:02.4)
    2 PF 保持宿主管理 00:02.0 → i915
    3 VF 绑定 vfio-pci 4 个 VF 全部 vfio-pci
    4 xe 驱动屏蔽 未加载
    5 DKMS 模块生效 2026.08.12.1-sriov,max_vfs=4,enable_guc=3
    6 GuC/HuC 固件 宿主与 guest 均正常
    7 宿主无 VF 渲染节点泄漏 仅 card0/renderD128
    8 guest 内识别 VF guest 看到 Intel 设备并生成 renderD128
    9 VAAPI 硬解可用 Intel iHD 26.1.2,H264/HEVC/VP9/AV1 全支持
    10 实际硬转码 1080p/15s → HEVC 仅 1.35 秒(≈11× 实时)
    11 并发压力测试 4 路并发 180 秒,0 错误
    12 多 VF 并发 两个 VF 同时转码,6/6 输出合法
    13 宿主稳定性 0 个失败单元,0 条新内核错误
    14 llama.cpp 未受影响 active、NRestarts=0、推理返回正常
    15 R9700 直通 仍为 vfio-pci,rocm-smi 正常

    二、最终生效的配置

    2.1 内核启动参数

    /etc/default/grub:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=4 module_blacklist=xe"
    

    重启后 /proc/cmdline 实际生效值:

    BOOT_IMAGE=/boot/vmlinuz-7.0.14-16-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=4 module_blacklist=xe
    

    2.2 VF 自动创建

    /etc/sysfs.conf(由 sysfsutils 在开机时执行):

    devices/pci0000:00/0000:00:02.0/sriov_numvfs = 4
    

    2.3 VF 绑定 vfio-pci(避免 VF 泄漏到宿主机)

    /etc/udev/rules.d/99-i915-vf-vfio.rules:

    # Bind Intel iGPU VFs (00:02.1 - 00:02.4) to vfio-pci; PF (00:02.0) stays on i915
    ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:02.[1-4]", ATTR{vendor}=="0x8086", ATTR{device}=="0x7d67", DRIVER!="vfio-pci", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/pci/devices/$kernel/driver/unbind; echo vfio-pci > /sys/bus/pci/devices/$kernel/driver_override; modprobe vfio-pci; echo $kernel > /sys/bus/pci/drivers/vfio-pci/bind'"
    

    该规则经实测生效:部署后宿主机 /dev/dri 仅有 card0 与 renderD128,4 个 VF 均未生成渲染节点,证明 VF 已彻底对宿主机隐藏。

    注意:你原有的 /etc/modprobe.d/vfio.conf(R9700 的 ids=1002:7551,1002:ab40)与 /etc/modules-load.d/vfio.conf 均未被改动,AMD 直通配置完好。

    2.4 DKMS 驱动

    i915-sriov-dkms/2026.08.12.1, 7.0.14-16-pve, x86_64: installed (Original modules exist)
    模块版本:2026.08.12.1-sriov
    

    2.5 运行时状态(部署后实测)

    sriov_totalvfs = 4
    sriov_numvfs   = 4
    
    00:02.0  Kernel driver in use: i915       ← PF 留在宿主机
    00:02.1  Kernel driver in use: vfio-pci   ← 可分给 VM
    00:02.2  Kernel driver in use: vfio-pci
    00:02.3  Kernel driver in use: vfio-pci
    00:02.4  Kernel driver in use: vfio-pci
    
    宿主机 /dev/dri: card0  renderD128          ← 仅 PF,VF 未泄漏
    

    三、执行过程记录

    阶段 操作 结果
    0 备份全部待改配置 备份目录 /root/sriov-rollback-20260911-202344
    1 安装 build-essential dkms sysfsutils pciutils wget + proxmox-headers-7.0.14-16-pve dkms 3.2.2 / gcc 14.2 / 头文件就位
    2 安装 i915-sriov-dkms_2026.08.12.1_amd64.deb DKMS 编译成功,installed
    3 写入 grub / sysfs.conf / udev 规则并 update-grub + update-initramfs grub.cfg 已确认含新参数
    4 关闭 VM 102(guest 内 systemctl poweroff) 干净卸载,避免非正常关机
    5 重启宿主机 停机约 10 秒,50 秒后恢复
    6 验证 VF / 驱动 / GuC 15 项检查全部通过
    7 VM 102 自动启动(onboot=1) llama 约 20 秒载入模型后 health=ok
    8 创建临时测试 VM,guest 内装 DKMS 硬解验证通过
    9 删除测试 VM、清理下载镜像 最终状态确认

    四、稳定性测试详情


    4.1 单 VF 功能验证(guest:Ubuntu 26.04 LTS,内核 7.0.0-31-generic)

    guest 内 VF 以 01:00.0 出现,由 DKMS i915 接管:

    i915 0000:01:00.0: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
    i915 0000:01:00.0: HuC firmware PRELOADED
    i915 0000:01:00.0: [drm] VT-d active for gfx access
    [drm] Initialized i915 1.6.0 for 0000:01:00.0 on minor 1
    

    关键对比:使用内核自带 i915 时,VF 探测直接失败:
    i915 0000:01:00.0: [drm] *ERROR* Unrecognized display IP version 1023.255; disabling display.
    装入 DKMS 模块后该错误完全消失,renderD128 正常生成。

    VAAPI 能力(vainfo 实测)

    Driver version: Intel iHD driver for Intel(R) Gen Graphics - 26.1.2
    VAProfileH264High      : VAEntrypointVLD / EncSlice
    VAProfileHEVCMain      : VAEntrypointVLD / EncSlice
    VAProfileHEVCMain10    : VAEntrypointVLD / EncSlice
    VAProfileVP9Profile0-3 : VAEntrypointVLD / EncSlice
    VAProfileAV1Profile0   : VAEntrypointVLD / EncSlice
    VAProfileJPEGBaseline  : VAEntrypointVLD / EncPicture
    VAProfileMPEG2Simple/Main : VAEntrypointVLD
    

    硬转码实测:1080p / 15 秒 / H.264 源 → HEVC 4 Mbps

    real  0m1.353s        ≈ 11 倍实时
    输出校验:codec_name=hevc, 1920x1080 
    

    4.2 并发压力测试(4 路并发,180 秒)

    在 guest 内启动 4 个并发 VAAPI 转码循环持续 180 秒,同时每 20 秒采样宿主状态:

    监控项 结果
    i915 设备数 恒定 5(PF + 4 VF),无掉卡
    VF 驱动绑定 4 个 VF 全程稳定为 vfio-pci,无漂移
    i915 FLR/reset 计数 恒定 38 次(来自此前 VM 启停,压力期间零新增)
    新内核错误 0 条
    运行中 VM 102、200 均正常
    宿主机失败单元 0

    测试结束后 guest 侧检查:

    • 4 个输出文件全部生成(证明真实计算发生)
    • /dev/dri 仍有 card0 card1 renderD128
    • VF 仍绑定 i915
    • 无内核错误(仅有 KVM 环境固有的 shpchp / snd_hda 无害提示)

    4.3 双 VF 并发验证

    给测试 VM 追加第二个 VF(00:02.2)后:

    guest 内识别到两个 Intel 设备:01:00.0 与 02:00.0
    /dev/dri: renderD128(VF1)+ renderD129(VF2),两者 VAAPI 能力完全相同
    

    两个 VF 同时转码(各 3 轮):

    VF 迭代 1 迭代 2 迭代 3
    renderD128(VF1) 2.14 s 2.20 s 1.81 s
    renderD129(VF2) 1.98 s 1.52 s 1.76 s
    • 6/6 输出均为合法 hevc,1920,1080
    • 并发期间宿主机与 guest 均零错误
    • 证明多 VF 分区可同时工作、互不干扰

    4.4 llama.cpp 回归验证(核心约束结果)

    检查项 部署前 部署后
    服务状态 active active
    /health {"status":"ok"} {"status":"ok"}
    NRestarts 0 0
    推理功能 正常 实测返回回复
    R9700 驱动 vfio-pci vfio-pci
    R9700 温度/功耗 32 °C / 11 W 32 °C / 15 W

    你的 llama.cpp 服务器配置与数据未被修改一个字节,仅经历了一次计划内的优雅重启。


    五、部署中遇到的问题与解决(仅供参考)

    # 问题 原因 解决
    1 测试 VM 把 EFI 盘当成了系统盘 自动探测卷名时匹配到了 disk-0(efidisk)而非 disk-1(OS) 改用解析 unused0 条目取 OS 盘
    2 测试 VM 一直连不上 Ubuntu cloud 镜像首启耗时 5 分 27 秒(Startup finished in 5min 27s) 耐心等待;二次启动仅需数十秒
    3 SSH 密码登录被拒 cloud 镜像自带 60-cloudimg-settings.conf: PasswordAuthentication no 离线注入 SSH 公钥(更可靠)
    4 guest 内 VF 报 Unrecognized display IP version 1023.255 内核自带 i915 不支持 ARL VF 在 guest 内同样安装 DKMS 模块(官方要求)
    5 vainfo 报 va_openDriver() returns -1 未安装 Intel 媒体驱动 安装 intel-media-va-driver-non-free
    6 普通用户无法访问 renderD128 ubuntu 用户不在 video/render 组 usermod -aG video,render

    第 4、5、6 条是每台要用核显 VF 的 VM 都要做的


    六、当前完整配置并加以备份

    6.1 备份位置

    /root/sriov-rollback-20260911-202344/
    ├── grub.default          # 原始 /etc/default/grub
    ├── grub.cfg              # 原始 /boot/grub/grub.cfg
    ├── modprobe.d/           # 原始 /etc/modprobe.d
    ├── modules-load.d/       # 原始 /etc/modules-load.d
    ├── udev-rules.d/         # 原始 /etc/udev/rules.d
    └── BASELINE.txt          # 部署前完整状态快照
    

    6.2 回滚步骤(如需)

    # 1) 恢复 grub
    cp /root/sriov-rollback-20260911-202344/grub.default /etc/default/grub
    
    # 2) 删除 SR-IOV 相关配置
    rm -f /etc/sysfs.conf
    rm -f /etc/udev/rules.d/99-i915-vf-vfio.rules
    
    # 3) 卸载 DKMS 模块(恢复内核自带 i915)
    dpkg -P i915-sriov-dkms
    dkms remove i915-sriov-dkms/2026.08.12.1 --all 2>/dev/null
    
    # 4) 应用并重启
    update-grub && update-initramfs -u -k all && reboot
    

    6.3 紧急回滚(启动异常时)

    在 GRUB 菜单(GRUB_TIMEOUT=5,会显示 5 秒)按 e 编辑启动项,在 linux 行末尾追加:

    module_blacklist=i915,xe
    

    按 F10 启动即可进入系统后再修配置。


    七、后续给其他虚拟机分配 VF 的步骤

    现有 4 个可用 VF(00:02.1 ~ 00:02.4),每个给一台 VM,永远不要直通 PF(00:02.0)。

    7.1 PVE 侧

    在 Web 界面:VM → 硬件 → 添加 → PCI 设备 → Raw Device → 选 0000:00:02.x,勾选 PCI-Express,不要勾选 Primary GPU(显示保持 virtio-gpu / SPICE)。

    命令行等价:

    qm set <VMID> --hostpci0 0000:00:02.1,pcie=1
    

    7.2 Guest 侧(三件事,缺一不可)

    # ① 安装同一个 DKMS 模块(否则 VF 探测失败)
    sudo apt install -y build-essential dkms "linux-headers-$(uname -r)" wget
    wget -O /tmp/i915-sriov-dkms_2026.08.12.1_amd64.deb \
      "https://github.com/strongtz/i915-sriov-dkms/releases/download/2026.08.12.1/i915-sriov-dkms_2026.08.12.1_amd64.deb"
    sudo dpkg -i /tmp/i915-sriov-dkms_2026.08.12.1_amd64.deb
    sudo reboot
    
    # ② 安装 Intel VAAPI 驱动(否则 vainfo 报错)
    sudo apt install -y intel-media-va-driver-non-free libva-drm2 libva2 vainfo ffmpeg
    
    # ③ 把使用用户加入 video / render 组(否则无权限访问 renderD128)
    sudo usermod -aG video,render <用户名>
    # 重新登录或重启生效
    

    7.3 验证

    ls -l /dev/dri/                       # 应出现 renderD128
    vainfo --display drm --device /dev/dri/renderD128
    ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
           -hwaccel_output_format vaapi -i in.mp4 -c:v hevc_vaapi out.mp4
    

    guest 内核版本要求:DKMS 2026.08.12.1 要求内核 6.17 ~ 7.1。若 VM 用 Ubuntu 24.04 默认内核 6.8,需改用旧版 DKMS(2025.07.22),或升级 guest 内核到 7.0(本机的 VM 102 就是 7.0.0-31-generic,可直接用当前版本)。


    八、注意事项与后续维护

    1. 内核升级会让模块失效。 每次 PVE 升级内核后必须重装/重编译 DKMS:

      apt install -y proxmox-headers-$(uname -r)
      dkms autoinstall     # 或重装 deb
      

      否则核显会退回内置驱动、4 个 VF 全部消失,依赖 VF 的 VM 会启动失败。建议固定内核或把 dkms autoinstall 加入升级流程。

    2. 4 个 VF 共享同一颗物理核显。 它们共用执行单元与媒体引擎,媒体引擎在 VF 间隔离并不完全。轻中度办公/学习硬解没问题,但不要期待 4 路 4K 同时转码线性扩展。

    3. VF 只做渲染/编解码,不驱动物理 HDMI/DP。 显示必须走 virtio-gpu + SPICE/RDP/noVNC。

    4. 永远不要直通 PF(00:02.0),否则其余所有 VF 一起崩溃。

    5. 模块仍属实验性(项目自述 "highly experimental")。本次测试在本机的硬件上表现稳定,但 Intel 官方对 Arrow Lake 核显 SR-IOV 仍是"不支持"态度,这条路依赖社区模块。

    6. 若想扩到 5~7 个 VF:把 i915.max_vfs=4 改为 7、/etc/sysfs.conf 改为 7,并相应扩展 udev 规则的 [1-7],重启即可(硬件上限 7)。

    7. 测试 VM 已删除,下载的 cloud 镜像也已清理,未留下多余磁盘占用。


    九、结论

    部署成功,稳定性验证通过。

    • 核显已成功切分为 4 个可独立使用的 VF,每个都能提供完整的 VAAPI 硬件编解码能力(含 AV1)。
    • 单 VF 转码性能约 11 倍实时;4 路并发压力测试 180 秒零错误;双 VF 并发互不干扰。
    • 宿主全程稳定:0 失败单元、0 条新增内核错误、VF 绑定无漂移、无新增 FLR/reset。

    086f426a-3d2e-4153-b917-6f4bc028ad4a-image.jpeg

    1 条回复 最后回复
    2

    你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

    厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

    有了你的建议,这篇帖子会更精彩哦 💗

    注册 登录
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组