< prev index next >

src/java.base/linux/classes/jdk/internal/platform/cgroupv1/SubSystem.java

Print this page
@  rev 54202 : 8217338: [Containers] Improve systemd slice memory limit support
|  Summary: Use hierachical memory limit in addition to memory_limits_in_bytes
~  Reviewed-by: duke

*** 27,40 **** import java.io.BufferedReader; import java.io.IOException; import java.math.BigInteger; import java.nio.file.Files; - import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Optional; import java.util.stream.Stream; public class SubSystem { String root; String mountPoint; --- 27,41 ---- import java.io.BufferedReader; import java.io.IOException; import java.math.BigInteger; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; + import java.util.List; import java.util.Optional; + import java.util.function.Function; import java.util.stream.Stream; public class SubSystem { String root; String mountPoint;
*** 97,110 **** return null; } } public static long getLongValue(SubSystem subsystem, String parm) { String strval = getStringValue(subsystem, parm); ! long retval = 0; if (strval == null) return 0L; try { retval = Long.parseLong(strval); } catch (NumberFormatException e) { --- 98,133 ---- return null; } } + public static long getLongValueMatchingLine(SubSystem subsystem, + String param, + String match, + Function<String, Long> conversion) { + long retval = Metrics.unlimited_minimum + 1; // default unlimited + try { + List<String> lines = Files.readAllLines(Paths.get(subsystem.path(), param)); + for (String line: lines) { + if (line.contains(match)) { + retval = conversion.apply(line); + break; + } + } + } catch (IOException e) { + // Ignore. Default is unlimited. + } + return retval; + } + public static long getLongValue(SubSystem subsystem, String parm) { String strval = getStringValue(subsystem, parm); ! return convertStringToLong(strval); ! } + public static long convertStringToLong(String strval) { + long retval = 0; if (strval == null) return 0L; try { retval = Long.parseLong(strval); } catch (NumberFormatException e) {
*** 213,218 **** --- 236,259 ---- ints[i++] = n; } return ints; } + + public static class MemorySubSystem extends SubSystem { + + private boolean hierarchical; + + public MemorySubSystem(String root, String mountPoint) { + super(root, mountPoint); + } + + boolean isHierarchical() { + return hierarchical; + } + + void setHierarchical(boolean hierarchical) { + this.hierarchical = hierarchical; + } + + } }
< prev index next >