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.

Reviewed-by: bobv, adinn
  • Loading branch information
jerboaa committed Sep 29, 2020
1 parent d5be829 commit ff6843ca4842498791061f924c545fa9469cc1dc
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;
@@ -287,7 +287,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);
}

@@ -252,9 +252,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 ff6843c

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented on ff6843c Sep 29, 2020

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.