kubedocker
commited on
Commit
•
f5bd3cf
1
Parent(s):
632033e
Delete 30-tune-worker-processes.sh
Browse files- 30-tune-worker-processes.sh +0 -188
30-tune-worker-processes.sh
DELETED
@@ -1,188 +0,0 @@
|
|
1 |
-
#!/bin/sh
|
2 |
-
# vim:sw=2:ts=2:sts=2:et
|
3 |
-
|
4 |
-
set -eu
|
5 |
-
|
6 |
-
LC_ALL=C
|
7 |
-
ME=$(basename "$0")
|
8 |
-
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
9 |
-
|
10 |
-
[ "${NGINX_ENTRYPOINT_WORKER_PROCESSES_AUTOTUNE:-}" ] || exit 0
|
11 |
-
|
12 |
-
touch /etc/nginx/nginx.conf 2>/dev/null || { echo >&2 "$ME: error: can not modify /etc/nginx/nginx.conf (read-only file system?)"; exit 0; }
|
13 |
-
|
14 |
-
ceildiv() {
|
15 |
-
num=$1
|
16 |
-
div=$2
|
17 |
-
echo $(( (num + div - 1) / div ))
|
18 |
-
}
|
19 |
-
|
20 |
-
get_cpuset() {
|
21 |
-
cpusetroot=$1
|
22 |
-
cpusetfile=$2
|
23 |
-
ncpu=0
|
24 |
-
[ -f "$cpusetroot/$cpusetfile" ] || return 1
|
25 |
-
for token in $( tr ',' ' ' < "$cpusetroot/$cpusetfile" ); do
|
26 |
-
case "$token" in
|
27 |
-
*-*)
|
28 |
-
count=$( seq $(echo "$token" | tr '-' ' ') | wc -l )
|
29 |
-
ncpu=$(( ncpu+count ))
|
30 |
-
;;
|
31 |
-
*)
|
32 |
-
ncpu=$(( ncpu+1 ))
|
33 |
-
;;
|
34 |
-
esac
|
35 |
-
done
|
36 |
-
echo "$ncpu"
|
37 |
-
}
|
38 |
-
|
39 |
-
get_quota() {
|
40 |
-
cpuroot=$1
|
41 |
-
ncpu=0
|
42 |
-
[ -f "$cpuroot/cpu.cfs_quota_us" ] || return 1
|
43 |
-
[ -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" )
|
46 |
-
[ "$cfs_quota" = "-1" ] && return 1
|
47 |
-
[ "$cfs_period" = "0" ] && return 1
|
48 |
-
ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )
|
49 |
-
[ "$ncpu" -gt 0 ] || return 1
|
50 |
-
echo "$ncpu"
|
51 |
-
}
|
52 |
-
|
53 |
-
get_quota_v2() {
|
54 |
-
cpuroot=$1
|
55 |
-
ncpu=0
|
56 |
-
[ -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" )
|
59 |
-
[ "$cfs_quota" = "max" ] && return 1
|
60 |
-
[ "$cfs_period" = "0" ] && return 1
|
61 |
-
ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )
|
62 |
-
[ "$ncpu" -gt 0 ] || return 1
|
63 |
-
echo "$ncpu"
|
64 |
-
}
|
65 |
-
|
66 |
-
get_cgroup_v1_path() {
|
67 |
-
needle=$1
|
68 |
-
found=
|
69 |
-
foundroot=
|
70 |
-
mountpoint=
|
71 |
-
|
72 |
-
[ -r "/proc/self/mountinfo" ] || return 1
|
73 |
-
[ -r "/proc/self/cgroup" ] || return 1
|
74 |
-
|
75 |
-
while IFS= read -r line; do
|
76 |
-
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
|
84 |
-
;;
|
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
|
94 |
-
esac
|
95 |
-
done << __EOF__
|
96 |
-
$( grep -F -- '- cgroup ' /proc/self/mountinfo )
|
97 |
-
__EOF__
|
98 |
-
|
99 |
-
while IFS= read -r line; do
|
100 |
-
controller=$( echo "$line" | cut -d: -f 2 )
|
101 |
-
case "$needle" in
|
102 |
-
"cpuset")
|
103 |
-
case "$controller" in
|
104 |
-
cpuset)
|
105 |
-
mountpoint=$( echo "$line" | cut -d: -f 3 )
|
106 |
-
break
|
107 |
-
;;
|
108 |
-
esac
|
109 |
-
;;
|
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
|
117 |
-
;;
|
118 |
-
esac
|
119 |
-
done << __EOF__
|
120 |
-
$( grep -F -- 'cpu' /proc/self/cgroup )
|
121 |
-
__EOF__
|
122 |
-
|
123 |
-
case "${found%% *}" in
|
124 |
-
"/")
|
125 |
-
foundroot="${found##* }$mountpoint"
|
126 |
-
;;
|
127 |
-
"$mountpoint")
|
128 |
-
foundroot="${found##* }"
|
129 |
-
;;
|
130 |
-
esac
|
131 |
-
echo "$foundroot"
|
132 |
-
}
|
133 |
-
|
134 |
-
get_cgroup_v2_path() {
|
135 |
-
found=
|
136 |
-
foundroot=
|
137 |
-
mountpoint=
|
138 |
-
|
139 |
-
[ -r "/proc/self/mountinfo" ] || return 1
|
140 |
-
[ -r "/proc/self/cgroup" ] || return 1
|
141 |
-
|
142 |
-
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 |
-
__EOF__
|
147 |
-
|
148 |
-
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 |
-
__EOF__
|
153 |
-
|
154 |
-
case "${found%% *}" in
|
155 |
-
"")
|
156 |
-
return 1
|
157 |
-
;;
|
158 |
-
"/")
|
159 |
-
foundroot="${found##* }$mountpoint"
|
160 |
-
;;
|
161 |
-
"$mountpoint" | /../*)
|
162 |
-
foundroot="${found##* }"
|
163 |
-
;;
|
164 |
-
esac
|
165 |
-
echo "$foundroot"
|
166 |
-
}
|
167 |
-
|
168 |
-
ncpu_online=$( getconf _NPROCESSORS_ONLN )
|
169 |
-
ncpu_cpuset=
|
170 |
-
ncpu_quota=
|
171 |
-
ncpu_cpuset_v2=
|
172 |
-
ncpu_quota_v2=
|
173 |
-
|
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 )
|
187 |
-
|
188 |
-
sed -i.bak -r 's/^(worker_processes)(.*)$/# Commented out by '"$ME"' on '"$(date)"'\n#\1\2\n\1 '"$ncpu"';/' /etc/nginx/nginx.conf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|