RFR: 8268098: jdk.CPULoad event reports incorrect CPU usage inside a container
Yasumasa Suenaga
ysuenaga at openjdk.java.net
Mon Jun 7 12:47:58 UTC 2021
On Wed, 2 Jun 2021 06:59:53 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:
> jdk.CPULoad event reports CPU usage.
> If JVM runs in a container which is limited CPU resource (quota, shares, cpu), it is incorrect.
>
> When I ran following program inside a container with `--cpuset-cpu=0,1`, I expected jdk.CPULoad event reports 50%, however it reported 25% because container host has 4 CPUs.
>
>
> public class InfiniteLoop{
> public static void main(String[] args){
> while(true){
> }
> }
> }
>
>
> jdk.CPULoad event uses the result from `get_cpu_load()` in os_perf_linux.cpp, but it does not consider cgroups.
CPULoad in JMX returns container CPU usage if JVM runs on the container.
If JFR distinguishes ContainerCPUUsage and CPULoad, it is odd a bit. It seems to be inconsistent.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4299
More information about the hotspot-runtime-dev
mailing list