Skip to content
Permalink
Browse files
8253714: [cgroups v2] Soft memory limit incorrectly using memory.high
The early implementation of cgroups v2 support was done with
crun 0.8 and it contained a bug which set memory.high over
memory.low when --memory-reservation was being used as a CLI
option.

This bug has been fixed in later crun versions, starting with
crun 0.11. Use memory.low in OpenJDK as well.

Backport-of: ff6843c
  • Loading branch information
zhengyu123 committed Mar 23, 2022
1 parent 19f26f7 commit f76091ec9a05a8cb40514082dcff22c7829fa3aa
Showing 3 changed files with 4 additions and 4 deletions.
@@ -149,7 +149,7 @@ jlong CgroupV2Subsystem::memory_max_usage_in_bytes() {
}

char* CgroupV2Subsystem::mem_soft_limit_val() {
GET_CONTAINER_INFO_CPTR(cptr, _unified, "/memory.high",
GET_CONTAINER_INFO_CPTR(cptr, _unified, "/memory.low",
"Memory Soft Limit is: %s", "%s", mem_soft_limit_str, 1024);
if (mem_soft_limit_str == NULL) {
return NULL;
@@ -292,7 +292,7 @@ public long getMemoryAndSwapUsage() {

@Override
public long getMemorySoftLimit() {
String softLimitStr = CgroupSubsystemController.getStringValue(unified, "memory.high");
String softLimitStr = CgroupSubsystemController.getStringValue(unified, "memory.low");
return limitFromString(softLimitStr);
}

@@ -245,9 +245,9 @@ public void testMemorySubsystem() {
}

oldVal = metrics.getMemorySoftLimit();
newVal = getLongLimitValueFromFile("memory.high");
newVal = getLongLimitValueFromFile("memory.low");
if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) {
fail("memory.high", oldVal, newVal);
fail("memory.low", oldVal, newVal);
}

}

1 comment on commit f76091e

@openjdk-notifier
Copy link

@openjdk-notifier openjdk-notifier bot commented on f76091e Mar 23, 2022

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.