Skip to content

Commit d1ed2dd

Browse files
committed
Made 30-tune-worker-processes.sh more robust and error-prone.
Fixes nginx#520.
1 parent dcaaf66 commit d1ed2dd

9 files changed

+207
-261
lines changed

Diff for: entrypoint/30-tune-worker-processes.sh

+23-29
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ get_cpuset() {
2121
cpusetroot=$1
2222
cpusetfile=$2
2323
ncpu=0
24-
[ -f "$cpusetroot/$cpusetfile" ] || return
24+
[ -f "$cpusetroot/$cpusetfile" ] || return 1
2525
for token in $( tr ',' ' ' < "$cpusetroot/$cpusetfile" ); do
2626
case "$token" in
2727
*-*)
@@ -39,27 +39,27 @@ get_cpuset() {
3939
get_quota() {
4040
cpuroot=$1
4141
ncpu=0
42-
[ -f "$cpuroot/cpu.cfs_quota_us" ] || return
43-
[ -f "$cpuroot/cpu.cfs_period_us" ] || return
42+
[ -f "$cpuroot/cpu.cfs_quota_us" ] || return 1
43+
[ -f "$cpuroot/cpu.cfs_period_us" ] || return 1
4444
cfs_quota=$( cat "$cpuroot/cpu.cfs_quota_us" )
4545
cfs_period=$( cat "$cpuroot/cpu.cfs_period_us" )
46-
[ "$cfs_quota" = "-1" ] && return
47-
[ "$cfs_period" = "0" ] && return
46+
[ "$cfs_quota" = "-1" ] && return 1
47+
[ "$cfs_period" = "0" ] && return 1
4848
ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )
49-
[ "$ncpu" -gt 0 ] || return
49+
[ "$ncpu" -gt 0 ] || return 1
5050
echo "$ncpu"
5151
}
5252

5353
get_quota_v2() {
5454
cpuroot=$1
5555
ncpu=0
56-
[ -f "$cpuroot/cpu.max" ] || return
56+
[ -f "$cpuroot/cpu.max" ] || return 1
5757
cfs_quota=$( cut -d' ' -f 1 < "$cpuroot/cpu.max" )
5858
cfs_period=$( cut -d' ' -f 2 < "$cpuroot/cpu.max" )
59-
[ "$cfs_quota" = "max" ] && return
60-
[ "$cfs_period" = "0" ] && return
59+
[ "$cfs_quota" = "max" ] && return 1
60+
[ "$cfs_period" = "0" ] && return 1
6161
ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )
62-
[ "$ncpu" -gt 0 ] || return
62+
[ "$ncpu" -gt 0 ] || return 1
6363
echo "$ncpu"
6464
}
6565

@@ -69,15 +69,16 @@ get_cgroup_v1_path() {
6969
foundroot=
7070
mountpoint=
7171

72-
[ -r "/proc/self/mountinfo" ] || return
73-
[ -r "/proc/self/cgroup" ] || return
72+
[ -r "/proc/self/mountinfo" ] || return 1
73+
[ -r "/proc/self/cgroup" ] || return 1
7474

7575
while IFS= read -r line; do
7676
case "$needle" in
7777
"cpuset")
7878
case "$line" in
7979
*cpuset*)
8080
found=$( echo "$line" | cut -d ' ' -f 4,5 )
81+
break
8182
;;
8283
esac
8384
;;
@@ -87,6 +88,7 @@ get_cgroup_v1_path() {
8788
;;
8889
*cpu,cpuacct*|*cpuacct,cpu|*cpuacct*|*cpu*)
8990
found=$( echo "$line" | cut -d ' ' -f 4,5 )
91+
break
9092
;;
9193
esac
9294
esac
@@ -101,13 +103,15 @@ __EOF__
101103
case "$controller" in
102104
cpuset)
103105
mountpoint=$( echo "$line" | cut -d: -f 3 )
106+
break
104107
;;
105108
esac
106109
;;
107110
"cpu")
108111
case "$controller" in
109112
cpu,cpuacct|cpuacct,cpu|cpuacct|cpu)
110113
mountpoint=$( echo "$line" | cut -d: -f 3 )
114+
break
111115
;;
112116
esac
113117
;;
@@ -132,8 +136,8 @@ get_cgroup_v2_path() {
132136
foundroot=
133137
mountpoint=
134138

135-
[ -r "/proc/self/mountinfo" ] || return
136-
[ -r "/proc/self/cgroup" ] || return
139+
[ -r "/proc/self/mountinfo" ] || return 1
140+
[ -r "/proc/self/cgroup" ] || return 1
137141

138142
while IFS= read -r line; do
139143
found=$( echo "$line" | cut -d ' ' -f 4,5 )
@@ -149,7 +153,7 @@ __EOF__
149153

150154
case "${found%% *}" in
151155
"")
152-
return
156+
return 1
153157
;;
154158
"/")
155159
foundroot="${found##* }$mountpoint"
@@ -167,20 +171,10 @@ ncpu_quota=
167171
ncpu_cpuset_v2=
168172
ncpu_quota_v2=
169173

