Memo
Check the VA-API codecs
PVE 8 + LXC + Docker + Jellyfin,直通 GPU 启用硬件加速的方法 在 LXC 的配置文件(/etc/pve/lxc/<LXC_ID>.conf)中增加以下内容: `conf lxc.cgroup.devices.allow: a lxc.cap.drop: lxc.cgroup2.devices.allow: c 226:0 rwm...
PVE 8 + LXC + Docker + Jellyfin,直通 GPU 启用硬件加速的方法
在 LXC 的配置文件(/etc/pve/lxc/<LXC_ID>.conf)中增加以下内容:
lxc.cgroup.devices.allow: a
lxc.cap.drop:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.autodev: 1
lxc.hook.autodev: sh -c "chmod -R 666 /dev/dri/card*; chmod -R 666 /dev/dri/render*"
配置解释:
lxc.cgroup.devices.allow: a允许容器访问所有设备lxc.cap.drop:继承主机lxc.cgroup2.devices.allow: c 226:0 rwm允许容器访问 /dev/dri/card0 (226:0),权限读、写、创建lxc.cgroup2.devices.allow: c 226:128 rwm允许容器访问 /dev/dri/renderD128 (226:128),权限读、写、创建lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file绑定设备目录lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file绑定设备目录lxc.autodev: 1: 启用自动设备创建。容器启动时会自动创建 /dev 目录下的设备文件。lxc.hook.autodev: sh -c "chmod -R 666 /dev/dri/card*; chmod -R 666 /dev/dri/render*"在自动设备创建后执行的钩子脚本。这个脚本将 /dev/dri/card* 和 /dev/dri/render* 设备文件的权限设置为 666,即所有用户都可以读写这些设备。
最后两行的配置很重要。
然后可以根据 Jellyfin 的文档 配置 AMD GPU 硬解了。这些操作需要在 LXC 中运行,下面是主要操作:
根据下面的示例修改 docker-compose.yml
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin
user: 1000:1000
group_add:
- "122" # Change this to match your "render" host group id and remove this comment
network_mode: 'host'
volumes:
- /path/to/config:/config
- /path/to/cache:/cache
- /path/to/media:/media
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
重新启动 docker 容器:
docker compose up -d
验证硬件是否可用:
# Check the VA-API codecs
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
# Check the Vulkan runtime status
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device vulkan
如果上面的命令都能正确返回内容(如附图所示),那么就没得问题,可以在 Jellyfin 配置硬件加速为 VAAPI。
最后,尝试让开始 Jellyfin 转码或处理缩略图之类的任务,然后在 LXC 中观看 GPU 占用情况。
先安装 sudo pacman -Syu radeontop,然后执行:
radeontop
前面几行有占用变化就是有在硬件加速。