Speeding up centos VM

I have a centos 7 Plex installation running alongside only squeezebox server.

It’s got 4 cores off a dual Xeon E5645 on an esxi 5.5 with 24gb of ddr3 1333.

My problem is that despite my best efforts to reduce the amount of transcoding it does, I still run into situations where it needs to, and if I’m using a high bitrate bluray (say a 25gb James Bond Mkv) it will bog and tell me it can’t read fast enough or just give me the three dots. Depends if I’m streaming to my Vizio (no dts passthrough) or my raspberry pi 3 (finally figured out dts passthrough).

Any hints on speeding this setup up?

pragmatically? get a better CPU.

https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5645+%40+2.40GHz&id=1252

You have a 9 year old CPU. They have come a long way since then in both power and performance.

A single i7-7700 is just over 10,000 passmarks compared to the xeon’s 6400. Transcoding is about per-thread speed in many cases. The i7 also has hardware transcoding support. The xeon predates this techology.

1 Like

Well, it doesn’t really seem to be loading the CPUs at all. The server is just puttering along. I’ve checked disk access and cpu loading, and it doesn’t appear to know that it should be kicking things in to high gear. Something doesn’t seem right. At least when I was using the Vizio native app it was screaming. Now doesn’t appear to be really waking up using the RPI. I’ll have to investigate further.

I played all my troublesome movies with the kodi installation (not using the plex add-in), and it had no issues whatsoever. I mean, the add-in and kodi are just doing direct play. There’s really no transcoding going on.

I’m beginning to think that there’s something suspect in the connection in my All-in-one VM setup where it serves the media share as NFS to Centos, which then serves it out to either my Vizio native plex, or the Kodi add-in plex.

Or there’s something screwy in how I set up my Plex.

Kodi does things differently.

Kodi uses the HDMI directly. It is decoding and rendering directly on the glass. it is a “Thick Player” device.

Plex uses a Client-Server architecture. The client is much less sophisticated (thinner) and all the heavy lifting is done in the server. This means the player can go on a number of devices where kodi wouldn’t be viable due to lack of CPU or memory. A good example is Kodi on a Roku. That’s not possible.

That said, there isn’t much to compare. Kodi is more like VLC with database capability than anything else

Since this should be just doing direct play on my local network with passthrough DTS, I really don’t see how the server would be getting overloaded. None of the performance measures in ESXi show much change when Plex is skipping/pausing(/buffering??). It just feels like somethings not working correctly on the client player.

Looking through my logs, would the error “Unable to find client profile for device; platform=Kodi, platformVersion=17.6 Git:20171115-d69a54a, device=RaspberryPi, model=Unknown” have anything to do with choppy playback? I noticed alot of Roku folks were experiencing this. Some people saying it doesn’t affect playback, but others found workarounds, that seems to have helped them.

How exactly do you go about creating a client profile?? PMS no client profile for Kodi Add-on

If there is no Kodi profile, it doesn’t know it can “Passthrough” to it. It assumes a minimalist “Generic” / “Dumb” device capability and processes everything down to the minimalist MP4/AAC

To create a profile:

  1. mkdir “/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Profiles”
  2. Copy one from under /usr/lib/plexmediaserver/Resources/Profiles and save as the new “Kodi” name in your library area

Be advised, PMS reads it when first used. If you make changes to it, you need restart PMS to take effect.

Ok, well, that sounds simple enough, but is there any guiding document on what should or shouldn’t be here in the XML?

OK, riddle me this… I wasn’t exactly sure what to name it in the file, or what capabilities to give it exactly, but here are 3 files I copied to “/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Profiles”KodiPlexAddonPi3.zip (2.4 KB)