170-
cpuset=$( get_cgroup_v1_path "cpuset" )
171-
[ "$cpuset" ] && ncpu_cpuset=$( get_cpuset "$cpuset" "cpuset.effective_cpus" )
172-
[ "$ncpu_cpuset" ] || ncpu_cpuset=$ncpu_online
173-
174-
cpu=$( get_cgroup_v1_path "cpu" )
175-
[ "$cpu" ] && ncpu_quota=$( get_quota "$cpu" )
176-
[ "$ncpu_quota" ] || ncpu_quota=$ncpu_online
177-
178-
cgroup_v2=$( get_cgroup_v2_path )
179-
[ "$cgroup_v2" ] && ncpu_cpuset_v2=$( get_cpuset "$cgroup_v2" "cpuset.cpus.effective" )
180-
[ "$ncpu_cpuset_v2" ] || ncpu_cpuset_v2=$ncpu_online
181-
182-
[ "$cgroup_v2" ] && ncpu_quota_v2=$( get_quota_v2 "$cgroup_v2" )
183-
[ "$ncpu_quota_v2" ] || ncpu_quota_v2=$ncpu_online
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
184178

185179
ncpu=$( printf "%s\n%s\n%s\n%s\n%s\n" \
186180
"$ncpu_online" \

Diff for: mainline/alpine-perl/30-tune-worker-processes.sh

+23-29
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ get_cpuset() {
2121
cpusetroot=$1
2222
cpusetfile=$2
2323
ncpu=0
24-
[ -f "$cpusetroot/$cpusetfile" ] || return
24+
[ -f "$cpusetroot/$cpusetfile" ] || return 1
2525
for token in $( tr ',' ' ' < "$cpusetroot/$cpusetfile" ); do
2626
case "$token" in
2727
*-*)
@@ -39,27 +39,27 @@ get_cpuset() {
3939
get_quota() {
4040
cpuroot=$1
4141
ncpu=0
42-
[ -f "$cpuroot/cpu.cfs_quota_us" ] || return
43-
[ -f "$cpuroot/cpu.cfs_period_us" ] || return
42+
[ -f "$cpuroot/cpu.cfs_quota_us" ] || return 1
43+
[ -f "$cpuroot/cpu.cfs_period_us" ] || return 1
4444
cfs_quota=$( cat "$cpuroot/cpu.cfs_quota_us" )
4545
cfs_period=$( cat "$cpuroot/cpu.cfs_period_us" )
46-
[ "$cfs_quota" = "-1" ] && return
47-
[ "$cfs_period" = "0" ] && return
46+
[ "$cfs_quota" = "-1" ] && return 1
47+
[ "$cfs_period" = "0" ] && return 1
4848
ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )
49-
[ "$ncpu" -gt 0 ] || return
49+
[ "$ncpu" -gt 0 ] || return 1
5050
echo "$ncpu"
5151
}
5252

5353
get_quota_v2() {
5454
cpuroot=$1
5555
ncpu=0
56-
[ -f "$cpuroot/cpu.max" ] || return
56+
[ -f "$cpuroot/cpu.max" ] || return 1
5757
cfs_quota=$( cut -d' ' -f 1 < "$cpuroot/cpu.max" )
5858
cfs_period=$( cut -d' ' -f 2 < "$cpuroot/cpu.max" )
59-
[ "$cfs_quota" = "max" ] && return
60-
[ "$cfs_period" = "0" ] && return
59+
[ "$cfs_quota" = "max" ] && return 1
60+
[ "$cfs_period" = "0" ] && return 1
6161
ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )
62-
[ "$ncpu" -gt 0 ] || return
62+
[ "$ncpu" -gt 0 ] || return 1
6363
echo "$ncpu"
6464
}
6565

@@ -69,15 +69,16 @@ get_cgroup_v1_path() {
6969
foundroot=
7070
mountpoint=
7171

72-
[ -r "/proc/self/mountinfo" ] || return
73-
[ -r "/proc/self/cgroup" ] || return
72+
[ -r "/proc/self/mountinfo" ] || return 1
73+
[ -r "/proc/self/cgroup" ] || return 1
7474

7575
while IFS= read -r line; do
7676
case "$needle" in
7777
"cpuset")
7878
case "$line" in
7979
*cpuset*)
8080
found=$( echo "$line" | cut -d ' ' -f 4,5 )
81+
break
8182
;;
8283
esac
8384
;;
@@ -87,6 +88,7 @@ get_cgroup_v1_path() {
8788
;;
8889
*cpu,cpuacct*|*cpuacct,cpu|*cpuacct*|*cpu*)
8990
found=$( echo "$line" | cut -d ' ' -f 4,5 )
91+
break
9092
;;
9193
esac
9294
esac
@@ -101,13 +103,15 @@ __EOF__
101103
case "$controller" in
102104
cpuset)
103105
mountpoint=$( echo "$line" | cut -d: -f 3 )
106+
break
104107
;;
105108
esac
106109
;;
107110
"cpu")
108111
case "$controller" in
109112
cpu,cpuacct|cpuacct,cpu|cpuacct|cpu)
110113
mountpoint=$( echo "$line" | cut -d: -f 3 )
114+
break
111115
;;
112116
esac
113117
;;
@@ -132,8 +136,8 @@ get_cgroup_v2_path() {
132136
foundroot=
133137
mountpoint=
134138

135-
[ -r "/proc/self/mountinfo" ] || return
136-
[ -r "/proc/self/cgroup" ] || return
139+
[ -r "/proc/self/mountinfo" ] || return 1
140+
[ -r "/proc/self/cgroup" ] || return 1
137141

138142
while IFS= read -r line; do
139143
found=$( echo "$line" | cut -d ' ' -f 4,5 )
@@ -149,7 +153,7 @@ __EOF__
149153

150154
case "${found%% *}" in
151155
"")
152-
return
156+
return 1
153157
;;
154158
"/")
155159
foundroot="${found##* }$mountpoint"
@@ -167,20 +171,10 @@ ncpu_quota=
167171
ncpu_cpuset_v2=
168172
ncpu_quota_v2=
169173

170-
cpuset=$( get_cgroup_v1_path "cpuset" )
171-
[ "$cpuset" ] && ncpu_cpuset=$( get_cpuset "$cpuset" "cpuset.effective_cpus" )
172-
[ "$ncpu_cpuset" ] || ncpu_cpuset=$ncpu_online
173-
174-
cpu=$( get_cgroup_v1_path "cpu" )
175-
[ "$cpu" ] && ncpu_quota=$( get_quota "$cpu" )
176-
[ "$ncpu_quota" ] || ncpu_quota=$ncpu_online
177-
178-
cgroup_v2=$( get_cgroup_v2_path )
179-
[ "$cgroup_v2" ] && ncpu_cpuset_v2=$( get_cpuset "$cgroup_v2" "cpuset.cpus.effective" )
180-
[ "$ncpu_cpuset_v2" ] || ncpu_cpuset_v2=$ncpu_online
181-
182-
[ "$cgroup_v2" ] && ncpu_quota_v2=$( get_quota_v2 "$cgroup_v2" )
183-
[ "$ncpu_quota_v2" ] || ncpu_quota_v2=$ncpu_online
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
184178

185179
ncpu=$( printf "%s\n%s\n%s\n%s\n%s\n" \
186180
"$ncpu_online" \

0 commit comments

Comments
 (0)