Skip to content

Commit

Permalink
fix: Fix not reading limits when cgroup v2 used (#107)
Browse files Browse the repository at this point in the history
Docker image was not picking up memory limits when cgroup v2 was used.
This lead to incorrect java heap memory limits that lead to crashes due
to OOMKilled as described in #106.

Add extra check for limits in cgroup v2 file for the image to correctly read
memory limits with both cgroup v1 and cgroup v2.

Resolves #106

---

Signed-off-by: funbiscuit <[email protected]>
  • Loading branch information
funbiscuit authored Sep 29, 2023
1 parent de7836a commit 757b91e
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/main/scripts/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -309,11 +309,15 @@ fi
echo $$ > ${ANCHOR_FILE}

if [ "$MEM_LIMIT_MB" = "" ]; then
DOCKER_LIM_FILE="/sys/fs/cgroup/memory/memory.limit_in_bytes"

if [ -e "${DOCKER_LIM_FILE}" ]; then
MEM_LIMIT_MB=$(($(cat ${DOCKER_LIM_FILE})/1024/1024))
echo "Using process mem limit of ${MEM_LIMIT_MB}MiB from ${DOCKER_LIM_FILE}"
CGROUP_V1_LIM_FILE="/sys/fs/cgroup/memory/memory.limit_in_bytes"
CGROUP_V2_LIM_FILE="/sys/fs/cgroup/memory.max"

if [ -e "${CGROUP_V1_LIM_FILE}" ]; then
MEM_LIMIT_MB=$(($(cat ${CGROUP_V1_LIM_FILE})/1024/1024))
echo "Using process mem limit of ${MEM_LIMIT_MB}MiB from ${CGROUP_V1_LIM_FILE}"
elif [ -e "${CGROUP_V2_LIM_FILE}" ]; then
MEM_LIMIT_MB=$(($(cat ${CGROUP_V2_LIM_FILE})/1024/1024))
echo "Using process mem limit of ${MEM_LIMIT_MB}MiB from ${CGROUP_V2_LIM_FILE}"
else
MEM_LIMIT_MB="1536"
echo "No process mem limit provided or found, defaulting to ${MEM_LIMIT_MB}MiB"
Expand Down

0 comments on commit 757b91e

Please sign in to comment.