[Guide] Hardware Transcoding: The JDM way! QuickSync and NVENC

Will do sir!

Honest opinion, should I ditch the j5005 and go with a i5 8400/9400? Probably more reliable with the higher pm score. Also, No amd because of no QS!

Test the J5005 first and go from there!

So apparently there is some new hw accelerated features in the latest build of Windows.

Figured I would share it here

Yikes! This is one hw transcode to my iPhone. Imgur: The magic of the Internet

I think i may do the following. Send back the J5005/Ram. Pick up an i3 - 8100 and a PRIME H310I-PLUS Mini ITX (ANY MINI ITX at this point) and a stick of ram.

As long as it fits in the case and has 4 sata ports i’m happy. The case is a Chenbro SR30169

Hi guys, have just read this whole thread and it has given me lots of ideas, thank you. Looking to move my Windows Plex Server to Ubuntu as per guide. I currently have HW transcodes turned off because I’ve found quality of QS transcodes for my 8700T are terribly blocky. I watch a lot of 480p UK terrestrial broadcasts recorded through Plex DVR, not sure if that’s why? Before reading this thread I was thinking I’d get an Nvidia GPU to improve quality of transcodes, but one of the early posts says that quality for 6th Gen QS is indistiguishable from NVENC. Is that also true for sub 1080P stuff? If so, how do I improve my QS transcode quality? It’s not running out of RAM (16GB) and drivers are up to date. I’m at a loss!

Thanks

Sorry second unrelated question (so made sense to split it!)

It also says early on in this thread that Plex will use QuickSync first in case of both a iGPU and Nvidia GPU installed.

So if I installed an Nvidia GPU alongside my QS CPU how would I force Plex to use the GPU? Do I have to totally disable the iGPU in BIOS?

Sorry for what are probably really basic questions.

Why would you have an Nvidia GPU as well?

Wow thanks for the quick reply.

Well before I read this thread I had read a lot of threads that implied that I could improve my transcode quality by using an NVENC card like a GTX1660 instead of QS. I appreciate now this may not be true, but I still wanted to know how you would force Plex to use the GPU for testing (I can borrow one for the weekend).

However if I can improve my QS transcode quality that would save me a lot of money!

Sounds like you are one of the few people that experience issues with blocky quicksync. It not common, and I honestly would try to do a fresh install and see if it persists. I know that plex is aware of it and trying to fix, as they have included it in some server patch notes. You can run an older version 1.16 of plex server and the issue will not be there. My experience moving from a quadro card to a low powered quicksync box has not resulted in any downgrade in quality at all. Just a reduction in my power bills.

The issue seems to be with the driver they have included with PMS that relates to gemini lake specifically.

How has your experience been with the T40? These are seem like a steal of a deal at roughly $600 cdn… i purchased 2 H290s but I had to pay roughly $225 cdn each

I’m building my first NAS/Plex server and have done a lot of reading on the subject of transcoding the past few days, my brain could explode. Here’s the situation I got myself into. I bought a Ryzen 5 3600 and an Asrock x570 4s Mobo not realizing that I still need to have a discrete graphics card. Scouring the forums for what I should do my options became either buy a GPU, or return everything and get an intel chip, which would mean I could get QuickSync.

Here’s some of the things I’ve “learned” and want to make sure I’m understanding correctly.

Plex recommends 2,000 passmark per 1080p stream being SOFTWARE transcoded.

AMD Ryzen 5 3600 has a passmark score of 17,849 - This is about 7-8 streams software transcoded correct? Assuming 2,000 passmark for OS?

Intel i5-10500 has a passmark score of 13,409 - so about 5 streams being software transcoded. If I were to look at my CPU usage under both these scenarios where I was software transcoding 7-8 streams on the AMD and 5 on the intel, it should show close to 100% usage right?

With a PlexPass, I can enable Hardware Acceleration. This means if I get the i5-10500 it will use QuickSync. Where i’m confused from here is does that free up all of that cpu usage for other tasks? If I was transcoding 5 streams via SOFTWARE transcoding, that would be 5*2,000 passmark for a total of 10,000 passmark, of the 13,406 that the cpu is scored. With Hardware acceleration and Quicksync, you say it will handle both encoding and decoding, so I think the answer is yes, the cpu gets all of that “utilization” free’d up and my cpu usage wouldn’t show 100% anymore?

