QuickSync in unprivilegiertem LXC

dekiesel

Member
Apr 30, 2023
48
4
8
Hi,

Ich versuche QuickSync in einem unprivilegiertem LXC ans laufen zu bekommen.

System
Prozessor: Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz
Proxmox: 8.0.4
LXC: Alpine 3.19
Min/Max:
Code:
root@pve:/etc/pve/lxc# ll /dev/dri
total 0
crw-rw-rw-  1 root render 226, 128 Mar 14 09:01 renderD128
drwxr-xr-x  3 root root        100 Mar 14 09:01 .
crw-rw-rw-  1 root video  226,   0 Mar 14 09:01 card0
drwxr-xr-x  2 root root         80 Mar 14 09:01 by-path
drwxr-xr-x 21 root root       8880 Jun 12 09:02 ..
video gid host: 44
render gid host: 103
video gid lxc: 27
render gid lxc: 1000



Was ich versucht habe

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm0
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file,mode=0666
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 27
lxc.idmap: g 27 44 1
lxc.idmap: g 28 100028 972
lxc.idmap: g 1000 103 1
lxc.idmap: g 1001 101001 64535
lxc.hook.pre-start: sh -c "chmod 0666 /dev/dri/renderD128"

  • Max/Min number zum allow der cgroup hinzugefügt.
  • Die groups gemappt (denke ich).
  • renderD128 kann von allen ausgeführt werden 0666.
  • /etc/subgid angepasst
Code:
root:103:1
root:44:1



Momentane Situation
Host: intel_gpu_top funktioniert

LXC:
Code:
ll /dev/dri
total 0
crw-rw-rw-    1 nobody   render    226, 128 Mar 14 09:01 renderD128
crw-rw-rw-    1 nobody   video     226,   0 Mar 14 09:01 card0
drwxr-xr-x    2 root     root            80 Jun 12 12:27 .
drwxr-xr-x    7 root     root           480 Jun 12 12:27 ..
renderD128 und card0 sind den richtigen Gruppen zugeordnet.

Aber: intel_gpu_top funktioniert nicht:
Code:
intel_gpu_top
Failed to initialize PMU! (Permission denied)

Laut den Anleitungen denen ich gefolgt bin wars das. Aber leider sieht mein System das anders. Hat jemand eine Idee?
 
It looks like you're encountering permission issues with intel_gpu_top in your unprivileged LXC container despite setting the correct group mappings and permissions. The Permission denied error often points to insufficient privileges or incorrect mappings. Double-check that the LXC container has the necessary capabilities enabled, and ensure the device files in /dev/dri are accessible. Additionally, try running the container with elevated privileges or using a privileged container to see if that resolves the issue. This might help isolate whether it's a permissions problem or a limitation with unprivileged containers.
 
  • Like
Reactions: dekiesel
So it turns out everything except for inte_gpu_top was set up correctly. QSV works inside the LXC, but intel_gpu_top needs some kernel capabilities (I think CAP_PERFMON?) that the LXC just didn't have.
 
Hi @dekiesel

ich versuche auch quicksync in einem unprivilegierten LXC zum laufen zu bekommen, Ich habe mir auch hierzu das ein oder andere Tutorial durchgelesen, finde es aber schwer die verschiedenen Punkte zusammenzuführen.
Ich habe mein Proxmox auf einem I5 13600 laufen, dessen i915 ich gerne in den LXC mappen möchte.
Die Anleitungen, denen ich gefolgt bin drehten sich hauptsächlich um das Thema des mappings der /dev/dri/xxx als files in die LXC.
Dies habe ich auch gemacht und ich sehe die gemappten files in der LXC. zum Beispiel /dev/dri/renderD128

Nun hatte ich dann auch versucht das Intel Top tool zu starten in der LXC und bekomme die gleiche Fehlermeldung.
Dies führte mich durch die Internetsuche zu deinem Post.
Hier habe ich nun das Thema mit den Gruppen Mapping gelesen und muss gestehen, dass ich das gar nicht verstanden habe.
Ganz speziell das mit den Gruppen Namen und auch mit den IDs in der LXC und/oder dem Proxmox host.

Gibt es hierzu eine zusammenhängende Anleitung die das beschreibt?
Wie genau was wohin gemappt werden und auch was ist der Grund dafür?

Vorrangig möchte ich in dem LXC das hw transcoding für Plex nutzen.
Gibt es hier irgendeine Möglichkeit zu validieren ob quicksync funktioniert im LXC und dem Plex zu Verfügung stehen müsste?

