Server Version#: 1.13.8.5395
Windows Server 2016 for PMS (transcoding happens on local SSD)
Open Media Vault for file storage.
Windows 10 Pro for the client.
Hey all,
I’m running into an issue with 4K files.
Locally they play for a bit and then start buffering.
Remote they don’t play at all.
When I just browse to the folder where the files are located and play the file with VLC it plays with no issues. (I can skip to random parts of the movie with not even a second of delay)
From what I can tell it’s trying to transcode it, but even that shouldn’t be an issue.
The server is on a ESXi host with 2x E5-2690 v3 processors. The VM has 32 cores assigned. It never reaches anywhere near 100% (passmark score of 22000).
Everything plays perfectly fine, but I can’t for the life of me get 4K streams to work.
I’ll list everything I checked here with my reasoning as to why I think it should be fine:
File server should be fine, browsing to the NFS share with my end machine works fine, opening the video file and playing it with VLC media player works fine (skipping works too without a second of delay).
PMS (running on Windows Server 2016) should be fine, the machine has a 40GB OS drive, and a seperate 230 GB SSD for local plex data (including the transcoding), it has 32 cores of 2 E5-2690 v3 processors and never maxes out.
The client PC I test with is fine, i7-7700k with a GTX1080Ti running Windows 10 Pro, can play the file when browsing to it directly.
The network connecting everything should be fine. The PMS and File server are on seperate physical hosts, both are connected to a switch with 1Gbps links. Internet speed is fine for atleast a 1080p stream (40Mbps up).
What I want to achieve is for local users to just be able to play the 4K stream, and for remote users to be able to transcode it down to 1080p (my UP bandwidth is only 40Mbps).
Does anyone have a clue what it could be?
I’ll provide whatever logs you deem necessary (I couldn’t find any issues in the server logs myself).
My own PC is a Windows 10 Pro pc. I tried it with the three main ways:
The web player - this one has the issue.
The Windows Store player - this one has the issue, but I have had loads of issues with the windows store regardless
The downloadable player from the website - this one does not have the issue, but this is also the only one that doesn’t transcode.
It looks like the issue is with the transcoding, but I don’t get why - none of my cores are maxed out, my memory isn’t all being used etc.
Is there any compatability issue with using Windows Server 2016?
When playing a file through browser or the Store App, you are limited to what files are supported for that type of client. 4K might be not be supported in a browser, but can be for the full x64 player.
It’s not a plex thing - its the client you have chosen to use. So if your browser is Edge or Internet Explorer, it might not play some files, while Chrome or Firebox can. Browsers don’t playback all the filetypes that VLC or the full PMP can.
I understand that, I don’t understand why it’s buffering when transcoding - for as far as I can tell nothing is being maxed out anywhere. Watching direct play 4K is fine for when I’m home, but when I’m somewhere else my upload speed isn’t fast enough to stream 4K so I have to transcode to 1080p, which simply doesn’t seem to work. When transcoding locally it buffers every few seconds, when transcoding for a remote client it doesn’t even start to play.
Something else I’ve noticed is that it only ever uses half my available cores for transcoding a single stream. Is that normal? I was kind of hoping the hardware would be the point for a bottleneck but it looks like something is limited in the transcoder itself?
Transcoding won’t thread across two physical CPU as far a I am aware.
I’ve also run into issues giving too much resources to a VM.
I would try dropping the vcore count to 8 or 16 and ensuring that the CPU weight and reservation is set higher on the Plex VM.
It sounds like the guest VM isn’t getting what it needs from the host.
I run a Windows Server 2016 environment with a dual x5650’s for reference and I can get 1-2 4k transcoded going.
I just tried that, but no luck unfortunately.
I switch it from 32 cores (which would be 1,5 physical processor I guess) to 24 which is one.
The same thing happen, it uses exactly half of my processor cores, and then half of their maximum performance.
Really looks like this is just something that is set in the transcoder?
There are many many draw backs to over allocating resources in non-modern operating systems running as virtual machines and with older hypervisor technologies.
It is possible that the Plex app can only handle so many threads per transcode task but that doesn’t even begin to explain why with 50% of your CPU time allocated it’s not able to adequately transcode a single 4K stream.
There is 100% an issue with the Guest VM accessing resources because if it was truly receiving even half of your allocated CPU then it would definitely be working fine.
My thoughts would be to ensure you’re running modern ESXi or Hyper-V (i.e. the latest or second latest generation) and that your also running a modern Guest OS (i.e. Windows 10 or Windows Server 2016) and that you’ve installed the latest Integration Services driver onto the Guest VM.
Given you have Windows Server 2016 licensing already I would work to upgrade the Host/Hypervisor machine to Windows Server 2016 and re-build the Plex VM in Hyper-V.
In my case, I run Windows Server 2016 all the way through and it works brilliantly but that doesn’t really help when you’re running ESXi (which is probably dated).
On another note, I am currently planning to move my Plex server FROM a Virtual Machine to a Phsyical Machine purely to enable better hardware interoperability. Specifically, enabling Hardware Transcode from a GPU.
Virtual Machines are great but they have draw backs due to their lack of true access to physical hardware.
I’m running ESXi (VMware ESXi, 6.5.0, 7388607)
I tried it with both Windows Server 2016 and Windows 10 Pro - no change.
It is definitely not an issue with the Hypervisor or VM - it can totally max out all the cores I throw at it.
Plex however can’t - or rather doesn’t - use more than 25% of my total CPU capacity per transcode. (If 4 people stream 4k at the same time it will use like 96%).
It really seems to me like the transcoder is just setup to not use more?
Or do you not get this behavior at all?
Look at this: CPU Usage
I don’t really get this issue, I do notice that a single Plex transcode task won’t exceed 50% of CPU but my transcodes are able to run 4K>720p without issue (1-2 simultaneous usually is fine).
This is exactly why I am bout to go to a physical machine though, you just can’t beat hardware transcode. I’ve got up to 10 users off my server at a time remotely and it get’s pretty hard on the CPU even with 1080p transcode.
No HDR on mine.
But they are HEVC Main 10 (the movies i was playing)
I don’t have much 4K content but I am expanding it hence my push towards a hardware transcode build with a Quadro P2000.
I switched to Ubuntu PMS and that seems to have fixed most of my issues, it is now properly using all my cores. Still no clue why it didn’t work on Windows. Only real difference I can think of is that PMS is 32bit on Windows and 64bit on Ubuntu?