If I stick with the Ryzen 5 3600 setup, I have to buy an Nvidia GPU for NVENC. I’ll be limited to 2 transcodes (unless unlocked) but enabling hardware acceleration will only allow the nvidia gpu to encode, and the decoding will still be the responsibility of the CPU. Is encoding or decoding the bigger drain on cpu usage? What I’m trying to get at is, if a normal 1080p software transcode requires 2,000 passmark, but you buy an nvidia card and enable hardware transcoding, since it wont do both encoding and decoding, how much “passmark” is now required per 1080p stream? Would it maybe be like 1,000? Would hardware transcoding 7-8 streams show about 40-50% cpu usage since the gpu isnt handling all of the work?

The two CPUs are similar in price but if the i5-10500 with QuickSync will “free up” all of the resources on my CPU to be utilized towards my NVR that I want to record 5 cameras around the house and some other tasks then the lower passmark score for quicksync trade off seems worth it.

If the QuickSync still means my cpu will not be able to allocate its resources to these other tasks, I’m thinking it might be better off to go with the ryzen since its so much more powerful correct?

Yes, the intel quicksync will offload the cpu utilization. There are some items that still require CPU like subtitles and such, but you will see cpu utilization significantly lower. In addition depending on what package you use for the security cameras the quicksync can also be used for that.

Ok, I’ve tried to set this up a couple of times and for the life of me, I can’t figure out why it doesn’t work.

The setup on unRAID:

I have a share called Files that has all my media folders within (e.g., Movies, TV Shows, eBooks, etc). I have NFS enabled and the rule for the share is

172.16.0.0/24 (sec=sys,rw,UID=100)

Note: 100 is a user on the share with r/w.

My external Ubuntu settings:

I created the same username and password of the user on the unRAID share. In fstab, I have these 2 maps:

172.16.0.250:/mnt/user/files/Movies /mnt/movies nfs defaults,noatime 0 0 172.16.0.250:/mnt/user/files/TV\040Shows /mnt/tv nfs defaults,noatime 0 0

If I run “sudo mount -a” I get:

mount.nfs: access denied by server while mounting 172.16.0.250:/mnt/user/files/Movies 
mount.nfs: access denied by server while mounting 172.16.0.250:/mnt/user/files/TV Shows

If I run “showmount -e repository.local” (repository is my unRAID server name), I get:

Export list for repository.local: 
/mnt/user/Files 172.16.0.0/24

Any thoughts on what I might have missed? Thank you in advance for your assistance.

First, I see a couple errors in the lines you have listed for your fstab. There’s no filesystem type after the mount point, nfs in this case. Your lines should be something like this:

172.16.0.250:/mnt/user/files/Movies /mnt/movies nfs defaults,noatime 0 0

Also, you’re trying to mount both the Movies and TV Shows folders into /mnt/movies. But those aren’t what’s causing your access denied error. To figure out what’s causing that, try mounting one of your shares in verbose mode. Add a -v parameter to your mount command and try mounting a single share, ie sudo mount -v /mnt/movies. In verbose mode the mounting process will spit out a bunch of messages as it tries to mount the folder. Paste the entire output of that command here and hopefully it will shed some light on the root cause of your problem.

Thank you for your response. Sorry, those are both my mistakes in posting. I had to type that out by hand because VNC wouldn’t copy/paste and then I copied my first typed lines and didn’t change them. They are correct now and were already set as you suggested.

I’ll try the -v option to see if it sheds any light on what’s going on.

Here is the output:

mount.nfs: timeout set for Thu Sep 24 11:59:58 2020
mount.nfs: trying text-based options 'vers=4.2,addr=172.16.0.250,clientaddr=172.16.0.200'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=172.16.0.250,clientaddr=172.16.0.200'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=172.16.0.250,clientaddr=172.16.0.200'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=172.16.0.250'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 172.16.0.250 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 172.16.0.250 prog 100005 vers 3 prot UDP port 55268
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 172.16.0.250:/mnt/user/files/Movies/
mount.nfs: timeout set for Thu Sep 24 11:59:58 2020
mount.nfs: trying text-based options 'vers=4.2,addr=172.16.0.250,clientaddr=172.16.0.200'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=172.16.0.250,clientaddr=172.16.0.200'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=172.16.0.250,clientaddr=172.16.0.200'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=172.16.0.250'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 172.16.0.250 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 172.16.0.250 prog 100005 vers 3 prot UDP port 55268
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 172.16.0.250:/mnt/user/files/TV Shows/

I tried adding vers=3 to the mount points but that didn’t work either.

Ok I think I spotted the error, I missed it the first time when I read through your message. Assuming you typed the lines exactly as written in VNC, capitalization and all, it’s a case error. Your unraid server is exporting /mnt/user/Files (uppercase F), where your mounts are listed with a lowercase f.

