8313083: Print 'rss' and 'cache' as part of the container information

Reviewed-by: sgehwolf
This commit is contained in:
Gerard Ziemski 2024-01-10 17:29:55 +00:00
parent a7db4feceb
commit c96cbe481c
9 changed files with 46 additions and 1 deletions

@ -266,6 +266,8 @@ class CgroupSubsystem: public CHeapObj<mtInternal> {
virtual jlong memory_and_swap_limit_in_bytes() = 0;
virtual jlong memory_soft_limit_in_bytes() = 0;
virtual jlong memory_max_usage_in_bytes() = 0;
virtual jlong rss_usage_in_bytes() = 0;
virtual jlong cache_usage_in_bytes() = 0;
virtual char * cpu_cpuset_cpus() = 0;
virtual char * cpu_cpuset_memory_nodes() = 0;

@ -214,6 +214,17 @@ jlong CgroupV1Subsystem::memory_max_usage_in_bytes() {
return memmaxusage;
}
jlong CgroupV1Subsystem::rss_usage_in_bytes() {
GET_CONTAINER_INFO_LINE(julong, _memory->controller(), "/memory.stat",
"rss", JULONG_FORMAT, JULONG_FORMAT, rss);
return rss;
}
jlong CgroupV1Subsystem::cache_usage_in_bytes() {
GET_CONTAINER_INFO_LINE(julong, _memory->controller(), "/memory.stat",
"cache", JULONG_FORMAT, JULONG_FORMAT, cache);
return cache;
}
jlong CgroupV1Subsystem::kernel_memory_usage_in_bytes() {
GET_CONTAINER_INFO(jlong, _memory->controller(), "/memory.kmem.usage_in_bytes",

@ -79,6 +79,8 @@ class CgroupV1Subsystem: public CgroupSubsystem {
jlong memory_soft_limit_in_bytes();
jlong memory_usage_in_bytes();
jlong memory_max_usage_in_bytes();
jlong rss_usage_in_bytes();
jlong cache_usage_in_bytes();
jlong kernel_memory_usage_in_bytes();
jlong kernel_memory_limit_in_bytes();

@ -139,6 +139,18 @@ jlong CgroupV2Subsystem::memory_max_usage_in_bytes() {
return OSCONTAINER_ERROR; // not supported
}
jlong CgroupV2Subsystem::rss_usage_in_bytes() {
GET_CONTAINER_INFO_LINE(julong, _memory->controller(), "/memory.stat",
"anon", JULONG_FORMAT, JULONG_FORMAT, rss);
return rss;
}
jlong CgroupV2Subsystem::cache_usage_in_bytes() {
GET_CONTAINER_INFO_LINE(julong, _memory->controller(), "/memory.stat",
"file", JULONG_FORMAT, JULONG_FORMAT, cache);
return cache;
}
char* CgroupV2Subsystem::mem_soft_limit_val() {
GET_CONTAINER_INFO_CPTR(cptr, _unified, "/memory.low",
"Memory Soft Limit is: %s", "%1023s", mem_soft_limit_str, 1024);

@ -78,6 +78,8 @@ class CgroupV2Subsystem: public CgroupSubsystem {
jlong memory_soft_limit_in_bytes();
jlong memory_usage_in_bytes();
jlong memory_max_usage_in_bytes();
jlong rss_usage_in_bytes();
jlong cache_usage_in_bytes();
char * cpu_cpuset_cpus();
char * cpu_cpuset_memory_nodes();

@ -92,6 +92,16 @@ jlong OSContainer::memory_max_usage_in_bytes() {
return cgroup_subsystem->memory_max_usage_in_bytes();
}
jlong OSContainer::rss_usage_in_bytes() {
assert(cgroup_subsystem != nullptr, "cgroup subsystem not available");
return cgroup_subsystem->rss_usage_in_bytes();
}
jlong OSContainer::cache_usage_in_bytes() {
assert(cgroup_subsystem != nullptr, "cgroup subsystem not available");
return cgroup_subsystem->cache_usage_in_bytes();
}
void OSContainer::print_version_specific_info(outputStream* st) {
assert(cgroup_subsystem != nullptr, "cgroup subsystem not available");
cgroup_subsystem->print_version_specific_info(st);

@ -55,6 +55,8 @@ class OSContainer: AllStatic {
static jlong memory_soft_limit_in_bytes();
static jlong memory_usage_in_bytes();
static jlong memory_max_usage_in_bytes();
static jlong rss_usage_in_bytes();
static jlong cache_usage_in_bytes();
static int active_processor_count();

@ -2398,6 +2398,8 @@ bool os::Linux::print_container_info(outputStream* st) {
OSContainer::print_container_helper(st, OSContainer::memory_soft_limit_in_bytes(), "memory_soft_limit_in_bytes");
OSContainer::print_container_helper(st, OSContainer::memory_usage_in_bytes(), "memory_usage_in_bytes");
OSContainer::print_container_helper(st, OSContainer::memory_max_usage_in_bytes(), "memory_max_usage_in_bytes");
OSContainer::print_container_helper(st, OSContainer::rss_usage_in_bytes(), "rss_usage_in_bytes");
OSContainer::print_container_helper(st, OSContainer::cache_usage_in_bytes(), "cache_usage_in_bytes");
OSContainer::print_version_specific_info(st);

@ -117,7 +117,9 @@ public class TestMisc {
"Maximum Memory Usage",
"memory_max_usage_in_bytes",
"maximum number of tasks",
"current number of tasks"
"current number of tasks",
"rss_usage_in_bytes",
"cache_usage_in_bytes"
};
for (String s : expectedToContain) {