NeoDude Posted January 29, 2017 Share Posted January 29, 2017 Has anybody else had this behaviour? I have 32 cores available and so I decided to isolate all but the first 4 (2 + pairs) for use in VMs and dockers. I assigned 8 of these to my Plex server docker, this resulted in only 1 core being used by Plex when transcoding, resulting in unwatchable playback. Removing the ISOLCPU command results in all 8 assigned cores being used. I remember having previous performance issues when using ISOLCPU for my Win10 VM and wonder if something similar was happening with my 8-core VM perhaps being reduced to 1 core. I'll need to test this sometime. Link to comment
Squid Posted January 29, 2017 Share Posted January 29, 2017 I could be mistaken, but if you've isolated all but the 4+4 cores to unRaid, then there is no point in actually assigning them to a docker container since by default the container will use all the cores (4+4) available to unRaid. Also, I don't know (and haven't experimented) with how the --cpuset-cpus parameter changes if you have isolated cores. (ie: does the core numbers change) Link to comment
NeoDude Posted January 29, 2017 Author Share Posted January 29, 2017 You've got me confused now, lol. Here's how my core assignments are currently set up... cpu 0 / 16 UnRaid cpu 1 / 17 UnRaid cpu 2 / 18 pfSense cpu 3 / 19 pfSense cpu 4 / 20 Legolas cpu 5 / 21 Legolas cpu 6 / 22 Legolas cpu 7 / 23 Legolas cpu 8 / 24 Dockers cpu 9 / 25 Dockers cpu 10 / 26 Dockers cpu 11 / 27 Dockers cpu 12 / 28 Plex cpu 13 / 29 Plex cpu 14 / 30 Plex cpu 15 / 31 Plex So, they way I understood ISOLCPU works was that I could stop UnRaid from using cores that I wanted to use for something else, i.e. VMs and Dockers. So I added this to my config... isolcpus=2-15,18-31 The behaviour that I'm seeing is that with the command in place, my Plex server only uses 1 core (Core 12). Without the command it uses all 8. Link to comment
1812 Posted January 29, 2017 Share Posted January 29, 2017 I could be very wrong, but I understood that if you use isolcpus in the syslinux.cfg that it isolated the listed cores from unRaid AND the dockers, meaning that your dockers/plugins can only now use what you have listed as 1, 16, 17. I've never pinned cores to dockers, just isolated cores for vm's, and let unRaid and my dockers figure out which cores of the remaining they want to use and when, and have had no issues with that. Link to comment
Squid Posted January 29, 2017 Share Posted January 29, 2017 ISOLCPUS works by preventing the OS from utilizing certain cores. Since Docker runs directly as processes on the OS, then it only has access to the cores that you've assigned specifically for unRaid use. Therefore if you want Plex to utilize all of the cores available to unRaid, it is pointless to add in the cpuset-cpus parameter to plex as you've implied you did by stating you assigned the cores to Plex. And by your example, your assigning Plex access to cores that it doesn't have access to since the OS doesn't have access to it. A docker, although similar to a VM is not a VM and is constrained by the limits imposed firstly by the OS and then secondly by the parameters passed to it in the template. When I said that I don't know how the cpuset-cpus parameter changes when isolating cores, I mean that I do not know if the docker subsystem when you're say isolating cores 0 and 16 only as an example will the cpuset-cpus parameter take 0 and 16 or does it take 0 and 1 since there are only two cores. My system does not have hyperthreaded cores, and I am quite happy without the ISOLCPUS setting, so I have no reason to experiment. Link to comment
NeoDude Posted January 29, 2017 Author Share Posted January 29, 2017 Ah gotcha. So isolcpu stops dockers from using them too, makes sense. Strange that even when I had them all isolated, Plex still managed to use it's first assigned core. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.