RFR: 8343191: Cgroup v1 subsystem fails to set subsystem path [v3]

Severin Gehwolf sgehwolf at openjdk.org
Sat Nov 30 00:30:03 UTC 2024


On Fri, 29 Nov 2024 14:47:13 GMT, Sergey Chernyshev <schernyshev at openjdk.org> wrote:

> > Right. I'm still not convinced this extra reduction buys us much. The adjust controller logic will handle it if kept as is in the Metrics version.
> 
> The adjust controller logic won't handle it, because it reduces the path from child to parent. It's goal is to locate the smallest limit.

It's goal is to find the path for a specific controller that has the lowest limit and keeps that path for that controller for the rest of the run-time of the JVM. Consider a case where this reduction currently happens in `set_subsystem_path()`. Instead of the manual work of setting it to a path where the directory actually exists we set it to `<mount_path>/<cgroup_path>`.

In the cloudflare case we'd end up with a subsystem path of `/sys/fs/cgroup/cpu,cpuacct/system.slice/garden.service/garden/bad/2f57368b-0eda-4e52-64d8-af5c`. Since the cgroup_path != _root we trigger path adjustment increasing the chance to detect any lower limit in any of the paths down to the mount point. By doing so **and** there is a lower limit in the hierarchy we know the path exists as well and that is being used from then on.

So if  `/sys/fs/cgroup/cpu,cpuacct/system.slice/garden.service/garden` existed and has a limit it would be used. I thought this is the reason why cg v2 didn't need the same fix when `--cgroupns=host` is used.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21808#discussion_r1863797758


More information about the core-libs-dev mailing list