RFR: 8281181: Do not use CPU Shares to compute active processor count

Ioi Lam iklam at openjdk.java.net
Wed Mar 2 21:10:24 UTC 2022


This is a simple change (Linux-only) that removes the consideration of Cgroups CPU Shares from the active process count calculation. Of note, this fixes CPU underutilization when Java is executed by Kubernetes without CPU resources limits. 

Please see the CSR [JDK-8281571](https://bugs.openjdk.java.net/browse/JDK-8281571) for a detailed discussion of the reasons to make this change.

To err on the side of caution, we added a temporary (and deprecated) VM flag `-XX:+UseContainerCpuShares` to enable the old behavior. We believe the old behavior is wrong and unnecessary. The plan is to remove the old behavior in JDK 20.

The associated flag, `PreferContainerQuotaForCPUCount` is also deprecated. Both flags will be obsoleted in JDK 20.

Testing with tiers 1-4, as well as container tests in tier5.

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

Commit messages:
 - 8281181: Do not use CPU Shares to compute active processor count

Changes: https://git.openjdk.java.net/jdk/pull/7666/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7666&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8281181
  Stats: 50 lines in 5 files changed: 32 ins; 0 del; 18 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7666.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7666/head:pull/7666

PR: https://git.openjdk.java.net/jdk/pull/7666


More information about the hotspot-dev mailing list