< prev index next >
test/lib/jdk/test/lib/containers/cgroup/MetricsTesterCgroupV2.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
~
*** 32,48 ****
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import jdk.internal.platform.Metrics;
- import jdk.test.lib.Asserts;
public class MetricsTesterCgroupV2 implements CgroupMetricsTester {
private static final long UNLIMITED = -1;
- private static final long NOT_SUPPORTED = -2;
private static final UnifiedController UNIFIED = new UnifiedController();
private static final String MAX = "max";
private static final int PER_CPU_SHARES = 1024;
private final long startSysVal;
--- 32,47 ----
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
+ import jdk.internal.platform.CgroupSubsystem;
import jdk.internal.platform.Metrics;
public class MetricsTesterCgroupV2 implements CgroupMetricsTester {
private static final long UNLIMITED = -1;
private static final UnifiedController UNIFIED = new UnifiedController();
private static final String MAX = "max";
private static final int PER_CPU_SHARES = 1024;
private final long startSysVal;
*** 151,175 ****
private void warn(String metric, long oldVal, long newVal) {
CgroupMetricsTester.warn(UnifiedController.NAME, metric, oldVal, newVal);
}
- private void verifyNotSupported(long metricVal) {
- Asserts.assertEquals(metricVal, NOT_SUPPORTED, "Expected metric to be not supported!");
- }
-
- private void verifyNotSupported(double metricVal) {
- if (!CgroupMetricsTester.compareWithErrorMargin(NOT_SUPPORTED, metricVal)) {
- throw new RuntimeException("Metric not supported, got: " + metricVal +
- " expected: " + NOT_SUPPORTED);
- }
- }
-
- private void verifyPerCpuNotSupported(long[] perCpuUsage) {
- Asserts.assertNull(perCpuUsage, "perCpuUsage expected to be not supported");
- }
-
private long getCpuShares(String file) {
long rawVal = getLongValueFromFile(file);
if (rawVal == 0 || rawVal == 100) {
return UNLIMITED;
}
--- 150,159 ----
*** 241,273 ****
oldVal = metrics.getMemoryUsage();
newVal = getLongValueFromFile("memory.current");
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
fail("memory.current", oldVal, newVal);
}
- verifyNotSupported(metrics.getMemoryMaxUsage());
-
- // Kernel memory
- verifyNotSupported(metrics.getKernelMemoryFailCount());
- verifyNotSupported(metrics.getKernelMemoryLimit());
- verifyNotSupported(metrics.getKernelMemoryMaxUsage());
- verifyNotSupported(metrics.getKernelMemoryUsage());
-
- //TCP Memory
- verifyNotSupported(metrics.getTcpMemoryFailCount());
- verifyNotSupported(metrics.getTcpMemoryLimit());
- verifyNotSupported(metrics.getTcpMemoryMaxUsage());
oldVal = metrics.getTcpMemoryUsage();
newVal = getLongValueEntryFromFile("memory.stat", "sock");
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
fail("memory.stat[sock]", oldVal, newVal);
}
- // Memory and Swap
- verifyNotSupported(metrics.getMemoryAndSwapFailCount());
- verifyNotSupported(metrics.getMemoryAndSwapMaxUsage());
-
oldVal = metrics.getMemoryAndSwapLimit();
newVal = getLongLimitValueFromFile("memory.swap.max");
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
fail("memory.swap.max", oldVal, newVal);
}
--- 225,241 ----
*** 282,292 ****
newVal = getLongLimitValueFromFile("memory.high");
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
fail("memory.high", oldVal, newVal);
}
- Asserts.assertNull(metrics.isMemoryOOMKillEnabled(), "Not supported");
}
@Override
public void testCpuAccounting() {
Metrics metrics = Metrics.systemMetrics();
--- 250,259 ----
*** 295,306 ****
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
warn("cpu.stat[usage_usec]", oldVal, newVal);
}
- verifyPerCpuNotSupported(metrics.getPerCpuUsage());
-
oldVal = metrics.getCpuUserUsage();
newVal = TimeUnit.MICROSECONDS.toNanos(getLongValueEntryFromFile("cpu.stat", "user_usec"));
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
warn("cpu.stat[user_usec]", oldVal, newVal);
}
--- 262,271 ----
*** 398,410 ****
Arrays.sort(newVal);
if (Arrays.compare(oldVal, newVal) != 0) {
fail("cpuset.mems.effective", Arrays.toString(oldVal),
Arrays.toString(newVal));
}
-
- verifyNotSupported(metrics.getCpuSetMemoryPressure());
- Asserts.assertNull(metrics.isCpuSetMemoryPressureEnabled(), "Should be not supported");
}
private int[] mapNullToEmpty(int[] cpus) {
if (cpus == null) {
// Not available. For sake of testing continue with an
--- 363,372 ----
*** 420,431 ****
// make system call
long newSysVal = metrics.getCpuSystemUsage();
long newUserVal = metrics.getCpuUserUsage();
long newUsage = metrics.getCpuUsage();
- verifyPerCpuNotSupported(metrics.getPerCpuUsage());
-
// system/user CPU usage counters may be slowly increasing.
// allow for equal values for a pass
if (newSysVal < startSysVal) {
fail("getCpuSystemUsage", newSysVal, startSysVal);
}
--- 382,391 ----
*** 442,454 ****
}
@Override
public void testMemoryUsage() {
Metrics metrics = Metrics.systemMetrics();
- long memoryMaxUsage = metrics.getMemoryMaxUsage();
long memoryUsage = metrics.getMemoryUsage();
! long newMemoryMaxUsage = 0, newMemoryUsage = 0;
// allocate memory in a loop and check more than once for new values
// otherwise we might occasionally see the effect of decreasing new memory
// values. For example because the system could free up memory
byte[][] bytes = new byte[32][];
--- 402,413 ----
}
@Override
public void testMemoryUsage() {
Metrics metrics = Metrics.systemMetrics();
long memoryUsage = metrics.getMemoryUsage();
! long newMemoryUsage = 0;
// allocate memory in a loop and check more than once for new values
// otherwise we might occasionally see the effect of decreasing new memory
// values. For example because the system could free up memory
byte[][] bytes = new byte[32][];
*** 457,472 ****
newMemoryUsage = metrics.getMemoryUsage();
if (newMemoryUsage > memoryUsage) {
break;
}
}
- newMemoryMaxUsage = metrics.getMemoryMaxUsage();
-
- if (newMemoryMaxUsage < memoryMaxUsage) {
- fail("getMemoryMaxUsage", memoryMaxUsage,
- newMemoryMaxUsage);
- }
if (newMemoryUsage < memoryUsage) {
fail("getMemoryUsage", memoryUsage, newMemoryUsage);
}
}
--- 416,425 ----
*** 509,517 ****
}
}
return accumulator;
}).collect(Collectors.summingLong(e -> e));
} catch (IOException e) {
! return Metrics.LONG_RETVAL_NOT_SUPPORTED;
}
}
}
--- 462,470 ----
}
}
return accumulator;
}).collect(Collectors.summingLong(e -> e));
} catch (IOException e) {
! return CgroupSubsystem.LONG_RETVAL_UNLIMITED;
}
}
}
< prev index next >