Intel nuc 12 struggling with transcoding one 4k stream

Server Version#: 1.29.1.6316
Player Version#: Try in version 2.05 ps4, LG webos plex last version and web browser directly

Hi,
I have an intel nuc 12 with i5 processor, intel Iris xe graphic card, 32gb 3600mhz and a m.2 2280 pci 4.0 . I am running Ubuntu 22.04 and installed the intel graphic card drivers by following the intel guide.

Hardware transcoding is up and running. However I tried to transcode to 1080 (20mbs) a copy of battle royal 4k with a bitrate of 87364kbps, video frame rate 24p, hdr and my transcoding speed is very very poor 0.5 , 0.6. Please see images attached, I believe that my machine should run multiple 4k in parallel but its struggle with only one transcoding :-S any ideas?





Plex Media Server Logs_2022-10-31_23-33-49.zip (1.2 MB)

You’re burning PGS subtitles into the output images.

An i5 can’t keep up with that at 86 Mbps input rate

To confirm, disable subtitles and retest

As FYI, you’re using the SNAP package from the Ubuntu store.

This will have limitations as well.

Recommend you consider uninstalling and purging that package
then downloading from Plex.tv/downloads and installing 1.29.2 from there with
dpkg -i filename.deb on the command line.

Thank you for your speedy answer. Will do both - reinstalling plex natively and disable pgs. I let you know.

Thanks

@ChuckPa So I have removed the snap version and installed the deb packaged fixed permissions and all for the plex user. Also tried with and without pgs burning and naturally there was a difference! With pgs burning I get a 0.6-0.8 speed and buffering; without pgs I get a speed between 1.6 - 3.4. Isn´t this still slow for the hardware I have “alder lake i5” (NUC12WSKI50Z) ?

I also tried other movies with similar results (matrix has a bitrate of 64Mbps). Another question is the HW transcoding on demand? I noticed that if I have pgs enable then is pushing HW acceleration but if I am not using pgs is not using HW. (see example of the matrix)

Screenshot 2022-11-01 at 10.24.38
Screenshot 2022-11-01 at 10.22.36

All problems solved.

  1. Install plex in a container passing the /dev/dri (but could be as suggest native deb package)
  2. Upgrade to Ubuntu 22.10 (kernel 5.19.0-23-generic)
  3. Install intel drivers as in the tutorial above (but do not change to kernel 5.17 that will give you problems with HW in these nuc 12)
  4. PGS subtitles are a pain for very high bitrate - disable them and use srt or similar
  5. I also install tautulli (helps with the details)

Finally I have all my services containerised so I leave the yaml file for the community. I use an external 3TB Western digital usb 3.0 for many years without failing and keep the container volumes there. Hence, if I reinstall my server from scratch it just takes me literally 10min to have everything up and running :wink:

Docker-compose yaml file

version: '3'
services:
  wetty:
    image: wettyoss/wetty
    hostname: wetty
    container_name: wetty
    restart: always
    ports:
      - "3000:3000"
    environment:
      SSHHOST: '' #host IP address
      SSHPORT: 22
  sonarr:
    image: linuxserver/sonarr
    hostname: sonarr
    container_name: sonarr
    restart: always
    ports:
      - "8989:8989"
    environment:
      - TZ=Europe/Stockholm 
      - PGID=1004
      - PUID=1000
    volumes:
      - /media/western/sonarr/config:/config:rw
      - /media/western/plex/tvshows:/media/western/plex/tvshows:rw
      - /media/western/sabnzbd/complete/tvshows:/tvshows:rw
      - /media/western/plex/reality:/media/western/plex/reality:rw
  radarr:
    image: linuxserver/radarr
    hostname: radarr
    container_name: radarr
    restart: always
    ports:
      - "7878:7878"
    environment:
      - TZ=Europe/Stockholm 
      - PGID=1004
      - PUID=1000
    volumes:
      - /media/western/radarr/config:/config:rw
      - /media/western/plex/movies:/media/western/plex/movies:rw
      - /media/western/sabnzbd/complete/movies:/movies:rw
  bazarr:
    image: linuxserver/bazarr
    hostname: bazarr
    container_name: bazarr
    restart: always
    ports:
      - "6767:6767"
    environment:
      - TZ=Europe/Stockholm 
      - PGID=1004
      - PUID=1000
    volumes:
      - /media/western/bazarr/config:/config:rw
      - /media/western/plex/movies:/media/western/plex/movies:rw
      - /media/western/plex/tvshows:/media/western/plex/shows:rw
      - /media/western/plex/reality:/media/western/plex/reality:rw
  sabnzbd:
    image: linuxserver/sabnzbd
    hostname: sabnzbd
    container_name: sabnzbd
    restart: always
    ports:
      - "8090:8090"
      - "8080:8080"
    environment:
      - TZ=Europe/Stockholm 
      - PGID=1004
      - PUID=1000
    volumes:
      - /media/western/sabnzbd/config:/config:rw
      - /media/western/sabnzbd/incomplete:/incomplete:rw
      - /media/western/sabnzbd/complete/others:/others:rw
      - /media/western/sabnzbd/complete/documentaries:/documentaries:rw
      - /media/western/sabnzbd/complete/learning:/learning:rw
      - /media/western/sabnzbd/complete/movies:/movies:rw
      - /media/western/sabnzbd/complete/tvshows:/tvshows:rw
  transmission:
    image: linuxserver/transmission
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - TRANSMISSION_WEB_HOME=/combustion-release/ #optional
      - USER= #optional
      - PASS= #optional
      - WHITELIST=*.*.*.*  #optional
      - HOST_WHITELIST= #optional
    volumes:
      - /media/western/plex/tvshows:/downloads/complete:rw
    ports:
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: always
  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - VERSION=docker
      - PLEX_CLAIM= #your claim
    devices:
      - "/dev/dri:/dev/dri" # Binds the Intel Quicksync decoder to Plex HW Transcode    
    volumes:
      - /media/western/plex/config:/config
      - /media/western/plex/reality:/tv
      - /media/western/plex/movies:/movies
      - /media/western/plex/learning:/learning
      - /media/western/plex/documentaries:/documentaries
    restart: always
  tautulli:
    image: lscr.io/linuxserver/tautulli:latest
    container_name: tautulli
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - /media/western/tautulli:/config
    ports:
      - 8181:8181
    restart: unless-stopped
