• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support Troubleshooting SOLVED: Bad transcoding performance using Intel UHD 770

     
    • 0 Vote(s) - 0 Average

    SOLVED: Bad transcoding performance using Intel UHD 770

    fl0wfr
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Mar
    Reputation: 0
    Country:France
    #1
    2025-03-19, 08:49 AM (This post was last modified: 2025-03-19, 08:50 AM by fl0wfr. Edited 1 time in total.)
    Hi,

    I just change my hardware, from an Intel Xeon E-2186G (iGPU is an Intel  UHD Graphics P630) to an Intel Core i9 14900T (iGPU is an Intel UHD Graphics 770), configured as followed:
    • Host OS is Rocky Linux 9.5 x86_64
    • Kernel version is 6.13.7-1.el9.elrepo.x86_64
    • Jellyfin running in compose on Docker CE
    • GUC is enabled for LP encoding mode (but same issue when not using low power encoding)
    • I'm using RAM FS for storing transcoding temporary files
    I'm unable to get a proper transcoding of 4K videos, which worked without an issue before. Did I miss something? I read that an Intel UHD 770 can handle several 4K transcoding at the same time, but I'm not even able to get a single one working, that's strange. Any help would be greatly appreciated Smiling-face

    Docker compose:
    Code:
      jellyfin:
        image: docker.io/jellyfin/jellyfin
        container_name: jellyfin
        hostname: jellyfin
        restart: unless-stopped
    user: 1000:1000
        environment:
          - JELLYFIN_PublishedServerUrl=http://jellyfin.domain.tld
        volumes:
          - /docker/Jellyfin/config:/config
      - /docker/Jellyfin/cache:/cache
          - /volumes/data:/media/data
          - /var/transcoding-temp:/transcoding-temp
        devices:
          - /dev/dri:/dev/dri
        group_add:
          - "998" # Add render group
    ports:
      - 8096:8096
        networks:
          - jellyfin

    My transcoding settings:
       
       
       
       
       

    Modules loaded:
    Code:
    i915                4526080  2
    i2c_algo_bit          12288  1 i915
    cec                    81920  1 i915
    drm_buddy              24576  1 i915
    ttm                  102400  1 i915
    intel_gtt              24576  1 i915
    drm_display_helper    262144  1 i915
    drm_kms_helper        245760  2 drm_display_helper,i915
    drm                  790528  6 drm_kms_helper,drm_display_helper,drm_buddy,i915,ttm
    video                  81920  1 i915

    i915 module comes from the installed kernel:
    Code:
    # modinfo i915
    filename:      /lib/modules/6.13.7-1.el9.elrepo.x86_64/updates/i915.ko.xz
    license:        GPL and additional rights
    description:    Intel Graphics
    author:        Intel Corporation
    author:        Tungsten Graphics, Inc.

    Before using transcoding:
       

    When a transcoding is started:
       

    ffmpeg process when started:
    Code:
    flow      606800 13.3  0.3 2454412 249948 ?      Sl  09:23  0:01 /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -f matroska -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -noautorotate -c:v hevc_qsv -i file:/media/data/Series/episode.mkv -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_qsv -tag:v:0 hvc1 -low_power 1 -preset veryfast -b:v 14616000 -maxrate 14616000 -bufsize 29232000 -profile:v:0 main -level 50 -g:v:0 72 -keyint_min:v:0 72 -vf setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,vpp_qsv=format=nv12 -codec:a:0 libfdk_aac -ac 2 -ab 256000 -af volume=2 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename 7a4fe63ae03c0701e982fcf17b2c4cee-1.mp4 -start_number 0 -hls_segment_filename /transcoding-temp/jellyfin/7a4fe63ae03c0701e982fcf17b2c4cee%d.mp4 -hls_playlist_type vod -hls_list_size 0 -y /transcoding-temp/jellyfin/7a4fe63ae03c0701e982fcf17b2c4cee.m3u8

    Jellyfin logs:
    Code:
    [2025-03-19 09:24:55.426 +01:00] [INF] [20] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "flow". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
    [2025-03-19 09:24:55.426 +01:00] [INF] [20] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 14000000, RemoteIP: "192.168.0.1", IsInLocalNetwork: True
    [2025-03-19 09:24:55.783 +01:00] [INF] [130] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
    [2025-03-19 09:24:55.784 +01:00] [INF] [130] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -f matroska -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -noautorotate -c:v hevc_qsv -i file:\"/media/data/Series/episode.mkv\" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_qsv -tag:v:0 hvc1 -low_power 1 -preset veryfast -b:v 14616000 -maxrate 14616000 -bufsize 29232000 -profile:v:0 main -level 50 -g:v:0 72 -keyint_min:v:0 72 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,vpp_qsv=format=nv12\" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -af \"volume=2\" -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename \"0ba4000c84531c0cb99ef80f5aae8fe5-1.mp4\" -start_number 0 -hls_segment_filename \"/transcoding-temp/jellyfin/0ba4000c84531c0cb99ef80f5aae8fe5%d.mp4\" -hls_playlist_type vod -hls_list_size 0 -y \"/transcoding-temp/jellyfin/0ba4000c84531c0cb99ef80f5aae8fe5.m3u8\""
    [2025-03-19 09:25:05.790 +01:00] [INF] [130] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Stopping ffmpeg process with q command for "/transcoding-temp/jellyfin/0ba4000c84531c0cb99ef80f5aae8fe5.m3u8"
    [2025-03-19 09:25:05.792 +01:00] [ERR] [109] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: "A task was canceled". URL "GET" "/videos/73e730ba-cd8c-528d-cf42-64336206b15e/hls1/main/-1.mp4".
    [2025-03-19 09:25:07.610 +01:00] [INF] [130] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 0
    [2025-03-19 09:25:07.610 +01:00] [INF] [130] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
    [2025-03-19 09:25:07.610 +01:00] [INF] [130] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -ss 00:06:18.000 -noaccurate_seek -f matroska -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -noautorotate -c:v hevc_qsv -i file:\"/media/data/Series/episode.mkv\" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_qsv -tag:v:0 hvc1 -low_power 1 -preset veryfast -b:v 14616000 -maxrate 14616000 -bufsize 29232000 -profile:v:0 main -level 50 -g:v:0 72 -keyint_min:v:0 72 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,vpp_qsv=format=nv12\" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -af \"volume=2\" -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename \"0ba4000c84531c0cb99ef80f5aae8fe5-1.mp4\" -start_number 126 -hls_segment_filename \"/transcoding-temp/jellyfin/0ba4000c84531c0cb99ef80f5aae8fe5%d.mp4\" -hls_playlist_type vod -hls_list_size 0 -y \"/transcoding-temp/jellyfin/0ba4000c84531c0cb99ef80f5aae8fe5.m3u8\""
    [2025-03-19 09:25:24.554 +01:00] [INF] [109] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Started user data sync
    [2025-03-19 09:25:24.647 +01:00] [INF] [109] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: User Data Sync: User "flow" ("205dc7b9aecf4a728811ef76c2c783f9") posted 2 updates
    [2025-03-19 09:25:24.647 +01:00] [INF] [109] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Finished user data sync, taking "00:00:00.0925659"
    [2025-03-19 09:25:33.261 +01:00] [INF] [111] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Stopping ffmpeg process with q command for "/transcoding-temp/jellyfin/0ba4000c84531c0cb99ef80f5aae8fe5.m3u8"

    ffmpeg logs:

    .txt   ffmpeg.txt (Size: 81.92 KB / Downloads: 27)
    Go to solution
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #2
    2025-03-19, 12:42 PM
    What is the output of this command?

    Code:
    sudo dmesg | grep i915

    Unrelated, you should check "Enable tone mapping" and uncheck VPP tone mapping. The OpenCL based tone mapping produces better results than VPP tone mapping.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    nyanmisaka
    Offline

    Team Member

    Posts: 246
    Threads: 0
    Joined: 2023 Jun
    Reputation: 9
    #3
    2025-03-19, 03:03 PM (This post was last modified: 2025-03-19, 03:05 PM by nyanmisaka. Edited 2 times in total.)
    This appears to be a slowdown caused by I/O. You can try the following command to rule out the problem.

    Test QSV decoder:
    Code:
    /usr/lib/jellyfin-ffmpeg/ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -noautorotate -c:v hevc_qsv -i file:"/media/data/Series/episode.mkv" -an -sn -f null -

    Test QSV encoder:
    Code:
    /usr/lib/jellyfin-ffmpeg/ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -f lavfi -i nullsrc=s=3840x1606,format=nv12 -c:v hevc_qsv -low_power 1 -preset veryfast -b:v 14616000 -maxrate 14616000 -bufsize 29232000 -profile:v main -level 50 -g:v 72 -keyint_min:v 72 -f null -
    fl0wfr
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Mar
    Reputation: 0
    Country:France
    #4
    2025-03-19, 07:06 PM
    (2025-03-19, 12:42 PM)TheDreadPirate Wrote: What is the output of this command?

    Code:
    sudo dmesg | grep i915

    Unrelated, you should check "Enable tone mapping" and uncheck VPP tone mapping.  The OpenCL based tone mapping produces better results than VPP tone mapping.

    Hi, there it is:
    Code:
    [    1.425485] i915 0000:00:02.0: [drm] VT-d active for gfx access
    [    1.425543] i915 0000:00:02.0: vgaarb: deactivate vga console
    [    1.425582] i915 0000:00:02.0: [drm] Using Transparent Hugepages
    [    1.426222] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
    [    1.427763] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adls_dmc_ver2_01.bin (v2.1)
    [    2.384219] i915 0000:00:02.0: [drm] [ENCODER:235:DDI A/PHY A] failed to retrieve link info, disabling eDP
    [    2.558032] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.bin version 70.36.0
    [    2.558035] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
    [    2.561053] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
    [    2.561804] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
    [    2.561805] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
    [    2.562241] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled
    [    2.594121] [drm] Initialized i915 1.6.0 20230929 for 0000:00:02.0 on minor 0
    [    2.658459] fbcon: i915drmfb (fb0) is primary device
    [    2.728794] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
    [    5.210384] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])

    (2025-03-19, 03:03 PM)nyanmisaka Wrote: This appears to be a slowdown caused by I/O. You can try the following command to rule out the problem.

    Test QSV decoder:
    Code:
    /usr/lib/jellyfin-ffmpeg/ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -noautorotate -c:v hevc_qsv -i file:"/media/data/Series/episode.mkv" -an -sn -f null -

    Test QSV encoder:
    Code:
    /usr/lib/jellyfin-ffmpeg/ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -f lavfi -i nullsrc=s=3840x1606,format=nv12 -c:v hevc_qsv -low_power 1 -preset veryfast -b:v 14616000 -maxrate 14616000 -bufsize 29232000 -profile:v main -level 50 -g:v 72 -keyint_min:v 72 -f null -
    I don't see any bottleneck:
    Code:
    Linux 5.14.0-503.31.1.el9_5.x86_64 (bunker.fl0w.lan)    03/19/2025      _x86_64_        (32 CPU)

    avg-cpu:  %user  %nice %system %iowait  %steal  %idle
              5.05    0.31    2.47    1.35    0.00  90.80

    Device            tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
    dm-0              6.42      296.53        21.10        0.00    350512      24945          0
    dm-1              5.33      113.72        59.84        0.00    134418      70737          0
    dm-2            386.78      9975.27      2180.59        0.00  11791366    2577590          0
    md125            0.40        4.84        0.00        0.00      5716          0          0
    md126          371.50    10387.48      2261.54        0.00  12278624    2673273          0
    md127            0.20        3.71        0.01        0.00      4383        14          0
    nvme0n1        340.35      7197.99      2275.79        0.00    8508459    2690122          0
    nvme1n1        196.54      3200.39      2275.79        0.00    3783051    2690122          0
    sda              0.62        9.24        1.73        0.00      10920      2048          0
    sdb              1.61      519.25        1.73        0.00    613784      2048          0
    sdc              1.85      563.72        1.73        0.00    666356      2048          0
    sdd              3.01      1848.08        1.73        0.00    2184536      2048          0
    sde              1.97      714.93        1.81        0.00    845084      2136          0
    sdf              2.17      1269.86        1.73        0.00    1501052      2048          0
    sdg              0.71        15.63        1.86        0.00      18472      2204          0
    sdh              0.74        10.28        1.73        0.00      12156      2048          0
    sdi              0.64        38.01        1.86        0.00      44928      2204          0
    sdj              1.26      252.45        2.14        0.00    298408      2532          0

    But yeah, not very quick...
    Code:
    frame= 5386 fps= 86 q=-0.0 Lsize=N/A time=00:03:44.68 bitrate=N/A speed=3.58x
    Code:
    frame=  650 fps= 27 q=-0.0 size=N/A time=00:00:25.84 bitrate=N/A speed=1.08x
    nyanmisaka
    Offline

    Team Member

    Posts: 246
    Threads: 0
    Joined: 2023 Jun
    Reputation: 9
    #5
    2025-03-20, 11:39 AM

    Linux 5.14.0-503.31.1.el9_5.x86_64


    I think I know why. Linux 5.14 kernel is too old for AlderLake-S iGPU. Check these links and you will find that the minimum requirement is 5.17.

    https://github.com/intel/media-driver#kn...imitations

    https://jellyfin.org/docs/general/admini...l-on-linux
    fl0wfr
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Mar
    Reputation: 0
    Country:France
    #6
    2025-03-20, 12:26 PM
    I finally found the cause of the issue, I set the BIOS CPU C-States to C10, it may not be properly implemented in the BIOS.
    After setting it to Cpu Default, I get this result:
    Decoding (VCS at 50% in intel_gpu-top):
    Code:
    frame=10207 fps=295 q=-0.0 Lsize=N/A time=00:07:05.75 bitrate=N/A speed=12.3x
    Encoding (VCS at 50% in intel_gpu_top):
    Code:
    frame= 2413 fps=109 q=-0.0 Lsize=N/A time=00:01:36.36 bitrate=N/A speed=4.35x
    I guess this matches with the ability to transcode 4 4K videos simultaneously.
    Thanks for your help!
    fl0wfr
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Mar
    Reputation: 0
    Country:France
    #7
    2025-03-20, 02:08 PM
    (2025-03-20, 11:39 AM)nyanmisaka Wrote:
    Linux 5.14.0-503.31.1.el9_5.x86_64


    I think I know why. Linux 5.14 kernel is too old for AlderLake-S iGPU. Check these links and you will find that the minimum requirement is 5.17.

    https://github.com/intel/media-driver#kn...imitations

    https://jellyfin.org/docs/general/admini...l-on-linux

    i9 14900T is a Raptor Lake, based on TGLx platform (TGL: Tiger Lake, RKL: Rocket Lake, ADL-S/P/N: Alder Lake, RPL-S/P: Raptor Lake), kernel support since 5.9 Winking-face
    nyanmisaka
    Offline

    Team Member

    Posts: 246
    Threads: 0
    Joined: 2023 Jun
    Reputation: 9
    #8
    2025-03-20, 03:43 PM
    Glad you solved the problem. 5.14 seems to be the linux version of your storage server, while the linux version of the transcoding server is 6.13.7.

    > i9 14900T is a Raptor Lake, based on TGLx platform (TGL: Tiger Lake, RKL: Rocket Lake, ADL-S/P/N: Alder Lake, RPL-S/P: Raptor Lake), kernel support since 5.9

    Even though they share a lot of things, there are still differences in transcoding, such as HuC firmware and GuC submitting, which are disabled on Tiger Lake. They are gradually being enabled on Alder Lake and Raptor Lake, and these are two different code paths. I have seen failures due to it.
    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode