An issue similar to [JDK-8239559](https://bugs.openjdk.java.net/browse/JDK-8239559) has been discovered. On the affected system, `/proc/self/mountinfo` contains a line such as this one:
35 26 0:26 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime - cgroup systemd rw,name=systemd Note that `/proc/cgroups` looks like this: #subsys_name hierarchy num_cgroups enabled cpuset 0 1 1 cpu 0 1 1 cpuacct 0 1 1 blkio 0 1 1 memory 0 1 1 devices 0 1 1 freezer 0 1 1 net_cls 0 1 1 perf_event 0 1 1 net_prio 0 1 1 hugetlb 0 1 1 pids 0 1 1 This is in fact a cgroups v1 system with systemd put into a separate namespace via FS type `cgroup`. That mountinfo line confuses the cgroups version detection heuristic. It only looked whether or not there is **any** entry in mountinfo of FS-type `cgroup` . That's wrong. A better heuristic would be looking at controllers we care about: `cpu`, `cpuacct`, `memory`, `cpuset` for hotspot and some more for the Java side. The proposed fix on the hotspot side is to set `any_cgroup_mounts_found` to true only if one of those controllers show up in mountinfo. Otherwise, we know it's cgroup v2 due to the zero hierarchy ids. For the Java side the proposal is to add some parsing for mountinfo lines and look for `cgroup` FS-type lines which aren't also mounted purely for systemd. **Testing** - [x] Linux x86_64 container tests on cgroup v1 (fastdebug) - [x] Linux x86_64 container tests on cgroup v2 (fastdebug) - [x] Added regression test which fails prior the patch and passes after - [ ] Submit testing (still running) ------------- Commit messages: - 8245543: Cgroups: Incorrect detection logic on some systems (still reproducible) Changes: https://git.openjdk.java.net/jdk/pull/485/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=485&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8245543 Stats: 89 lines in 4 files changed: 83 ins; 1 del; 5 mod Patch: https://git.openjdk.java.net/jdk/pull/485.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/485/head:pull/485 PR: https://git.openjdk.java.net/jdk/pull/485