44set -eu
55
66LC_ALL=C
7- ME=$( basename " $0 " )
7+ ME=$( basename " $0 " )
88PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
99
1010[ " ${NGINX_ENTRYPOINT_WORKER_PROCESSES_AUTOTUNE:- } " ] || exit 0
1111
12- touch /etc/nginx/nginx.conf 2> /dev/null || { echo >&2 " $ME : ERROR: Cannot modify /etc/nginx/nginx.conf (read-only file system?)" ; exit 0; }
12+ touch /etc/nginx/nginx.conf 2> /dev/null || {
13+ echo >&2 " $ME : ERROR: Cannot modify /etc/nginx/nginx.conf (read-only file system?)"
14+ exit 0
15+ }
1316
1417ceildiv () {
1518 num=$1
1619 div=$2
17- echo $(( (num + div - 1 ) / div ))
20+ echo $(( (num + div - 1 ) / div))
1821}
1922
2023get_cpuset () {
2124 cpusetroot=$1
2225 cpusetfile=$2
2326 ncpu=0
2427 [ -f " $cpusetroot /$cpusetfile " ] || return 1
25- for token in $( tr ' ,' ' ' < " $cpusetroot /$cpusetfile " ) ; do
28+ for token in $( tr ' ,' ' ' < " $cpusetroot /$cpusetfile " ) ; do
2629 case " $token " in
27- * -* )
28- count=$( seq " $( echo " $token " | tr ' -' ' ' ) " | wc -l )
29- ncpu=$(( ncpu+ count ))
30- ;;
31- * )
32- ncpu=$(( ncpu+ 1 ))
33- ;;
30+ * -* )
31+ count=$( seq " $( echo " $token " | tr ' -' ' ' ) " | wc -l)
32+ ncpu=$(( ncpu + count ))
33+ ;;
34+ * )
35+ ncpu=$(( ncpu + 1 ))
36+ ;;
3437 esac
3538 done
3639 echo " $ncpu "
@@ -41,11 +44,11 @@ get_quota() {
4144 ncpu=0
4245 [ -f " $cpuroot /cpu.cfs_quota_us" ] || return 1
4346 [ -f " $cpuroot /cpu.cfs_period_us" ] || return 1
44- cfs_quota=$( cat " $cpuroot /cpu.cfs_quota_us" )
45- cfs_period=$( cat " $cpuroot /cpu.cfs_period_us" )
47+ cfs_quota=$( cat " $cpuroot /cpu.cfs_quota_us" )
48+ cfs_period=$( cat " $cpuroot /cpu.cfs_period_us" )
4649 [ " $cfs_quota " = " -1" ] && return 1
4750 [ " $cfs_period " = " 0" ] && return 1
48- ncpu=$( ceildiv " $cfs_quota " " $cfs_period " )
51+ ncpu=$( ceildiv " $cfs_quota " " $cfs_period " )
4952 [ " $ncpu " -gt 0 ] || return 1
5053 echo " $ncpu "
5154}
@@ -54,11 +57,11 @@ get_quota_v2() {
5457 cpuroot=$1
5558 ncpu=0
5659 [ -f " $cpuroot /cpu.max" ] || return 1
57- cfs_quota=$( cut -d' ' -f 1 < " $cpuroot /cpu.max" )
58- cfs_period=$( cut -d' ' -f 2 < " $cpuroot /cpu.max" )
60+ cfs_quota=$( cut -d' ' -f 1 < " $cpuroot /cpu.max" )
61+ cfs_period=$( cut -d' ' -f 2 < " $cpuroot /cpu.max" )
5962 [ " $cfs_quota " = " max" ] && return 1
6063 [ " $cfs_period " = " 0" ] && return 1
61- ncpu=$( ceildiv " $cfs_quota " " $cfs_period " )
64+ ncpu=$( ceildiv " $cfs_quota " " $cfs_period " )
6265 [ " $ncpu " -gt 0 ] || return 1
6366 echo " $ncpu "
6467}
@@ -74,59 +77,59 @@ get_cgroup_v1_path() {
7477
7578 while IFS= read -r line; do
7679 case " $needle " in
77- " cpuset" )
78- case " $line " in
79- * cpuset* )
80- found=$( echo " $line " | cut -d ' ' -f 4,5 )
81- break
82- ;;
83- esac
80+ " cpuset" )
81+ case " $line " in
82+ * cpuset* )
83+ found=$( echo " $line " | cut -d ' ' -f 4,5)
84+ break
85+ ;;
86+ esac
87+ ;;
88+ " cpu" )
89+ case " $line " in
90+ * cpuset* ) ;;
91+ * cpu,cpuacct* | * cpuacct,cpu | * cpuacct* | * cpu* )
92+ found=$( echo " $line " | cut -d ' ' -f 4,5)
93+ break
8494 ;;
85- " cpu" )
86- case " $line " in
87- * cpuset* )
88- ;;
89- * cpu,cpuacct* |* cpuacct,cpu|* cpuacct* |* cpu* )
90- found=$( echo " $line " | cut -d ' ' -f 4,5 )
91- break
92- ;;
93- esac
95+ esac
96+ ;;
9497 esac
95- done << __EOF__
96- $( grep -F -- ' - cgroup ' /proc/self/mountinfo )
98+ done << __EOF__
99+ $( grep -F -- ' - cgroup ' /proc/self/mountinfo)
97100__EOF__
98101
99102 while IFS= read -r line; do
100- controller=$( echo " $line " | cut -d: -f 2 )
103+ controller=$( echo " $line " | cut -d: -f 2)
101104 case " $needle " in
102- " cpuset" )
103- case " $controller " in
104- cpuset)
105- mountpoint=$( echo " $line " | cut -d: -f 3 )
106- break
107- ;;
108- esac
105+ " cpuset" )
106+ case " $controller " in
107+ cpuset)
108+ mountpoint=$( echo " $line " | cut -d: -f 3)
109+ break
109110 ;;
110- " cpu " )
111- case " $controller " in
112- cpu,cpuacct|cpuacct,cpu|cpuacct|cpu )
113- mountpoint= $( echo " $line " | cut -d: -f 3 )
114- break
115- ;;
116- esac
111+ esac
112+ ;;
113+ " cpu" )
114+ case " $controller " in
115+ cpu,cpuacct | cpuacct,cpu | cpuacct | cpu)
116+ mountpoint= $( echo " $line " | cut -d: -f 3 )
117+ break
117118 ;;
119+ esac
120+ ;;
118121 esac
119- done << __EOF__
120- $( grep -F -- ' cpu' /proc/self/cgroup )
122+ done << __EOF__
123+ $( grep -F -- ' cpu' /proc/self/cgroup)
121124__EOF__
122125
123126 case " ${found%% * } " in
124- " /" )
125- foundroot=" ${found##* } $mountpoint "
126- ;;
127- " $mountpoint " )
128- foundroot=" ${found##* } "
129- ;;
127+ " /" )
128+ foundroot=" ${found##* } $mountpoint "
129+ ;;
130+ " $mountpoint " )
131+ foundroot=" ${found##* } "
132+ ;;
130133 esac
131134 echo " $foundroot "
132135}
@@ -140,49 +143,49 @@ get_cgroup_v2_path() {
140143 [ -r " /proc/self/cgroup" ] || return 1
141144
142145 while IFS= read -r line; do
143- found=$( echo " $line " | cut -d ' ' -f 4,5 )
144- done << __EOF__
145- $( grep -F -- ' - cgroup2 ' /proc/self/mountinfo )
146+ found=$( echo " $line " | cut -d ' ' -f 4,5)
147+ done << __EOF__
148+ $( grep -F -- ' - cgroup2 ' /proc/self/mountinfo)
146149__EOF__
147150
148151 while IFS= read -r line; do
149- mountpoint=$( echo " $line " | cut -d: -f 3 )
150- done << __EOF__
151- $( grep -F -- ' 0::' /proc/self/cgroup )
152+ mountpoint=$( echo " $line " | cut -d: -f 3)
153+ done << __EOF__
154+ $( grep -F -- ' 0::' /proc/self/cgroup)
152155__EOF__
153156
154157 case " ${found%% * } " in
155- " " )
156- return 1
157- ;;
158- " /" )
159- foundroot=" ${found##* } $mountpoint "
160- ;;
161- " $mountpoint " | /../* )
162- foundroot=" ${found##* } "
163- ;;
158+ " " )
159+ return 1
160+ ;;
161+ " /" )
162+ foundroot=" ${found##* } $mountpoint "
163+ ;;
164+ " $mountpoint " | /../* )
165+ foundroot=" ${found##* } "
166+ ;;
164167 esac
165168 echo " $foundroot "
166169}
167170
168- ncpu_online=$( getconf _NPROCESSORS_ONLN )
171+ ncpu_online=$( getconf _NPROCESSORS_ONLN)
169172ncpu_cpuset=
170173ncpu_quota=
171174ncpu_cpuset_v2=
172175ncpu_quota_v2=
173176
174- cpuset=$( get_cgroup_v1_path " cpuset" ) && ncpu_cpuset=$( get_cpuset " $cpuset " " cpuset.effective_cpus" ) || ncpu_cpuset=$ncpu_online
175- cpu=$( get_cgroup_v1_path " cpu" ) && ncpu_quota=$( get_quota " $cpu " ) || ncpu_quota=$ncpu_online
176- cgroup_v2=$( get_cgroup_v2_path ) && ncpu_cpuset_v2=$( get_cpuset " $cgroup_v2 " " cpuset.cpus.effective" ) || ncpu_cpuset_v2=$ncpu_online
177- cgroup_v2=$( get_cgroup_v2_path ) && ncpu_quota_v2=$( get_quota_v2 " $cgroup_v2 " ) || ncpu_quota_v2=$ncpu_online
178-
179- ncpu=$( printf " %s\n%s\n%s\n%s\n%s\n" \
180- " $ncpu_online " \
181- " $ncpu_cpuset " \
182- " $ncpu_quota " \
183- " $ncpu_cpuset_v2 " \
184- " $ncpu_quota_v2 " \
185- | sort -n \
186- | head -n 1 )
177+ cpuset=$( get_cgroup_v1_path " cpuset" ) && ncpu_cpuset=$( get_cpuset " $cpuset " " cpuset.effective_cpus" ) || ncpu_cpuset=$ncpu_online
178+ cpu=$( get_cgroup_v1_path " cpu" ) && ncpu_quota=$( get_quota " $cpu " ) || ncpu_quota=$ncpu_online
179+ cgroup_v2=$( get_cgroup_v2_path) && ncpu_cpuset_v2=$( get_cpuset " $cgroup_v2 " " cpuset.cpus.effective" ) || ncpu_cpuset_v2=$ncpu_online
180+ cgroup_v2=$( get_cgroup_v2_path) && ncpu_quota_v2=$( get_quota_v2 " $cgroup_v2 " ) || ncpu_quota_v2=$ncpu_online
181+
182+ ncpu=$( printf " %s\n%s\n%s\n%s\n%s\n" \
183+ " $ncpu_online " \
184+ " $ncpu_cpuset " \
185+ " $ncpu_quota " \
186+ " $ncpu_cpuset_v2 " \
187+ " $ncpu_quota_v2 " |
188+ sort -n |
189+ head -n 1)
187190
188191sed -i.bak -r ' s/^(worker_processes)(.*)$/# Commented out by ' " $ME " ' on ' " $( date) " ' \n#\1\2\n\1 ' " $ncpu " ' ;/' /etc/nginx/nginx.conf
0 commit comments