Now getting this:
Jan 07, 2019 22:37:59.205 [0x7f0ab83fe700] ERROR - ClientProfileExtra: missing protocol parameter
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] WARN - ClientProfileExtra: ignoring directive: append-transcode-target-audio-codec(type=videoProfile&context=streaming&audioCodec=ac3)
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] ERROR - ClientProfileExtra: missing protocol parameter
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] WARN - ClientProfileExtra: ignoring directive: append-transcode-target-audio-codec(type=videoProfile&context=streaming&audioCodec=eac3)
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] ERROR - ClientProfileExtra: missing protocol parameter
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] WARN - ClientProfileExtra: ignoring directive: append-transcode-target-audio-codec(type=videoProfile&context=streaming&audioCodec=dca)
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] ERROR - ClientProfileExtra: missing protocol parameter
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] WARN - ClientProfileExtra: ignoring directive: append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=vp9)
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] WARN - TranscodeUniversalRequest: at least one profile extra directive could not be read
Jan 07, 2019 22:37:59.206 [0x7f0ab83fe700] DEBUG - TranscodeUniversalRequest: using augmented profile Web
Jan 07, 2019 22:37:59.207 [0x7f0ab83fe700] DEBUG - Downloading document http://127.0.0.1:32400/library/metadata/10125?includeBandwidths=1&offset=1885&X-Plex-Session-Identifier=b4c9c6e4-1210-4a05-8a53-a6cfc19f4398
Jan 07, 2019 22:37:59.207 [0x7f0ab83fe700] DEBUG - Auth: authenticated user 1 as crazyjpeters
Jan 07, 2019 22:37:59.220 [0x7f0ab83fe700] DEBUG - We’re going to try to auto-select a subtitle.
Jan 07, 2019 22:37:59.220 [0x7f0ab83fe700] DEBUG - Audio Stream: 46472, Subtitle Stream: -1
Jan 07, 2019 22:37:59.224 [0x7f0ab83fe700] DEBUG - Streaming Resource: Added session 0x7f0ab3897ce0:b4c9c6e4-1210-4a05-8a53-a6cfc19f4398
Jan 07, 2019 22:37:59.225 [0x7f0ab83fe700] DEBUG - Streaming Resource: Reached Decision id=10125 codes=(MDE=1000,Direct play OK.) media=(id=22585 part=(id=29889 decision=direct play protocol=http streams=(Video=(id=46471 decision= width=0 height=0) Audio=(id=46472 decision= channels=0 rate=0))))
Jan 07, 2019 22:37:59.227 [0x7f0ac6ffe700] DEBUG - Completed: [192.168.2.37:41088] 200 GET /video/:/transcode/universal/decision (12 live) GZIP 26ms 2926 bytes (pipelined: 1)

Still getting this:
Jan 07, 2019 22:39:03.113 [0x7f0ab4fff700] DEBUG - [Now] User is crazyjpeters (ID: 1)
Jan 07, 2019 22:39:03.113 [0x7f0ab4fff700] DEBUG - [Now] Device is Kodi (Kodi Add-on (raspberrypi)).
Jan 07, 2019 22:39:03.114 [0x7f0ab4fff700] ERROR - Unable to find client profile for device; platform=Kodi, platformVersion=17.6 Git:20171115-d69a54a, device=RaspberryPi, model=Unknown

But no skipping, no stopping, no buffering. Acts normal.

You might want to turn on Verbose logging while you debug.
Also, you might want to trim it down a bit. You have multiple video containers and they are heavily loaded. Debugging will be difficult with so many variables in play.

as an example, I did a quick grep of avi.

This is what came back. Notice how it’s layed out. it doesn’t need be loaded all into one line.

