This is EXTREMELY helpful. I was looking at upgrading to a E5-2630v4 (10c/20t @2.2Ghz), thinking more threads would help. I’m currently using a 4c/4t E3-1225v5 (because I assumed incorrectly Dell would expose the intel gpu…it doesn’t). When prices on R430’s come down i might upgrade, but now I’m thinking with your data it’d be better to just get maybe a 8c/16T higher clock cpu. I don’t stream more than 3-4 things at once.
I can’t find the article, but I read some of the posts about FFMPEG (which is what the Plex transcoder is based on) and there was a comment about how there’s a rule for the number of threads you can really use to transcode a video of a certain resolution. Beyond that number you lose quality because it the video is sliced into too many small pieces so the transcoder avoids doing this. This makes a bit of sense and I haven’t seen a huge increase in performance on Plex Sync tasks going a dual CPU 16 core (2 x 8 cores) to an 18 core CPU to a 14 core CPU and now to an 8 core Ryzen.
I suspect a lot of this depends on your media and how it’s encoded. Some codecs may require more or less CPU power and might be more or less well suited to multithreading. I ordered the Ryzen 2700X and motherboard last week - should be here in early May. I’ll post a comparison once I get that machine up and running.
Massively wide thread count isn’t the answer in all cases. Image-based subtitles require per-thread speed, not width. Subtitle image merge is a single-threaded task.
Might explain why plex was really really slow on my old HP G5 DL580 ( 4x Intel Xeon Quad Core 2.4GHz approx can’t remember) couldn’t transcode a single thing. Although that might have been down to the networking and CPU arch. Changed over to running Plex Server on an i7 iMac, so much faster loading and transcoding videos.
I’m currently running an R510 8core @ 2.6Ghz (12Bay 3.5") for storage, I’m looking at migrating to a new server that I can pump a decent GPU to offload the transcoding tasks. Am I just better off getting a low Core i7 and high Freq and throwing in an AMD GPU or using the QuickSync on the Intel. I’ve had up to 6 streams running at once, with buffering issues (locally) my stream was the last one to open.
Plex is currently run inside a Docker Container, (instant updates upon reboot) would be nice to have 0 downtime but that can’t be helped when updating. Can you pass-thru the iGPU and dGPU both to the Docker instance?
@drevilish said:
Might explain why plex was really really slow on my old HP G5 DL580 ( 4x Intel Xeon Quad Core 2.4GHz approx can’t remember) couldn’t transcode a single thing. Although that might have been down to the networking and CPU arch. Changed over to running Plex Server on an i7 iMac, so much faster loading and transcoding videos.
I’m currently running an R510 8core @ 2.6Ghz (12Bay 3.5") for storage, I’m looking at migrating to a new server that I can pump a decent GPU to offload the transcoding tasks. Am I just better off getting a low Core i7 and high Freq and throwing in an AMD GPU or using the QuickSync on the Intel. I’ve had up to 6 streams running at once, with buffering issues (locally) my stream was the last one to open.
Plex is currently run inside a Docker Container, (instant updates upon reboot) would be nice to have 0 downtime but that can’t be helped when updating. Can you pass-thru the iGPU and dGPU both to the Docker instance?
Given that both Docker and native Linux have the same file structure for how your metadata is stored, Linux won’t delete your metadata should you change software version, and you can take a PMS metadata Library from one machine with a tar ball or a ZIP file, I ask why user Docker? Docker was created to allow applications from different operating systems to run where there is no native application for the particular host which does come at the cost of performance and inability to access host-resident hardware (like hardware transcoding).
To answer your specific question: Can they be passed through? Yes. Maintenance of the specific udev rules or file permission changes required to do so are entirely your burden. Should you use the native package, it’s automatic. If you wish to take what’s in your current docker container and pull it out to the native application, I can show you how and will help you perform the task
@ChuckPA said:
To answer your specific question: Can they be passed through? Yes. Maintenance of the specific udev rules or file permission changes required to do so are entirely your burden. Should you use the native package, it’s automatic.
My current PLEX Container runs in a Synology Environment with Docker, I picked Synology to manage the storage to be able to dynamically grow it over time. I prefer the Synology GUI currently.
I’m looking at using a different machine running PLEX natively and accessing the media files over NFS/Infiniband.
Depending on your Synology model, as food for thought, given 2.5 Gb/s infiniband is slow by comparison., 4 legs of LACP (which Synology does very well) into a managed L2 switch and you’re sitting with a wonderful 468 MB/sec using regular gigabit ethernet
Attached please find the screenshot of reading from and writing to.
469 MB/sec read (4 segments) with 350 MB/sec write back (3 segments)
@justinoes said:
Figured I would add some numbers for my current Plex machine…
Xeon E5 2683 v3 (14 cores - 2.4 Ghz all core turbo - 3.0 Ghz single core turbo) I suspect (looking at Windows Task Manager) that these tasks aren’t using all 14 cores, so I’m going to be moving to an 8 core CPU soon with a higher clock. Fair warning for anyone looking to build a Plex machine with huge numbers of cores, it may not help as much as you’d think unless you have a lot of concurrent sessions.
This is EXTREMELY helpful. I was looking at upgrading to a E5-2630v4 (10c/20t @2.2Ghz), thinking more threads would help. I’m currently using a 4c/4t E3-1225v5 (because I assumed incorrectly Dell would expose the intel gpu…it doesn’t). When prices on R430’s come down i might upgrade, but now I’m thinking with your data it’d be better to just get maybe a 8c/16T higher clock cpu. I don’t stream more than 3-4 things at once.
As promised, here are the results from my new Ryzen 2700X system. This isn’t entirely a CPU to CPU comparison because I also upgraded the RAM. That said, it looks like I got a pretty decent increase over my previous system.
In actual testing with Plex (using the sync function) I saw similar, but less impressive gains. That said, for me, the the sale of my Xeon alone paid for the new motherboard, CPU, and RAM … so for my this has worked out nicely. (And for people building new systems, just know that clock speed is still important.)
I am unsure where exactly to ask this question but this thread seems the most reasonable.
I bought myself a GTX1050Ti to enable HEVC 10-bit hardware transcoding as I have those files for myself but everyone else I share my PMS with don’t have the capabilities to watch 4K.
So when they try and play a 4K movie and my PMS tries to convert it they often have buffering and usually give up trying to play these files.
I have noticed that PMS converts randomly as in it’ll transcode at 1.2x then 1.3x and then drop to 0.7x and 0.8x without rhyme or reason.
Why does Plex not force the transcoder to go 100% (1.4x) on the HW until my buffer of 300mins is reached?
@Dejh0n said:
I am unsure where exactly to ask this question but this thread seems the most reasonable.
I bought myself a GTX1050Ti to enable HEVC 10-bit hardware transcoding as I have those files for myself but everyone else I share my PMS with don’t have the capabilities to watch 4K.
So when they try and play a 4K movie and my PMS tries to convert it they often have buffering and usually give up trying to play these files.
I have noticed that PMS converts randomly as in it’ll transcode at 1.2x then 1.3x and then drop to 0.7x and 0.8x without rhyme or reason.
Why does Plex not force the transcoder to go 100% (1.4x) on the HW until my buffer of 300mins is reached?
Just because you have a GPU installed doesn’t mean it will be used by Linux unless you have installed all the drivers for it yourself.
If your CPU has an integrated GPU, PMS will use it unless you’ve disabled it.
If you’re using Windows, I suggest you continue further in the Windows forum because Windows uses GPU cards entirely differently than how LInux does.
It’s easier to manage services with containers. I can easily move my containers around from server to server if I want and I don’t have to try and think about where the data is for each – I have the volumes mounted in the same folder as my docker-compose.yml file. I just move the directory and go. Also, it’s easier to set up. I put the docker-compose.yml file where I want it, run a single command, and everything is set up. I don’t have to worry about the random dependency in some application that for whatever reason wasn’t installed. It just works.
Docker was created to make use of linux containers to provide system administrators and developers ways to run applications in an isolated manner. Everything has its own context and there is little to no conflict between applications. If I want to remove an application, I delete the container and there is no crud left behind on the server. I can easily use tools like kubernetes or swarm to run multiple instances across multiple serves.
There is virtually no performance hit when running an application with docker since dockerized applications use the host kernel. There’s no virtual machine (unless you’re running docker on a Mac or Windows) to abstract things. They’re just running in their own cgroup.
while benchmarks are one thing, what really matters is how many streams a particular gpu can support on plex.
on linux at least, video ram is king.
video cards of the same generation/architecture will have the same or nearly the same decode/encode performance.
the video encoder/decoder is separate from the ‘gaming’ gpu functionality.
what this boils down to, is nvidia 10 series will all perform essentially the same decode/encode performance, with video ram being the limitation on simultaneous transcodes.
some really nice person posted a detailed benchmark/list of gpus and number of transcodes.