Also, your export parameters aren’t configured correctly. If you need the share to be mounted in read/write mode, change it to 172.16.0.0/24(rw). Note there are no spaces between the IP range and the parameters either. Otherwise, just clear the line completely and it will be exported in read-only mode for all hosts. The sec=sys is redundant since it’s already the default option, and UID isn’t a valid option at all.

1 Like

I changed the NFS rule on the share and changed the lower case f to F and it worked! Thank you!!

Hey I am having some issue with my HP 290 server

dmesg output

[ 6964.806502] NFS: server 192.168.1.16 error: fileid changed
fsid 0:54: expected fileid 0x90100020cdaf602, got 0x27000001073d68
[11429.970514] NFS: server 192.168.1.16 error: fileid changed
fsid 0:54: expected fileid 0x901000205eace4a, got 0x27000001074b4c
[11429.972082] NFS: server 192.168.1.16 error: fileid changed
fsid 0:54: expected fileid 0x90200038024eb61, got 0x27000001074df1
[11429.973352] NFS: server 192.168.1.16 error: fileid changed
fsid 0:54: expected fileid 0x9020000800cb958, got 0x2700000107509c
[14384.783322] perf: interrupt took too long (2564 > 2500), lowering kernel.perf_event_max_sample_rate to 78000
[14995.881394] perf: interrupt took too long (3214 > 3205), lowering kernel.perf_event_max_sample_rate to 62000
[15401.910582] perf: interrupt took too long (4079 > 4017), lowering kernel.perf_event_max_sample_rate to 49000
[16030.657985] perf: interrupt took too long (5193 > 5098), lowering kernel.perf_event_max_sample_rate to 38500
[21312.849897] systemd-journald[405]: File /var/log/journal/e148bebc59ef4552a44ebe03bba7f7d7/user-1000.journal corrupted or uncleanly shut down, renaming and replacing.
[28030.043686] nvme nvme0: I/O 512 QID 1 timeout, aborting
[28030.043701] nvme nvme0: I/O 513 QID 1 timeout, aborting
[28030.043706] nvme nvme0: I/O 514 QID 1 timeout, aborting
[28030.043710] nvme nvme0: I/O 515 QID 1 timeout, aborting
[28030.043714] nvme nvme0: I/O 516 QID 1 timeout, aborting
[28060.251529] nvme nvme0: I/O 512 QID 1 timeout, reset controller
[28091.483263] nvme nvme0: I/O 24 QID 0 timeout, reset controller
[28154.971176] INFO: task jbd2/dm-0-8:328 blocked for more than 120 seconds.
[28154.971221] Not tainted 5.4.0-48-generic #52-Ubuntu
[28154.971249] “echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
[28154.971292] jbd2/dm-0-8 D 0 328 2 0x80004000
[28154.971296] Call Trace:
[28154.971304] __schedule+0x2e3/0x740
[28154.971308] ? __wake_up_common_lock+0x8a/0xc0
[28154.971311] schedule+0x42/0xb0
[28154.971314] jbd2_journal_commit_transaction+0x258/0x17e8
[28154.971317] ? __switch_to_asm+0x40/0x70
[28154.971319] ? __switch_to_asm+0x34/0x70
[28154.971321] ? __switch_to_asm+0x40/0x70
[28154.971324] ? __switch_to_asm+0x34/0x70
[28154.971326] ? __switch_to_asm+0x40/0x70
[28154.971328] ? __switch_to_asm+0x34/0x70
[28154.971331] ? __switch_to_asm+0x40/0x70
[28154.971333] ? __switch_to_asm+0x40/0x70
[28154.971335] ? __switch_to_asm+0x34/0x70
[28154.971338] ? __switch_to_asm+0x34/0x70
[28154.971340] ? wait_woken+0x80/0x80
[28154.971345] ? try_to_del_timer_sync+0x54/0x80
[28154.971348] kjournald2+0xb6/0x280
[28154.971350] ? wait_woken+0x80/0x80
[28154.971353] kthread+0x104/0x140
[28154.971355] ? commit_timeout+0x20/0x20
[28154.971357] ? kthread_park+0x90/0x90
[28154.971360] ret_from_fork+0x35/0x40
[28154.971370] INFO: task rs:main Q:Reg:848 blocked for more than 120 seconds.
[28154.971406] Not tainted 5.4.0-48-generic #52-Ubuntu
[28154.971434] “echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
[28154.971474] rs:main Q:Reg D 0 848 1 0x00000000

If anyone could take a look I would appreciate it :frowning:

Ends up being unresponsive and halting the plex server from any interaction via ssh or physically, need to hard reboot and it works fine again for a couple hours.