Asus Transformer Prime TF201.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="mp2,mp3" />
Panasonic Viera 3D TV.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="pcm" />
PlayStation 3.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="mp2,mp3" />
PlayStation 3.xml:    <DlnaVideoProfile container="avi" mimeType="video/divx" pn="AVI" />
Popcorn Hour.xml:    <VideoProfile container="avi" codec="mpeg4,msmpeg4v3" audioCodec="mp3,ac3,eac3,mp2,pcm" />
Samsung SmartTV.xml:    <VideoProfile container="avi" codec="h264,mpeg4,mjpeg" audioCodec="mp3,ac3,dca" />
Samsung Tizen.xml:    <VideoProfile container="avi" codec="h264,mpeg4,mjpeg" audioCodec="mp3,ac3,dca,pcm" subtitleFormat="srt,smi"/>
Samsung.xml:        <VideoProfile container="avi" codec="h264,msmpeg4v3,mpeg4,mjpeg" audioCodec="mp3,ac3,eac3,dca,pcm" subtitleCodec="srt,ssa,ass"/>
Sony Blu-ray 2013.xml:    <VideoProfile container="avi" codec="mpeg4,h264" audioCodec="ac3,aac,mp3,pcm" />
Sony Blu-ray.xml:    <VideoProfile container="avi" codec="mpeg4,h264" audioCodec="ac3,aac,mp3,pcm" />
Sony Blu-ray.xml:    <!-- US Players require avi be set to the video/mpeg mime type. If you have a European or Canadian player, you can delete the line below
Sony Blu-ray.xml:           (may help speed up avi load times on non-US players -->
Sony Blu-ray.xml:    <DlnaVideoProfile container="avi" mimeType="video/mpeg" />
Sony Bravia 2010.xml:<Client name="Sony Bravia 2010">
Sony Bravia 2010.xml:    <!-- These are inferred from the earlier PMS Bravia profile -->
Sony Bravia 2011.xml:<Client name="Sony Bravia 2011">
Sony Bravia 2011.xml:    <!-- These are inferred from the earlier PMS Bravia profile -->
Sony Bravia 2012.xml:<Client name="Sony Bravia 2012">
Sony Bravia 2012.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="ac3,mp3" />
Sony Bravia 2012.xml:    <!-- These are inferred from the earlier PMS Bravia profile -->
Sony Bravia 2013.xml:<Client name="Sony Bravia 2013">
Sony Bravia 2013.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="ac3,eac3,mp3" />
Sony Bravia 2013.xml:    <VideoProfile container="avi" codec="mjpeg" audioCodec="pcm" />
Sony Bravia 2013.xml:    <!-- These are inferred from the earlier PMS Bravia profile -->
Sony Bravia 2013.xml:    <DlnaVideoProfile container="avi" pn="" mineType="video/avi" />
Sony Streaming Player.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="mp2,mp3" />
sugar.cmake:  "Sony Bravia 2010.xml"
sugar.cmake:  "Sony Bravia 2011.xml"
sugar.cmake:  "Sony Bravia 2012.xml"
sugar.cmake:  "Sony Bravia 2013.xml"
Western Digital TV Live.xml:    <VideoProfile container="avi" codec="mpeg1video,mpeg2video,mpeg4,h264,vc1" audioCodec="ac3,dca,mp2,mp3,pcm" />
Windows 10 Desktop.xml:    <VideoProfile container="avi" codec="mpeg4,msmpeg4,msmpeg4v2,h264,vc1,wmv1,wmv2,wmv3,dvvideo,mjpeg" audioCodec="mp3,ac3,eac3,mp2,pcm" />
Windows 10 Mobile.xml:    <VideoProfile container="avi" codec="mpeg4,msmpeg4,h264,vc1,mjpeg" audioCodec="mp3,mp2,pcm" />
Windows.xml:    <VideoProfile container="avi" codec="mpeg4,msmpeg4v2,msmpeg4,msmpeg4v3,mjpeg" audioCodec="mp3,ac3,eac3,mp2,pcm" />
Xbox 360 App.xml:    <VideoProfile container="avi" codec="mpeg4,msmpeg4v3,mjpeg" audioCodec="ac3,eac3,mp2,pcm" />
Xbox 360.xml:    <VideoProfile container="avi" codec="mpeg4" audioCodec="ac3,mp3" />
Xbox 360.xml:    <VideoProfile container="avi" codec="h264" audioCodec="aac" />
Xbox 360.xml:    <DlnaVideoProfile container="avi" mimeType="video/avi" />
Xbox One.xml:    <VideoProfile container="avi" codec="mpeg4,msmpeg4,msmpeg4v2,msmpeg4v3,vc1,wmv3" audioCodec="aac,ac3,mp3" />
[/share/CACHEDEV2_DATA/.qpkg/PlexMediaServer/Resources/Profiles] #                                                                                          

Is the file name of the profile important at all, or is it only matching the device to the name inside the XML?

OK, I named the file Kodi and the name in the XML the same. Not sure it mattered, but it appears to be loading.Plex Media Server Logs_2019-01-08_22-19-37.zip (2.9 MB)
Kodi.zip (838 Bytes)

A few errors but seem to be benign, and not the same ones. There’s definitely something amiss, but I’m at a bit of a loss as to how to improve the XML. For some reason, the DLNA device spy doesn’t want to see my raspberrypi3.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.