PVE 下核显开启 sriov 后,多个虚拟机不能同时用核显么?

205 天前
 zer

先说下虚拟机的配置

虚拟机 1 是 Win11 ,用虚拟屏幕开了 sunshine 串流
虚拟机 2 是 Ubuntu ,Docker 里安装了 Jellyfin ,可以转码视频
2 台虚拟机都是 ovmf(uefi)+i440fx ,并且添加了不一样的 sriov 核显。

以上 2 个虚拟机单独使用是没问题的,问题表现为:

我观察转码时,显示的核显负载也不高。但此时 Win11 串流就是不行(转圈圈、屏幕卡死),sunshine 的 troubleshooting 也看不到报错。求教有遇到过此类问题的朋友,如何解决该问题?

intel_gpu_top -d sriov

2259 次点击
所在节点    NAS
11 条回复
ericww
205 天前
alderlake-s 的编码器和视频增强单元的调度都是独占的,不是时间分片。同时只能被一个 vm 调用。
esee
205 天前
@ericww 还有这种说法呀
zer
205 天前
@ericww 和处理器内置的 Multi-Format Codec Engines 数量有关么?如果使用 UHD770 的 CPU ,内置 2 个 Multi-Format Codec Engines ,是不是可以同时并发 2 个转码调度
ericww
205 天前
@zer 具体要看任务,优先级是解码>编码>处理,gen12 是 2 个编解码和 1 个视频增强,jellyfin 一个任务就占用两个编解码了,其他就只能等待任务结束。
iamqk
205 天前
实测 N150 上跑了 6 个 win10 ,都是 sriov 的核显。就开了两个远程 win10 ,edge 开了 b 站,可以同时解码视频
zer
205 天前
@iamqk 你使用 rdp 远程的吗?能否试试用 sunshine 远程,看下 2 个以上能不能同时串流
iamqk
205 天前
@zer 你这个可能需要编码吧,我那个是纯解码
wuyadaxian
205 天前
Jellyfin 转码问题,转码时独占 gpu 的 encode 和 decode 。
导致其他需要用 gpu 的机器被中断冻结。
实测 7 台 win11 虚拟机能同时使用 gpu 资源,同时看 youtube ,gpu 解码。
wuyadaxian
205 天前
@zer 可以,这边 windows11 ,7 台虚拟机。可以同时处理。12700 核显。
parsec 远程( h.264 or h.265 视频流),gpu 编码。
+虚拟机内 youtube 视频,gpu 解码。
wuyadaxian
205 天前
我查看了一下资料,发现不仅是 Jellyfin ,所有的媒体服务器包括 plex/emby 都会出现 op 的这个问题。

我一开始怀疑是 encode 和 decode 并发的问题。
我们知道 nvidna 的消费级显卡有 NVENC encoding sessions 的限制,3 个/5 个/8 个。

查了一下 intel gpu 的情况。there is no concurrent encoding sessions limit on Intel iGPU and ARC dGPU.
intel 显卡并没有并发限制。

那么可能就是 QSV ,VA-API 等驱动问题。
不过我最近没有时间研究。op 如果有兴趣可以去查查相关的代码。
zer
205 天前
@wuyadaxian https://github.com/strongtz/i915-sriov-dkms/issues/254#issuecomment-2655468421
我按照这个 issue 里的方法,给 Jellyfin 指定了个自定义的 ffmpeg 脚本,加上了 `-readrate 2` 的参数。
现在 jellyfin 转码性能虽然下降到了 50fps ,但是同时开着的 sunshine 串流不会卡死了,处于可用的状态。
算是暂时解决了此问题吧😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1111020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX