< prev index next >
src/java.base/linux/classes/jdk/internal/platform/cgroupv1/CgroupV1Subsystem.java
Print this page
@ rev 57734 : Review feedback
|
o rev 57733 : 8231111: Cgroups v2: Rework Metrics in java.base so as to recognize unified hierarchy
| Reviewed-by: bobv, mchung
~
o rev 56862 : 8231111: Cgroups v2: Rework Metrics in java.base so as to recognize unified hierarchy
| Reviewed-by: bobv
~
*** 31,43 ****
import java.util.stream.Stream;
import jdk.internal.platform.CgroupSubsystem;
import jdk.internal.platform.CgroupSubsystemController;
import jdk.internal.platform.CgroupUtil;
! import jdk.internal.platform.Metrics;
! public class CgroupV1Subsystem implements CgroupSubsystem {
private CgroupV1MemorySubSystemController memory;
private CgroupV1SubsystemController cpu;
private CgroupV1SubsystemController cpuacct;
private CgroupV1SubsystemController cpuset;
private CgroupV1SubsystemController blkio;
--- 31,43 ----
import java.util.stream.Stream;
import jdk.internal.platform.CgroupSubsystem;
import jdk.internal.platform.CgroupSubsystemController;
import jdk.internal.platform.CgroupUtil;
! import jdk.internal.platform.MetricsCgroupV1;
! public class CgroupV1Subsystem implements CgroupSubsystem, MetricsCgroupV1 {
private CgroupV1MemorySubSystemController memory;
private CgroupV1SubsystemController cpu;
private CgroupV1SubsystemController cpuacct;
private CgroupV1SubsystemController cpuset;
private CgroupV1SubsystemController blkio;
*** 263,273 ****
private static long getLongValue(CgroupSubsystemController controller,
String parm) {
return CgroupSubsystemController.getLongValue(controller,
parm,
! CgroupV1SubsystemController::convertStringToLong);
}
public String getProvider() {
return PROVIDER_NAME;
}
--- 263,274 ----
private static long getLongValue(CgroupSubsystemController controller,
String parm) {
return CgroupSubsystemController.getLongValue(controller,
parm,
! CgroupV1SubsystemController::convertStringToLong,
! CgroupSubsystem.LONG_RETVAL_UNLIMITED);
}
public String getProvider() {
return PROVIDER_NAME;
}
*** 294,308 ****
}
return percpu;
}
public long getCpuUserUsage() {
! return CgroupSubsystemController.getLongEntry(cpuacct, "cpuacct.stat", "user");
}
public long getCpuSystemUsage() {
! return CgroupSubsystemController.getLongEntry(cpuacct, "cpuacct.stat", "system");
}
/*****************************************************************
* CPU Subsystem
--- 295,309 ----
}
return percpu;
}
public long getCpuUserUsage() {
! return CgroupV1SubsystemController.getLongEntry(cpuacct, "cpuacct.stat", "user");
}
public long getCpuSystemUsage() {
! return CgroupV1SubsystemController.getLongEntry(cpuacct, "cpuacct.stat", "system");
}
/*****************************************************************
* CPU Subsystem
*** 318,342 ****
}
public long getCpuShares() {
long retval = getLongValue(cpu, "cpu.shares");
if (retval == 0 || retval == 1024)
! return Metrics.LONG_RETVAL_UNLIMITED;
else
return retval;
}
public long getCpuNumPeriods() {
! return CgroupSubsystemController.getLongEntry(cpu, "cpu.stat", "nr_periods");
}
public long getCpuNumThrottled() {
! return CgroupSubsystemController.getLongEntry(cpu, "cpu.stat", "nr_throttled");
}
public long getCpuThrottledTime() {
! return CgroupSubsystemController.getLongEntry(cpu, "cpu.stat", "throttled_time");
}
public long getEffectiveCpuCount() {
return Runtime.getRuntime().availableProcessors();
}
--- 319,343 ----
}
public long getCpuShares() {
long retval = getLongValue(cpu, "cpu.shares");
if (retval == 0 || retval == 1024)
! return CgroupSubsystem.LONG_RETVAL_UNLIMITED;
else
return retval;
}
public long getCpuNumPeriods() {
! return CgroupV1SubsystemController.getLongEntry(cpu, "cpu.stat", "nr_periods");
}
public long getCpuNumThrottled() {
! return CgroupV1SubsystemController.getLongEntry(cpu, "cpu.stat", "nr_throttled");
}
public long getCpuThrottledTime() {
! return CgroupV1SubsystemController.getLongEntry(cpu, "cpu.stat", "throttled_time");
}
public long getEffectiveCpuCount() {
return Runtime.getRuntime().availableProcessors();
}
*** 361,371 ****
public int[] getEffectiveCpuSetMems() {
return CgroupSubsystemController.stringRangeToIntArray(CgroupSubsystemController.getStringValue(cpuset, "cpuset.effective_mems"));
}
public double getCpuSetMemoryPressure() {
! return CgroupSubsystemController.getDoubleValue(cpuset, "cpuset.memory_pressure");
}
public Boolean isCpuSetMemoryPressureEnabled() {
long val = getLongValue(cpuset, "cpuset.memory_pressure_enabled");
return (val == 1);
--- 362,372 ----
public int[] getEffectiveCpuSetMems() {
return CgroupSubsystemController.stringRangeToIntArray(CgroupSubsystemController.getStringValue(cpuset, "cpuset.effective_mems"));
}
public double getCpuSetMemoryPressure() {
! return CgroupV1SubsystemController.getDoubleValue(cpuset, "cpuset.memory_pressure");
}
public Boolean isCpuSetMemoryPressureEnabled() {
long val = getLongValue(cpuset, "cpuset.memory_pressure_enabled");
return (val == 1);
*** 386,413 ****
if (retval > CgroupV1SubsystemController.UNLIMITED_MIN) {
if (memory.isHierarchical()) {
// memory.limit_in_bytes returned unlimited, attempt
// hierarchical memory limit
String match = "hierarchical_memory_limit";
! retval = CgroupSubsystemController.getLongValueMatchingLine(memory,
"memory.stat",
! match,
! CgroupV1Subsystem::convertHierachicalLimitLine);
}
}
return CgroupV1SubsystemController.longValOrUnlimited(retval);
}
- public static long convertHierachicalLimitLine(String line) {
- String[] tokens = line.split("\\s");
- if (tokens.length == 2) {
- String strVal = tokens[1];
- return CgroupV1SubsystemController.convertStringToLong(strVal);
- }
- return CgroupV1SubsystemController.UNLIMITED_MIN + 1; // unlimited
- }
-
public long getMemoryMaxUsage() {
return getLongValue(memory, "memory.max_usage_in_bytes");
}
public long getMemoryUsage() {
--- 387,404 ----
if (retval > CgroupV1SubsystemController.UNLIMITED_MIN) {
if (memory.isHierarchical()) {
// memory.limit_in_bytes returned unlimited, attempt
// hierarchical memory limit
String match = "hierarchical_memory_limit";
! retval = CgroupV1SubsystemController.getLongValueMatchingLine(memory,
"memory.stat",
! match);
}
}
return CgroupV1SubsystemController.longValOrUnlimited(retval);
}
public long getMemoryMaxUsage() {
return getLongValue(memory, "memory.max_usage_in_bytes");
}
public long getMemoryUsage() {
*** 455,468 ****
if (retval > CgroupV1SubsystemController.UNLIMITED_MIN) {
if (memory.isHierarchical()) {
// memory.memsw.limit_in_bytes returned unlimited, attempt
// hierarchical memory limit
String match = "hierarchical_memsw_limit";
! retval = CgroupSubsystemController.getLongValueMatchingLine(memory,
"memory.stat",
! match,
! CgroupV1Subsystem::convertHierachicalLimitLine);
}
}
return CgroupV1SubsystemController.longValOrUnlimited(retval);
}
--- 446,458 ----
if (retval > CgroupV1SubsystemController.UNLIMITED_MIN) {
if (memory.isHierarchical()) {
// memory.memsw.limit_in_bytes returned unlimited, attempt
// hierarchical memory limit
String match = "hierarchical_memsw_limit";
! retval = CgroupV1SubsystemController.getLongValueMatchingLine(memory,
"memory.stat",
! match);
}
}
return CgroupV1SubsystemController.longValOrUnlimited(retval);
}
*** 473,483 ****
public long getMemoryAndSwapUsage() {
return getLongValue(memory, "memory.memsw.usage_in_bytes");
}
public Boolean isMemoryOOMKillEnabled() {
! long val = CgroupSubsystemController.getLongEntry(memory, "memory.oom_control", "oom_kill_disable");
return (val == 0);
}
public long getMemorySoftLimit() {
return CgroupV1SubsystemController.longValOrUnlimited(getLongValue(memory, "memory.soft_limit_in_bytes"));
--- 463,473 ----
public long getMemoryAndSwapUsage() {
return getLongValue(memory, "memory.memsw.usage_in_bytes");
}
public Boolean isMemoryOOMKillEnabled() {
! long val = CgroupV1SubsystemController.getLongEntry(memory, "memory.oom_control", "oom_kill_disable");
return (val == 0);
}
public long getMemorySoftLimit() {
return CgroupV1SubsystemController.longValOrUnlimited(getLongValue(memory, "memory.soft_limit_in_bytes"));
*** 488,500 ****
* BlKIO Subsystem
****************************************************************/
public long getBlkIOServiceCount() {
! return CgroupSubsystemController.getLongEntry(blkio, "blkio.throttle.io_service_bytes", "Total");
}
public long getBlkIOServiced() {
! return CgroupSubsystemController.getLongEntry(blkio, "blkio.throttle.io_serviced", "Total");
}
}
--- 478,490 ----
* BlKIO Subsystem
****************************************************************/
public long getBlkIOServiceCount() {
! return CgroupV1SubsystemController.getLongEntry(blkio, "blkio.throttle.io_service_bytes", "Total");
}
public long getBlkIOServiced() {
! return CgroupV1SubsystemController.getLongEntry(blkio, "blkio.throttle.io_serviced", "Total");
}
}
< prev index next >