I’ve been using hardware transcoding for a while (QuickSync on a E3-1245v6). It works great when it works, but it’s proven very hard to figure out the performance limits on my system.
I have at least one 4k 40Mbps HEVC movie that is simply too big for hardware transcoding. PlexPy shows its transcoding speed as ~0.7. Strangely, it didn’t seem to slow down other active H264 transcodes.
Last night, my server had 5x H264 GPU transcodes (from various friends) active. PlexPy was showing speeds of 0.8 - 1.2 for each. The one I was watching was stuttering. I’ve previously had 8 active, months ago, without apparent issue. I don’t know what changed. Possibly my Spectre/Meltdown patches slowed down my system that much more.
I don’t like the fact that my users start having a bad experience once some line is crossed, and I can’t tell where the line is most of the time. I would feel much more confident in GPU transcoding if there was some way to load balance between GPU and CPU.
In a perfect world, I would love to assign everything to the GPU, but failover to the CPU if the GPU can’t transcode in real-time. Failing that, even round-robin assignment of transcodes between GPU and CPU would be a big win.
I experimented with toggling the “Use hardware acceleration” server setting in a cron job, hoping to get transcodes randomly assigned to GPU or CPU. However it seems like this setting gets checked for every transcode segment, so when it’s changed, quickly all jobs either end up on the CPU or on the GPU. This seemed to create playback problems and confuse the status page.