This is an automated email from the ASF dual-hosted git repository.

caigy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-operator.git


The following commit(s) were added to refs/heads/master by this push:
     new 839cc01  when use cgroups v2, controller failed to start (#230)
839cc01 is described below

commit 839cc01299092f62dfd233fdcec9b346f636e544
Author: usernameisnull <rangerforce...@gmail.com>
AuthorDate: Sun Dec 29 11:12:07 2024 +0800

    when use cgroups v2, controller failed to start (#230)
---
 images/controller/alpine/runserver-customize.sh | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/images/controller/alpine/runserver-customize.sh 
b/images/controller/alpine/runserver-customize.sh
index 38e2526..da990c3 100755
--- a/images/controller/alpine/runserver-customize.sh
+++ b/images/controller/alpine/runserver-customize.sh
@@ -55,12 +55,30 @@ calculate_heap_sizes()
     case "`uname`" in
         Linux)
             system_memory_in_mb=`free -m| sed -n '2p' | awk '{print $2}'`
-            system_memory_in_mb_in_docker=$(($(cat 
/sys/fs/cgroup/memory/memory.limit_in_bytes)/1024/1024))
+            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`
-            system_cpu_cores_in_docker=$(($(cat 
/sys/fs/cgroup/cpu/cpu.cfs_quota_us)/$(cat 
/sys/fs/cgroup/cpu/cpu.cfs_period_us)))
+            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

Reply via email to