merci und vg
 
Hi @dekiesel

ich versuche auch quicksync in einem unprivilegierten LXC zum laufen zu bekommen, Ich habe mir auch hierzu das ein oder andere Tutorial durchgelesen, finde es aber schwer die verschiedenen Punkte zusammenzuführen.
Ich habe mein Proxmox auf einem I5 13600 laufen, dessen i915 ich gerne in den LXC mappen möchte.
Die Anleitungen, denen ich gefolgt bin drehten sich hauptsächlich um das Thema des mappings der /dev/dri/xxx als files in die LXC.
Dies habe ich auch gemacht und ich sehe die gemappten files in der LXC. zum Beispiel /dev/dri/renderD128

Nun hatte ich dann auch versucht das Intel Top tool zu starten in der LXC und bekomme die gleiche Fehlermeldung.
Dies führte mich durch die Internetsuche zu deinem Post.
Hier habe ich nun das Thema mit den Gruppen Mapping gelesen und muss gestehen, dass ich das gar nicht verstanden habe.
Ganz speziell das mit den Gruppen Namen und auch mit den IDs in der LXC und/oder dem Proxmox host.

Gibt es hierzu eine zusammenhängende Anleitung die das beschreibt?
Wie genau was wohin gemappt werden und auch was ist der Grund dafür?

Vorrangig möchte ich in dem LXC das hw transcoding für Plex nutzen.
Gibt es hier irgendeine Möglichkeit zu validieren ob quicksync funktioniert im LXC und dem Plex zu Verfügung stehen müsste?

merci und vg
Ich benutze selber kodi (bare metal) und kann dir das daher leider nicht beantworten.

Die Gruppen sind ziemlich (finde ich) kompliziert, aber auch nicht unmöglich zu verstehen. Ich versuche es mal, jemand der es besser weiss soll mich gerne korrigieren.

Die Gruppen eines unprivilegierten LXC sind eigentlich Gruppen auf dem Host. Die Gruppen im LXC sind in den Bereich 100000 translatiert.

Wenn du also einer Gruppe im LXC Rechte für irgendetwas auf dem Host geben möchtest dann musst du die Gruppe auf dem Host berechtigen.

Beispiel: Auf dem Host hat die Gruppe video die ID 44. Im LXC hat die video Gruppe die ID 27 (siehe oben). Wenn du möchtest, dass die Benutzer in der LXC video Gruppe den gleichen Zugriff haben wie die User in der Host video Gruppe dann musst du GruppenID 27 auf GruppenID 44 mappen:

lxc.idmap: g 27 44 1
Lies: "Gruppe 27 (im LXC) soll auf Gruppe 44 (auf dem Host) gemappt werden.". Die letzte Zahl besagt, dass genau eine Gruppe gemappt werden soll.


lxc.idmap: g 0 100000 27

Diese regel sagt "Angefangen bei Gruppe 0 (im LXC), mounte 27 Gruppen in den GruppenID-Raum ab 100000" Also 0->100000, 1->100001, 2->100002, usw.

https://github.com/ddimick/proxmox-lxc-idmapper

Dieser Mapper hat mir geholfen die Regeln zu schreiben, du musst aber immernoch selbst rausfinden welche IDs die Gruppen video und render in deinem LXC und auf deinem Host haben
 
  • Like
Reactions: enspiro
vielen Dank @dekiesel
Ich entnehme dem, dass für die Nutzung von quicksync die gleichen Gruppennamen vom LXC auf den Host gemappt werden müssen.
Bzw. nur genau die welche für meinen quicksync Anwendungsfall benötigt werden.

Woher weiß ich welche Gruppen mein LXC für meinen Anwendungsfall benötigt?
Weiß jemand welche Gruppen für meinem Fall in einem PLEX LXC genutzt werden für quicksync?
 
vielen Dank @dekiesel
Ich entnehme dem, dass für die Nutzung von quicksync die gleichen Gruppennamen vom LXC auf den Host gemappt werden müssen.
Bzw. nur genau die welche für meinen quicksync Anwendungsfall benötigt werden.

Woher weiß ich welche Gruppen mein LXC für meinen Anwendungsfall benötigt?
Weiß jemand welche Gruppen für meinem Fall in einem PLEX LXC genutzt werden für quicksync?
So weit ich gelesen habe sind es für QS immer die gleichen Gruppen, video und render. Ich würde damit mal anfangen und schauen ob das nicht schon reicht.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!