On Wed, 12 Nov 2025 20:28:41 GMT, Severin Gehwolf <[email protected]> wrote:
>> Please review this change to the Linux container detection code updating the
>> mapping function of cg v2 to most recent runtimes' implementation. OCI has
>> been standardized with cgroup v1 in mind and there is a mapping function in
>> place - implemented by container runtimes such as `runc` or `crun` - which
>> map the passed `--cpu-shares` value on the engine's `run` command to the
>> internal cgroup v2 `cpu.weight` interface file's values.
>>
>> For runtimes lower than 1.23 (crun) and 1.3.2 (runc) the mapping function
>> was (where `f(x)=<cpu.weight value>` and `x=<cpu-shares CLI value>`):
>>
>>
>> f(x) = {(x - 2) \times 9999 + 1 \over 262142}
>>
>>
>> This changed in `crun` >= 1.23 and `runc` >= 1.3.2 to:
>>
>>
>> f(x)=10^{({{\log_{2}(x)}^2 \over 612} + {125 \over 612} \times \log_{2}(x) -
>> {7 \over 34})}
>>
>>
>> Therefore, we need to find the inverse of the new quadratic mapping function
>> and use that over the inverse of the old mapping function. Since the input
>> domain is `[2,262144]` for `--cpu-shares` mapping to `[1,10000]` for
>> `cpu.weight` we can discount the negative exponent value as a possible
>> solution.
>>
>> Since there are production systems out there with those runtimes already I
>> believe it's time to change the mapping function internal to the JDK to the
>> new one in JDK 26. There is a chance that JDK 26 would run on old runtimes
>> in a container using cgroup v2, resulting in wrong diagnostics. The chance
>> of this happening will decrease over time.
>>
>> Thoughts?
>>
>> **Testing:**
>> - [x] GHA
>> - [x] `test/hotspot/jtreg/containers` and `test/jdk/jdk/internal/platform`
>> on cgroup v1 (with an old runtime - code not affected) and on cgroup v2 with
>> a new runtime. All tests passed.
>
> Severin Gehwolf has updated the pull request incrementally with one
> additional commit since the last revision:
>
> Fix TestMisc for podman on cg v1 in rootless mode.
LGTM
-------------
Marked as reviewed by cnorrbin (Committer).
PR Review: https://git.openjdk.org/jdk/pull/28157#pullrequestreview-3458531316