Skip to content

Commit

Permalink
Improve Broker‘s startup script for Accurate Memory Allocation (#210)
Browse files Browse the repository at this point in the history
This update prevents Out-Of-Memory (OOM) errors in  Broker's pods by accurately adhering to their allocated memory, rather than relying on the host's total memory.
  • Loading branch information
MrLYG authored Feb 4, 2024
1 parent 674666f commit e80e97f
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions images/broker/alpine/runbroker-customize.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,34 @@ calculate_heap_sizes()
case "`uname`" in
Linux)
system_memory_in_mb=`free -m| sed -n '2p' | awk '{print $2}'`
if [ -f /sys/fs/cgroup/memory/memory.limit_in_bytes ]; then
system_memory_in_mb_in_docker=$(($(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)/1024/1024))
elif [ -f /sys/fs/cgroup/memory.max ]; then
system_memory_in_mb_in_docker=$(($(cat /sys/fs/cgroup/memory.max)/1024/1024))
else
error_exit "Can not get memory, please check cgroup"
fi
if [ $system_memory_in_mb_in_docker -lt $system_memory_in_mb ];then
system_memory_in_mb=$system_memory_in_mb_in_docker
fi

system_cpu_cores=`egrep -c 'processor([[:space:]]+):.*' /proc/cpuinfo`
if [ -f /sys/fs/cgroup/cpu/cpu.cfs_quota_us ]; then
system_cpu_cores_in_docker=$(($(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us)/$(cat /sys/fs/cgroup/cpu/cpu.cfs_period_us)))
elif [ -f /sys/fs/cgroup/cpu.max ]; then
QUOTA=$(cut -d ' ' -f 1 /sys/fs/cgroup/cpu.max)
PERIOD=$(cut -d ' ' -f 2 /sys/fs/cgroup/cpu.max)
if [ "$QUOTA" == "max" ]; then # no limit, see https://docs.kernel.org/admin-guide/cgroup-v2.html#cgroup-v2-cpu
system_cpu_cores_in_docker=$system_cpu_cores
else
system_cpu_cores_in_docker=$(($QUOTA/$PERIOD))
fi
else
error_exit "Can not get cpu, please check cgroup"
fi
if [ $system_cpu_cores_in_docker -lt $system_cpu_cores -a $system_cpu_cores_in_docker -ne 0 ];then
system_cpu_cores=$system_cpu_cores_in_docker
fi
;;
FreeBSD)
system_memory_in_bytes=`sysctl hw.physmem | awk '{print $2}'`
Expand Down

0 comments on commit e80e97f

Please sign in to comment.