1 Like

Why are you using a container for Plex?

You don’t need a container to get HDR HW tone mapping anymore.

The container is adding a layer of abstraction which you do not need plus it adds unnecessary additional mapping complexity.

If you want to customize how Plex runs, I can show you how to use the systemd standard mechanism.

PS: You shared your compose file for everything. :wink:

The reason why I am using docker is just the easiest way to setup all my services quite speedy with all the pre defined configurations because the volumes are on an external drive. So I love the beauty of it plus easy to pull a new image an update plex (and all other services) in seconds. But I do appreciate your support :pray:

Yes I shared full docker composer file but I removed any token or sensitive information. Is just for the community if someone wants to copy the same strategy.

1 Like

Fair enough.

I have my media processing in a Linux Container (LXC) rather than a series of docker containers. I do that to make cross-app integration easier. All those apps need is internet and filesystem access so it made sense to put it together.

On my LAN, they appear as a stand-alone host (due to how the LXC is). that’s perfect for the job.

Doesn’t that make it heavier since is a full OS virtualization instead of just app virtualization? On the other hand, I need to try podman. I am not sure if it will be more efficient than docker but it eliminates the client / server and runs in a single process in unprivileged mode.

No. It isn’t a VM, it’s a containerized OS. It doesn’t run all the heavy things a normal OS does.

In a VM, you’re abstracting the hardware.
In a LXC, you’re abstracting the OS namespace. You can run multiple apps on the OS.
In a Docker, you’re abstracting the app only. You can run one app.

Here’s the full pid list of my LXC (which I can lighten even more should I want to)

[chuck@glockner ~.2001]$ lxc exec media bash
root@media:~# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Oct31 ?        00:00:08 /sbin/init
root          48       1  0 Oct31 ?        00:00:09 /lib/systemd/systemd-journald
root          86       1  0 Oct31 ?        00:00:00 /lib/systemd/systemd-udevd
systemd+      88       1  0 Oct31 ?        00:00:00 /lib/systemd/systemd-networkd
root         114       1  0 Oct31 ?        00:00:00 snapfuse /var/lib/snapd/snaps/lxd_21545.snap /snap/lxd/21545 -o ro,nodev,all
root         115       1  0 Oct31 ?        00:00:00 snapfuse /var/lib/snapd/snaps/snapd_17029.snap /snap/snapd/17029 -o ro,nodev
root         116       1  0 Oct31 ?        00:00:00 snapfuse /var/lib/snapd/snaps/core20_1623.snap /snap/core20/1623 -o ro,nodev
root         117       1  0 Oct31 ?        00:00:03 snapfuse /var/lib/snapd/snaps/snapd_17336.snap /snap/snapd/17336 -o ro,nodev
systemd+     137       1  0 Oct31 ?        00:00:01 /lib/systemd/systemd-resolved
root         164       1  0 Oct31 ?        00:00:01 /usr/lib/accountsservice/accounts-daemon
message+     165       1  0 Oct31 ?        00:00:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --syst
root         168       1  0 Oct31 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root         170       1  0 Oct31 ?        00:00:00 /usr/lib/policykit-1/polkitd --no-debug
syslog       171       1  0 Oct31 ?        00:00:03 /usr/sbin/rsyslogd -n -iNONE
root         173       1  0 Oct31 ?        00:00:37 /usr/lib/snapd/snapd
root         176       1  0 Oct31 ?        00:00:00 /lib/systemd/systemd-logind
root         177       1  0 Oct31 ?        00:00:00 /usr/lib/udisks2/udisksd
root         193       1  0 Oct31 ?        00:03:46 /opt/Radarr/Radarr -nobrowser
root         195       1  0 Oct31 ?        00:07:13 /usr/bin/mono --debug /usr/lib/sonarr/bin/Sonarr.exe -nobrowser -data=/var/l
root         196       1  0 Oct31 ?        00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown 
root         197       1  0 Oct31 ?        00:00:00 /usr/sbin/ModemManager
root         218       1  4 Oct31 ?        01:12:09 /opt/nzbget/nzbget -D
root         260       1  0 Oct31 ?        00:00:00 /usr/sbin/cron -f
root         274       1  0 Oct31 pts/0    00:00:00 /sbin/agetty -o -p -- \u --noclear --keep-baud console 115200,38400,9600 lin
root         275       1  0 Oct31 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root       28203       1  0 Oct31 ?        00:00:00 snapfuse /var/lib/snapd/snaps/core20_1634.snap /snap/core20/1634 -o ro,nodev
root      454588       0  0 20:02 pts/1    00:00:00 bash
root      455273  454588  0 20:02 pts/1    00:00:00 ps -ef
root@media:~# 
1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.