< prev index next >

src/java.base/linux/classes/jdk/internal/platform/CgroupV1Metrics.java

Print this page
@  rev 57735 : Review feedback 2
|
o  rev 57734 : Review feedback
|
~

@@ -1,78 +1,168 @@
+/*
+ * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
 package jdk.internal.platform;
 
 /**
- * Cgroup v1 Metrics extensions
+ *
+ * Cgroup v1 extensions to the Metrics interface. Linux, only.
  *
  */
-public class CgroupV1Metrics extends CgroupMetrics implements MetricsCgroupV1 {
+public interface CgroupV1Metrics extends Metrics {
 
-    CgroupV1Metrics(MetricsCgroupV1 subsystem) {
-        super((CgroupSubsystem)subsystem);
-    }
-
-    @Override
-    public long getMemoryMaxUsage() {
-        return ((MetricsCgroupV1)subsystem).getMemoryMaxUsage();
-    }
-
-    @Override
-    public long getKernelMemoryFailCount() {
-        return ((MetricsCgroupV1)subsystem).getKernelMemoryFailCount();
-    }
-
-    @Override
-    public long getKernelMemoryLimit() {
-        return ((MetricsCgroupV1)subsystem).getKernelMemoryLimit();
-    }
-
-    @Override
-    public long getKernelMemoryMaxUsage() {
-        return ((MetricsCgroupV1)subsystem).getKernelMemoryMaxUsage();
-    }
-
-    @Override
-    public long getKernelMemoryUsage() {
-        return ((MetricsCgroupV1)subsystem).getKernelMemoryUsage();
-    }
-
-    @Override
-    public long getTcpMemoryFailCount() {
-        return ((MetricsCgroupV1)subsystem).getTcpMemoryFailCount();
-    }
-
-    @Override
-    public long getTcpMemoryLimit() {
-        return ((MetricsCgroupV1)subsystem).getTcpMemoryLimit();
-    }
-
-    @Override
-    public long getTcpMemoryMaxUsage() {
-        return ((MetricsCgroupV1)subsystem).getTcpMemoryMaxUsage();
-    }
-
-    @Override
-    public long getMemoryAndSwapFailCount() {
-        return ((MetricsCgroupV1)subsystem).getMemoryAndSwapFailCount();
-    }
-
-    @Override
-    public long getMemoryAndSwapMaxUsage() {
-        return ((MetricsCgroupV1)subsystem).getMemoryAndSwapMaxUsage();
-    }
-
-    @Override
-    public Boolean isMemoryOOMKillEnabled() {
-        return ((MetricsCgroupV1)subsystem).isMemoryOOMKillEnabled();
-    }
-
-    @Override
-    public double getCpuSetMemoryPressure() {
-        return ((MetricsCgroupV1)subsystem).getCpuSetMemoryPressure();
-    }
-
-    @Override
-    public Boolean isCpuSetMemoryPressureEnabled() {
-        return ((MetricsCgroupV1)subsystem).isCpuSetMemoryPressureEnabled();
-    }
+    /**
+     * Returns the largest amount of physical memory, in bytes, that
+     * have been allocated in the Isolation Group.
+     *
+     * @return The largest amount of memory in bytes or -1 if this
+     *         metric is not available. Returns -2 if this metric is not
+     *         supported.
+     *
+     */
+    public long getMemoryMaxUsage();
 
+    /**
+     * Returns the number of times that kernel memory requests in the
+     * Isolation Group have exceeded the kernel memory limit.
+     *
+     * @return The number of exceeded requests or -1 if metric
+     *         is not available.
+     *
+     */
+    public long getKernelMemoryFailCount();
+
+    /**
+     * Returns the maximum amount of kernel physical memory, in bytes, that
+     * can be allocated in the Isolation Group.
+     *
+     * @return The maximum amount of memory in bytes or -1 if
+     *         there is no limit set.
+     *
+     */
+    public long getKernelMemoryLimit();
+
+    /**
+     * Returns the largest amount of kernel physical memory, in bytes, that
+     * have been allocated in the Isolation Group.
+     *
+     * @return The largest amount of memory in bytes or -1 if this
+     *         metric is not available.
+     *
+     */
+    public long getKernelMemoryMaxUsage();
+
+    /**
+     * Returns the amount of kernel physical memory, in bytes, that
+     * is currently allocated in the current Isolation Group.
+     *
+     * @return The amount of memory in bytes allocated or -1 if this
+     *         metric is not available.
+     *
+     */
+    public long getKernelMemoryUsage();
+
+    /**
+     * Returns the number of times that networking memory requests in the
+     * Isolation Group have exceeded the kernel memory limit.
+     *
+     * @return The number of exceeded requests or -1 if the metric
+     *         is not available.
+     *
+     */
+    public long getTcpMemoryFailCount();
+
+    /**
+     * Returns the maximum amount of networking physical memory, in bytes,
+     * that can be allocated in the Isolation Group.
+     *
+     * @return The maximum amount of memory in bytes or -1 if
+     *         there is no limit.
+     *
+     */
+    public long getTcpMemoryLimit();
+
+    /**
+     * Returns the largest amount of networking physical memory, in bytes,
+     * that have been allocated in the Isolation Group.
+     *
+     * @return The largest amount of memory in bytes or -1 if this
+     *         metric is not available.
+     *
+     */
+    public long getTcpMemoryMaxUsage();
+
+    /**
+     * Returns the number of times that user memory requests in the
+     * Isolation Group have exceeded the memory + swap limit.
+     *
+     * @return The number of exceeded requests or -1 if the metric
+     *         is not available.
+     *
+     */
+    public long getMemoryAndSwapFailCount();
+
+    /**
+     * Returns the largest amount of physical memory and swap space,
+     * in bytes, that have been allocated in the Isolation Group.
+     *
+     * @return The largest amount of memory in bytes or -1 if this
+     *         metric is not available.
+     *
+     */
+    public long getMemoryAndSwapMaxUsage();
+
+    /**
+     * Returns the state of the Operating System Out of Memory termination
+     * policy.
+     *
+     * @return Returns true if operating system will terminate processes
+     *         in the Isolation Group that exceed the amount of available
+     *         memory, otherwise false. null will be returned if this
+     *         capability is not available on the current operating system.
+     *
+     */
+    public Boolean isMemoryOOMKillEnabled();
+
+    /**
+     * Returns the (attempts per second * 1000), if enabled, that the
+     * operating system tries to satisfy a memory request for any
+     * process in the current Isolation Group when no free memory is
+     * readily available.  Use {@link #isCpuSetMemoryPressureEnabled()} to
+     * determine if this support is enabled.
+     *
+     * @return Memory pressure or 0 if not enabled or -1 if metric is not
+     *         available.
+     *
+     */
+    public double getCpuSetMemoryPressure();
+
+    /**
+     * Returns the state of the memory pressure detection support.
+     *
+     * @return true if support is available and enabled. false otherwise.
+     *
+     */
+    public Boolean isCpuSetMemoryPressureEnabled();
 }
< prev index next >