Skip to content

Instantly share code, notes, and snippets.

@carl-mastrangelo
Created May 2, 2021 17:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carl-mastrangelo/3091fe8cddab6ddd08780e463e18c477 to your computer and use it in GitHub Desktop.
Save carl-mastrangelo/3091fe8cddab6ddd08780e463e18c477 to your computer and use it in GitHub Desktop.
import jdk.internal.platform.Metrics;
public class Foo {
static volatile long bah;
public static void main(String [] args) {
Metrics metrics = Metrics.systemMetrics();
// com.sun.management.internal.OperatingSystemImpl
com.sun.management.OperatingSystemMXBean bean =
(com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();
while (bah < Integer.MAX_VALUE) {
bah++;
}
System.out.println("getSystemLoadAverage " + bean.getSystemLoadAverage());
System.out.println("getSystemCpuLoad " + bean.getProcessCpuTime());
System.out.println("getCpuLoad " + bean.getCpuLoad());
System.out.println("metrics.getCpuUsage " + metrics.getCpuUsage());
System.out.println("metrics.getCpuUserUsage " + metrics.getCpuUserUsage());
System.out.println("metrics.getCpuSystemUsage " + metrics.getCpuSystemUsage());
System.out.println("metrics.getCpuPeriod " + metrics.getCpuPeriod());
System.out.println("metrics.getCpuQuota " + metrics.getCpuQuota());
System.out.println("metrics.getCpuShares " + metrics.getCpuShares());
System.out.println("metrics.getCpuNumPeriods " + metrics.getCpuNumPeriods());
System.out.println("metrics.getCpuNumThrottled " + metrics.getCpuNumThrottled());
System.out.println("metrics.getCpuThrottledTime " + metrics.getCpuThrottledTime());
System.out.println("metrics.getEffectiveCpuCount " + metrics.getEffectiveCpuCount());
}
}
// getSystemLoadAverage is wrong, leaks host load
/*
root@e5c77df32f4f:/# javac Foo.java --add-exports=java.base/jdk.internal.platform=ALL-UNNAMED && java --add-exports=java.base/jdk.internal.platform=ALL-UNNAMED Foo
getSystemLoadAverage 0.91
getSystemCpuLoad 17970000000
getCpuLoad 0.3846918099051752
metrics.getCpuUsage 239357090682
metrics.getCpuUserUsage 24565
metrics.getCpuSystemUsage 744
metrics.getCpuPeriod 100000
metrics.getCpuQuota 50000
metrics.getCpuShares -1
metrics.getCpuNumPeriods 6222
metrics.getCpuNumThrottled 4654
metrics.getCpuThrottledTime 468037904487
metrics.getEffectiveCpuCount 1
getSystemLoadAverage 0.19
getSystemCpuLoad 20920000000
getCpuLoad 0.3919362471524164
metrics.getCpuUsage 263577126210 // Entire container life time, not just process
metrics.getCpuUserUsage 27105
metrics.getCpuSystemUsage 759
metrics.getCpuPeriod 100000
metrics.getCpuQuota 50000
metrics.getCpuShares -1
metrics.getCpuNumPeriods 6725
metrics.getCpuNumThrottled 5137
metrics.getCpuThrottledTime 502327690302
metrics.getEffectiveCpuCount 1
real 0m41.828s
user 0m20.905s
sys 0m0.042s
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment