Skip to content

8254001: [Metrics] Enhance parsing of cgroup interface files for version detection #170

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 55 additions & 5 deletions jdk/src/linux/classes/jdk/internal/platform/CgroupInfo.java
Original file line number Diff line number Diff line change
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
Loading