Skip to content

Commit

Permalink
8254001: [Metrics] Enhance parsing of cgroup interface files for vers…
Browse files Browse the repository at this point in the history
…ion detection

Reviewed-by: sgehwolf
Backport-of: a50725db2ab621e1a17cb5505f78e4bc73972a27
  • Loading branch information
Jonathan Dowland committed Dec 16, 2022
1 parent b2619cf commit 1b04ffe
Show file tree
Hide file tree
Showing 5 changed files with 453 additions and 274 deletions.
60 changes: 55 additions & 5 deletions jdk/src/linux/classes/jdk/internal/platform/CgroupInfo.java
Expand Up @@ -26,36 +26,86 @@
package jdk.internal.platform;

/**
* Data structure to hold info from /proc/self/cgroup
* Data structure to hold info from /proc/self/cgroup,
* /proc/cgroups and /proc/self/mountinfo
*
* man 7 cgroups
*
* @see CgroupSubsystemFactory
*/
class CgroupInfo {
public class CgroupInfo {

private final String name;
private final int hierarchyId;
private final boolean enabled;
private String mountPoint;
private String mountRoot;
private String cgroupPath;

private CgroupInfo(String name, int hierarchyId, boolean enabled) {
this.name = name;
this.hierarchyId = hierarchyId;
this.enabled = enabled;
}

String getName() {
public String getName() {
return name;
}

int getHierarchyId() {
public int getHierarchyId() {
return hierarchyId;
}

boolean isEnabled() {
public boolean isEnabled() {
return enabled;
}

public String getMountPoint() {
return mountPoint;
}

public void setMountPoint(String mountPoint) {
this.mountPoint = mountPoint;
}

public String getMountRoot() {
return mountRoot;
}

public void setMountRoot(String mountRoot) {
this.mountRoot = mountRoot;
}

public String getCgroupPath() {
return cgroupPath;
}

public void setCgroupPath(String cgroupPath) {
this.cgroupPath = cgroupPath;
}

/*
* Creates a CgroupInfo instance from a line in /proc/cgroups.
* Comment token (hash) is handled by the caller.
*
* Example (annotated):
*
* #subsys_name hierarchy num_cgroups enabled
* cpuset 10 1 1 (a)
* cpu 7 8 1 (b)
* [...]
*
* Line (a) would yield:
* info = new CgroupInfo("cpuset", 10, true);
* return info;
* Line (b) results in:
* info = new CgroupInfo("cpu", 7, true);
* return info;
*
*
* See CgroupSubsystemFactory.determineType()
*
*/
static CgroupInfo fromCgroupsLine(String line) {
String[] tokens = line.split("\\s+");
if (tokens.length != 4) {
Expand Down

1 comment on commit 1b04ffe

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.