> 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
>  - [x] Submit testing

Severin Gehwolf has updated the pull request incrementally with one additional 
commit since the last revision:

  8245543: Cgroups: Incorrect detection logic on some systems (still 
reproducible)

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/485/files
  - new: https://git.openjdk.java.net/jdk/pull/485/files/d334ac60..5e2ca2dc

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=485&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=485&range=02-03

  Stats: 548 lines in 5 files changed: 284 ins; 193 del; 71 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

Reply via email to