Kubernetes: CFS ํ• ๋‹น๋Ÿ‰์œผ๋กœ ์ธํ•ด ๋ถˆํ•„์š”ํ•œ ์ œํ•œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 08์›” 20์ผ  ยท  142์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

/ ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ

์ด๊ฒƒ์€ Kubernets ๊ทธ ์ž์ฒด์˜ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ํ›Œ๋ฅญํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ k8s๊ฐ€ cfs ํ• ๋‹น๋Ÿ‰์„ ์‚ฌ์šฉํ•˜์—ฌ CPU ์ œํ•œ์„ ์ ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„, ํŠนํžˆ ์ž˜ ํ–‰๋™ํ•˜๋Š” ํ…Œ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ ๋ถˆํ•„์š”ํ•œ ์ œํ•œ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ž ์‹œ ์ „์— ์ œ์ถœ ํ•œ Linux ์ปค๋„์˜ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋ฒ„๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณต๊ฐœ ๋ฐ ์ค‘๋‹จ ๋œ ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค).

cc @connorDoyle @balajismaniam

kinbug kinfeature sinode

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํŒจ์น˜๋Š” ์˜ค๋Š˜ ์•„์นจ์— ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=de53fd7aedb100f03e5d2231cfce0e4993282425

Torvald์˜ ํŠธ๋ฆฌ์— ๋„๋‹ฌํ•˜๋ฉด Linux ์•ˆ์ • ํฌํ•จ์„ ์œ„ํ•ด ์ œ์ถœํ•˜๊ณ  ์ดํ›„ ์ฃผ์š” ๋ฐฐํฌํŒ (Redhat / Ubuntu)์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์— ๊ด€์‹ฌ์ด ์žˆ๊ณ  ๊ทธ๋“ค์ด ๋ฆฌ๋ˆ…์Šค ์•ˆ์ • ํŒจ์น˜๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ง์ ‘ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  142 ๋Œ“๊ธ€

/ sig ๋…ธ๋“œ
/ ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ

# 51135์˜ ์ค‘๋ณต์ธ๊ฐ€์š”?

์ •์‹ ์ ์œผ๋กœ๋Š” ๋น„์Šทํ•˜์ง€๋งŒ CFS ์ฟผํ„ฐ ๊ธฐ๊ฐ„์˜ ์ผ๋ถ€ ๊ตฌ์„ฑ ์ ˆ์ถฉ๋ณด๋‹ค๋Š” ์ปค๋„์— ์‹ค์ œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋†“์นœ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋” ๋งŽ์€ ๋งฅ๋ฝ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ # 51135๋ฅผ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ ์ด๊ฒƒ์ด CFS ํ• ๋‹น๋Ÿ‰ ( --cpu-cfs-quota=false )์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ์ž…๋‹ˆ๋‹ค (# 63437).

๋˜ํ•œ์ด ์š”์  (์ปค๋„ ํŒจ์น˜์—์„œ ๋งํฌ ๋จ)์ด ๋งค์šฐ ํฅ๋ฏธ ๋กญ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค (์˜ํ–ฅ์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด) : https://gist.github.com/bobrik/2030ff040fad360327a5fab7a09c4ff1

cc @adityakali

ํ• ๋‹น๋Ÿ‰์˜ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” kubelet์ด ํ•˜์ดํผ ์Šค๋ ˆ๋“œ๋ฅผ "cpus"๋กœ ๊ณ„์‚ฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋„ˆ๋ฌด๋กœ๋“œ๋˜์–ด ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ์ฝ”์–ด์— ์˜ˆ์•ฝ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค์— CPU ํ• ๋‹น๋Ÿ‰ ํ• ๋‹น๋Ÿ‰์ด์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ์ค‘ ํ•˜๋‚˜๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์˜ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋งŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค (๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์žˆ๋Š” ์ž‘์—…์ด์žˆ์„ ๋•Œ๋งŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค). ์Šคํ†จ) ๊ทธ๋Ÿฌ๋‚˜ ์ž์ฒด์ ์œผ๋กœ ๋ฌผ๋ฆฌ์  ์ฝ”์–ด๊ฐ€์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ์ „ํžˆ ํ• ๋‹น๋Ÿ‰์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ํ• ๋‹น๋Ÿ‰์„ ๋‘ ๋ฐฐ๋กœ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ํ•˜์ดํผ ์Šค๋ ˆ๋”ฉ์ด ํ™œ์„ฑํ™” ๋œ ์™„์ „ํžˆ๋กœ๋“œ ๋œ ๋…ธ๋“œ ๋…ธ๋“œ์—์„œ ์„ฑ๋Šฅ์ด ํ•˜์ดํผ ์Šค๋ ˆ๋”ฉ ๋˜๋Š” ํ• ๋‹น๋Ÿ‰ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ์˜ ์ ˆ๋ฐ˜์ด๋˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Imo the kubelet์€ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ•˜์ดํผ ์Šค๋ ˆ๋“œ๋ฅผ ์‹ค์ œ CPU๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

@juliantaylor # 51135์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด CPU ํ• ๋‹น๋Ÿ‰์„ ๋„๋Š” ๊ฒƒ์ด ์‹ ๋ขฐํ•  ์ˆ˜์žˆ๋Š” ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ k8s ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ• ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฒ„๊ทธ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๊นŒ?

์ผ๋ถ€ ํฌ๋“œ๊ฐ€ CPU ์ œํ•œ์„ ์‹ค์ œ๋กœ ์†Œ๋ชจํ•˜์ง€ ์•Š๋Š” ๋™์•ˆ ์Šค๋กœํ‹€ ๋ง๋˜๋ฉด ๋ฒ„๊ทธ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋‚ด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ณผ ํฌ๋“œ๋Š” ๋ฉ”ํŠธ๋ฆญ (heapster, metrics-collector, node-exporter ...) ๋˜๋Š” ์—ฐ์‚ฐ์ž์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด ์—ฐ์‚ฐ์ž๋Š” ๋ถ„๋ช…ํžˆ ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๊ฐ€๋˜๋Š” ์ข…๋ฅ˜์˜ ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค๋ฒˆ ํ™”ํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์ผ์–ด๋‚˜์‹ญ์‹œ์˜ค.

์—ฌ๊ธฐ์„œ ์ด์ƒํ•œ ์ ์€ 40m ์—์„œ 100m ๋˜๋Š” 200m ์ œํ•œ์„ ๋†’์ด๋ ค๊ณ ํ–ˆ์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ์ „ํžˆ ์ œํ•œ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ œํ•œ์„ ํŠธ๋ฆฌ๊ฑฐ ํ•  ์ˆ˜์žˆ๋Š” ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค๋ฅธ ๋ฉ”ํŠธ๋ฆญ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€์ด ํฌ๋“œ์— ๋Œ€ํ•œ ์ œํ•œ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค ... ์ ์  ์ข‹์•„์ง€๊ณ  ์žˆ์ง€๋งŒ, ์ •๋ง ๋ฒ„๊ทธ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๋ฉฐ Limits ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@ prune998 ์€ @vishh ์˜ ์ฝ”๋ฉ˜ํŠธ ์™€์ด ์š”์ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค : ์ปค๋„์€ ์ˆ˜ํ•™์—์„œ ๊ทธ๋ ‡๊ฒŒํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ ํ•˜๋”๋ผ๋„ ์ง€๋‚˜์น˜๊ฒŒ ๊ณต๊ฒฉ์ ์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ (Zalando)๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ CFS ํ• ๋‹น๋Ÿ‰ (CPU ์กฐ์ ˆ)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. https://www.slideshare.net/try_except_/optimizing-kubernetes-resource-requestslimits-for-costefficiency-and-latency-highload

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @hjacobs.
Google GKE๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ฉฐ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์—†์ง€๋งŒ ๊ณ„์† ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค ....

@ prune998 AFAIK, Google์€ ์•„์ง ํ•„์š”ํ•œ ์†์žก์ด๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—…์ŠคํŠธ๋ฆผ์— ์ฐฉ๋ฅ™ ํ•œ CFS๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•  ๊ฐ€๋Šฅ์„ฑ์ด์žˆ๋Š” ์งํ›„ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ œ์ถœํ–ˆ์œผ๋ฉฐ ๊ทธ ์ดํ›„๋กœ ์†Œ์‹์„ ๋“ฃ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

Google GKE๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ฉฐ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์—†์ง€๋งŒ ๊ณ„์† ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค ....

๋‹น๋ถ„๊ฐ„ ์ปจํ…Œ์ด๋„ˆ์—์„œ CPU ์ œํ•œ์„ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

CPU ๊ด€๋ฆฌ์ž ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด CFS quota is not used to bound the CPU usage of these containers as their usage is bound by the scheduling domain itself. ํ•˜์ง€๋งŒ CFS ์Šค๋กœํ‹€ ๋ง์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋ณด์žฅ ๋œ QoS ํด๋ž˜์Šค๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด CPU ์ œํ•œ์„ ์„ค์ •ํ•˜๋ฉด ์Šค๋กœํ‹€ ๋ง์œผ๋กœ ์ธํ•œ ๋ชจ๋“  ์ด์ ์„ ๋ฌดํšจํ™”ํ•˜๋ฏ€๋กœ ์ •์  CPU ๊ด€๋ฆฌ์ž๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ •์  CPU์˜ ํฌ๋“œ์— ๋Œ€ํ•ด CFS ํ• ๋‹น๋Ÿ‰์ด ์ „ํ˜€ ์„ค์ •๋˜์ง€ ์•Š์€ ๋ฒ„๊ทธ์ž…๋‹ˆ๊นŒ?

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ (์–ด์ œ ๋ฐฐ์›  ์Œ) : @hrzbrg (MyTaxi)๊ฐ€ Kops์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ CPU ์กฐ์ ˆ์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค : https://github.com/kubernetes/kops/issues/5826

์—ฌ๊ธฐ์— ๋ฌธ์ œ ์š”์•ฝ์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค. ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ค ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”์ง€, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ํ•„์š”ํ•œ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ์˜ ์ดํ•ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•œ๊ณ„๋ฅผ ๋„˜์—ˆ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ํŒจ๋„ํ‹ฐ๋ฅผ ๋ฐ›๊ณ  ์ œํ•œ์„๋ฐ›์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CPU ํ• ๋‹น๋Ÿ‰์ด 3 ์ฝ”์–ด์ด๊ณ  ์ฒ˜์Œ 5ms ๋™์•ˆ 3 ์ฝ”์–ด๋ฅผ ์†Œ๋น„ ํ•œ ๋‹ค์Œ 100ms ์Šฌ๋ผ์ด์Šค์—์„œ 95ms ๋™์•ˆ ์ œํ•œ์„ ๋ฐ›๊ฒŒ๋˜๋ฉฐ์ด 95ms์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CPU ์‚ฌ์šฉ๋Ÿ‰ ๋ฉ”ํŠธ๋ฆญ์— CPU ์ŠคํŒŒ์ดํฌ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ ์Šค๋กœํ‹€ ๋ง๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•˜๋Š” ์‹œ๊ฐ„์ด ์ดˆ ๋‹จ์œ„์ด๊ณ  ์กฐ์ ˆ์ด ๋งˆ์ดํฌ๋กœ ์ดˆ ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ท ๊ฐ’์„ ๋‚ด๊ณ  ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ ๋œ ๋ฒ„๊ทธ๋Š” ์šฐ๋ฆฌ๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ :

  • ๋…ธ๋“œ๊ฐ€ 100 % CPU ์ผ ๋•Œ? ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉ๋Ÿ‰์— ๊ด€๊ณ„์—†์ด ์ œํ•œ๋˜๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๊นŒ?
  • ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ 100 % CPU ์ œํ•œ์„ ๋ฐ›์Šต๋‹ˆ๊นŒ?

  • ์ด ๋ฒ„๊ทธ๊ฐ€ ๋…ธ๋“œ์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ์›์ธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • limits ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ cpu.cfs_quota ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • ๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ํฌ๋“œ๊ฐ€ ๋งŽ๊ณ  ํ•˜๋‚˜์˜ ํฌ๋“œ๊ฐ€ ๋…ธ๋“œ์˜ ๋ถˆ์•ˆ์ •์„ฑ์„ ์œ ๋ฐœํ•˜๊ณ  ์š”์ฒญ์„ ํ†ตํ•ด ์‹คํ–‰์ค‘์ธ ๋‹ค๋ฅธ ํฌ๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜์žˆ๋Š” ๊ฒฝ์šฐ limits ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์œ„ํ—˜ํ•œ ์†”๋ฃจ์…˜์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

  • ๋ณ„๋„๋กœ, ์ปค๋„ ๋ฌธ์„œ ํ”„๋กœ์„ธ์Šค์— ๋”ฐ๋ผ ๋ถ€๋ชจ ํ• ๋‹น๋Ÿ‰์ด ์™„์ „ํžˆ ์†Œ๋น„๋˜๋ฉด ์ œํ•œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ปจํ…์ŠคํŠธ์—์„œ ๋ถ€๋ชจ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ (์ด ๋ฒ„๊ทธ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ)? https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt
    There are two ways in which a group may become throttled: a. it fully consumes its own quota within a period b. a parent's quota is fully consumed within its period

  • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์ปค๋„ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์ƒ๋‹นํžˆ ํฐ ์ค‘๋‹จ์— ์ง๋ฉดํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ์Šค๋กœํ‹€ ๋ง ์žฌ์‹œ์ž‘ ๋ฃจํ”„์— ๊ฐ‡ํ˜€ ํ™•์žฅ ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค (๊ทผ๋ณธ ์›์ธ์€ ์•„๋‹์ง€๋ผ๋„). ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ํŒŒํ—ค ์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋‹จ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

cc @justinsb

์‚ฌ์šฉ์ž ์ค‘ ํ•œ ๋ช…์ด CPU ์ œํ•œ์„ ์„ค์ •ํ•˜๊ณ  ํ™œ์„ฑ ํ”„๋กœ๋ธŒ ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ•˜์—ฌ ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋ฅผ CPU์— ๊ณ ์ • ํ•  ๋•Œ๋„ ์Šค๋กœํ‹€ ๋ง์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CPU ์ œํ•œ์ด 1์ด๊ณ  ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜์˜ CPU์—์„œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์ด ์ •ํ™•ํžˆ ๋ณด์œ ํ•œ CPU ์ˆ˜์ธ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ ๊ธฐ๊ฐ„ ๋™์•ˆ ํ• ๋‹น๋Ÿ‰์„ ์ดˆ๊ณผ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ปค๋„ 4.18์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋”˜๊ฐ€์— ๊ฒŒ์‹œํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

4.18์˜ https://github.com/torvalds/linux/commit/512ac999d2755d2b7109e996a76b6fb8b888631d ๊ฐ€์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ด€๋ จ ํŒจ์น˜ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@mariusgrigoriu https://github.com/kubernetes/kubernetes/issues/67577#issuecomment -462534360์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ˆ˜์ˆ˜๊ป˜๋ผ์— ๊ฐ‡ํ˜€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

CPUManager ์ •์  ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋Š” Guaranteed QoS ํด๋ž˜์Šค์˜ ํฌ๋“œ์—์„œ CPU ์Šค๋กœํ‹€ ๋ง์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค (๋ง์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™์Œ).

์ด๋Ÿฌํ•œ Pod์— ๋Œ€ํ•ด limits ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด Burstable QoS ํด๋ž˜์Šค์— ๋ฐฐ์น˜๋˜๋ฉฐ, ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋‚จ์€ ์œ ์ผํ•œ ์˜ต์…˜์€ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ CFS cpu ํ• ๋‹น๋Ÿ‰์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์€ CPU ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ๋ชจ๋“  Pod ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋ฉด ์œ„ํ—˜ํ•œ CPU ํฌํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์œ„์˜ ์ƒํ™ฉ์—์„œ @vishh , ์ตœ์„ ์˜ ์กฐ์น˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ปค๋„> 4.18 (cfs cpu ๊ณ„์ • ์ˆ˜์ •์ด ์žˆ์Œ)๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  (์•„๋งˆ๋„) cfs ํ• ๋‹น ๊ธฐ๊ฐ„์„ ์ค„์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ œํ•œ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ limits ๋งŒ ์ œ๊ฑฐํ•˜๋ฉด ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
1) ์ด๊ฒƒ์ด ๋ณด์žฅ ๋œ QoS ํด๋ž˜์Šค์˜ ํฌ๋“œ์ด๊ณ  ์ •์ˆ˜ ์ฝ”์–ด ์ˆ˜ ๋ฐ CPUMnanager ์ •์  ์ •์ฑ…์ด ์ ์šฉ๋œ ๊ฒฝ์šฐ- ์ด๋Ÿฌํ•œ ํฌ๋“œ๋Š” ๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅํ•œ QoS ํด๋ž˜์Šค์— ๋ฐฐ์น˜
2) ์ด๋Ÿฌํ•œ ํฌ๋“œ๋Š” ์†Œ๋น„ ํ•  ์ˆ˜์žˆ๋Š” CPU์˜ ์–‘๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ œํ•œ์ด ์—†์œผ๋ฉฐ ์ž ์žฌ์ ์œผ๋กœ ํŠน์ • ์ƒํ™ฉ์—์„œ ์ƒ๋‹นํ•œ ํ”ผํ•ด๋ฅผ ์ž…ํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ / ์•ˆ๋‚ด๋Š” ๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปค๋„์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ํ™•์‹คํžˆ ๋„์›€์ด๋˜์ง€๋งŒ CFS ํ• ๋‹น๋Ÿ‰์„ ์ ์šฉํ•˜๋Š” ๋™์ž‘์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฌธ์„œ์—์„œ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๊ธˆ์ด ๋ฌธ์ œ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ์กฐ์‚ฌ ํ•ด์™”๋‹ค. ๋‚ด ์—ฐ๊ตฌ๋Š” LKML์— ๋Œ€ํ•œ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์— ์š”์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://lkml.org/lkml/2019/3/18/706
์ฆ‰, ์—ฌ๊ธฐ์„œ 512ac99 ์ด์ „ ์ปค๋„์— ์„ค๋ช… ๋œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 512ac99 ์ดํ›„ ์ปค๋„์—์„œ ์„ฑ๋Šฅ ํšŒ๊ท€๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ์ˆ˜์ •์€ ๋งŒ๋ณ‘ ํ†ต์น˜์•ฝ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐ์‚ฌ @mariusgrigoriu, ์šฐ๋ฆฌ๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ ๋‹ค์†Œ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ํฌ๋ง ์ปค๋„์„ ์œ„ํ•ด ๊ฐ€๊ณ ์žˆ๋‹ค, ๋˜ํ•œ ์ฒดํฌ ์•„์›ƒ https://github.com/kubernetes/kubernetes/issues/70585 - ํ• ๋‹น๋Ÿ‰์ด ์ฐธ์˜ cpuset์™€ ๋ณด์žฅ ํฌ๋“œ (์„ค์ •๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค ์ฆ‰ ๊ณ ์ • cpus), ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋ฒ„๊ทธ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@chiluk ์ข€ ๋” ์ž์„ธํžˆ

512ac99 ์ปค๋„ ํŒจ์น˜๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ ๊ตฌ์„ฑ์— ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” ์‹œ๊ฐ„ ์กฐ๊ฐ์ด cfs_rq๊ฐ„์— ๋ถ„๋ฐฐ๋˜๋Š” ๋ฐฉ์‹์„ ์ˆ˜์ •ํ•˜์—ฌ ์ด์ œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋งŒ๋ฃŒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ์ฝ”์–ด ์ˆ˜๊ฐ€ ๋งŽ์€ ๋จธ์‹ ์—์„œ Java ์›Œํฌ๋กœ๋“œ๋Š” ์ฐจ๋‹จ ์ž‘์—…์ž ์Šค๋ ˆ๋“œ๋กœ ์ธํ•ด CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์€ ๋งŽ์€ ์Šค๋กœํ‹€ ๋ง์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์Šค๋ ˆ๋“œ์—๋Š” ๋‚˜์ค‘์— ๋งŒ๋ฃŒ๋˜๋Š” ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„ ์กฐ๊ฐ์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ํ•ฉ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ * (ํ•ด๋‹น ์Šค๋ ˆ๋“œ์— ์—ฐ๊ฒฐ๋จ) ์•ฝ 30 ๋ฐฐ์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์„ฑ๋Šฅ์—์„œ ์šฐ๋ฆฌ๋Š” ์ฆ๊ฐ€ ๋œ ์Šค๋กœํ‹€ ๋ง์œผ๋กœ ์ธํ•ด ๋‘ ์ปค๋„ ๊ฐ„์˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ์ˆ˜๋ฐฑ ๋ฐ€๋ฆฌ ์ดˆ ๊ฐ์†Œํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

4.19.30 ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šค๋กœํ‹€ ๋ง์„ ์ค„ ์ด๊ธธ ๋ฐ”๋žฌ๋˜ ํฌ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์Šค๋กœํ‹€ ๋ง๋˜๊ณ  ์ด์ „์— ์Šค๋กœํ‹€ ๋ง๋˜์ง€ ์•Š์•˜๋˜ ์ผ๋ถ€ ํฌ๋“œ๊ฐ€ ์ด์ œ ์ƒ๋‹นํžˆ ์‹ฌ๊ฐํ•˜๊ฒŒ ์Šค๋กœํ‹€ ๋ง๋˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (kube2iam์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ€๋™ ๋œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์ดˆ๊ฐ€ ์Šค๋กœํ‹€ ๋ง๋˜์—ˆ๋‹ค๊ณ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. , ์–ด๋–ป๊ฒŒ ๋“ )

CoreOS 4.19.25-coreos์—์„œ Prometheus๊ฐ€ ์‹œ์Šคํ…œ์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๋‹จ์ผ ํฌ๋“œ์—์„œ CPUThrottlingHigh ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@williamsandrew @teralype ์ด๊ฒƒ์€ @chiluk ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋‚ด๋ถ€ ๋…ผ์˜๋ฅผ ๊ฑฐ์ณ ์‹ค์ œ๋กœ cfs ํ• ๋‹น๋Ÿ‰์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค (kubelet์˜ ํ”Œ๋ž˜๊ทธ --cpu-cfs-quota=false ). ์ด๊ฒƒ์€ Burstable ๋ฐ Guaranteed (cpu ๊ณ ์ • ๋˜๋Š” ํ‘œ์ค€) ํฌ๋“œ ๋ชจ๋‘์— ๋Œ€ํ•ด ๊ฒช์—ˆ๋˜ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ๋ฑ (๋ฐ ๊ธฐํƒ€ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์ œ)์ด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค : https://www.slideshare.net/try_except_/ensuring-kubernetes-cost-efficiency-across-many-clusters-devops-gathering-2019

์ ๊ทน ๊ถŒ์žฅ๋˜๋Š” ์ฝ๊ธฐ : +1 :

์žฅ๊ธฐ ๋ฐœํ–‰ (์ž์‹ ์—๊ฒŒ ๋ฉ”๋ชจ)

์™„์ „์„ฑ ์„ ์œ„ํ•ด ์—ฐ๊ฒฐ๋œ ํ† ํฌ ๋Š” ๋…นํ™” ๋œ ๋น„๋””์˜ค๋กœ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค : https://www.youtube.com/watch?v=4QyecOoPsGU

@hjacobs , ์ด์•ผ๊ธฐ๋ฅผ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ...
์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ AKS ๋˜๋Š” GKE์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„์‹ญ๋‹ˆ๊นŒ?
๊ฐ์‚ฌ

@agolomoodysaada ์šฐ๋ฆฌ๋Š” ์–ผ๋งˆ ์ „์— GKE์— ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์•„ ๋” ์ด์ƒ GKE๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Azure ์ง€์›์— ์—ฐ๋ฝํ–ˆ๋Š”๋ฐ 2019 ๋…„ 8 ์›”๊ฒฝ๊นŒ์ง€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

Screen Shot 2019-04-04 at 3 54 00 PM
ํ‰์ƒ ๋™์•ˆ ์ผ๊ด€๋˜๊ฒŒ ์กฐ์ ˆ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ณต์œ  ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ปค๋„์— ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

" chiluk "4.15.0-1037-azure "

๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์ปค๋„ ์ปค๋ฐ‹ 512ac99๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ƒ์‘ํ•˜๋Š”
์ถœ์ฒ˜.
https://kernel.ubuntu.com/git/kernel-ppa/mirror/ubuntu-azure-xenial.git/tree/kernel/sched/fair.c?h=Ubuntu-azure-4.15.0-1037.39_16.04.1 & id = 19b0066cc4829f45321a52a802b640bab14d0f67

์ฆ‰, 512ac99์— ์„ค๋ช… ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€๊ณ ์žˆ๋‹ค
512ac99๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋‹ค๋ฅธ ํšŒ๊ท€๋ฅผ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค.

2019 ๋…„ 4 ์›” 5 ์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 12:08 Moody Saada [email protected]
์ผ๋‹ค :

@chiluk https://github.com/chiluk "4.15.0-1037-azure"

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/67577#issuecomment-480350946 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ACDI05YeS6wfUE9XkiMbxrLvPllYQZ7Iks5vd4MOgaJpZM4WDUF3
.

๋‚˜๋Š” ์ด์ œ ์ด๊ฒƒ์— ๋Œ€ํ•ด LKML์— ํŒจ์น˜๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.
https://lkml.org/lkml/2019/4/10/1068

์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋ณ€๊ฒฝ๊ณผ ํ•จ๊ป˜์ด ํŒจ์น˜๋ฅผ ๋‹ค์‹œ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.
https://lkml.org/lkml/2019/5/17/581

์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฌํ•œ ํŒจ์น˜๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  LKML์˜ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ €๋Š” LKML์— ๋Œ€ํ•ด ์–ธ๊ธ‰ ํ•œ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ด๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์˜๊ฒฌ๋„๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํŒจ์น˜์—์„œ LKML์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ…Œ์ŠคํŠธ์™€ ๋…ผํ‰์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ๋จผ ๊ธธ์„ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์น˜๊ฐ€์žˆ๋Š”์ด ํŠน์ • ํ”„๋กœ์ ํŠธ https://github.com/tensorflow/serving ์€์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์„๋ฐ›๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ C ++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

@chiluk , ํŒจ์น˜๊ฐ€ ์ถœ์‹œ๋˜๋Š” ๋™์•ˆ ์ ์šฉ ํ•  ์ˆ˜์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@chiluk ๊ฐ€์ด ์ปค๋„ ๋ฒ„๊ทธ๊ฐ€ Kubernetes ๋ฐ CFS ํ• ๋‹น๋Ÿ‰์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ์— ๋ฏธ์น˜๋Š” ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ธ์šฉ๋ฌธ์„ ์ˆ˜์ง‘ํ•˜๋„๋ก

Zolando๋Š” ์ง€๋‚œ์ฃผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ ํ˜„์žฌ ์ปค๋„์— ๋Œ€ํ•œ ๋‚˜์œ ๊ฒฝํ—˜์€ CFS ํ• ๋‹น๋Ÿ‰์„ ํ˜„์žฌ์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.
https://www.youtube.com/watch?v=6sDTB4eV4F8

์ ์  ๋” ๋งŽ์€ ํšŒ์‚ฌ๊ฐ€ mytaxi, Datadog, Zalando์™€ ๊ฐ™์€ CPU ์Šค๋กœํ‹€ ๋ง์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ( Twitter ์Šค๋ ˆ๋“œ )

@derekwaynecarr @ dchen1107 @ kubernetes / sig-node-feature-requests Dawn, Derek, ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ์ž…๋‹ˆ๊นŒ? ๋ฐ / ๋˜๋Š” ๋ฌธ์„œ?

์˜ˆ @whereisaaron ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ œํ•œํ•˜๋Š” ๋ณด๊ณ ์„œ๋ฅผ ์ˆ˜์ง‘ ๋ฐ ๊ณต์œ ํ•˜๊ณ , ๋‚˜์œ ๋™์ž‘์œผ๋กœ ์ธํ•ด ๊บผ์ง€๋Š” ๊ฒฝ์šฐ ์ ์ ˆํ•œ ๊ฒฝ์šฐ lkml ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ์ปค๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@agolomoodysaada ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์ผ์‹œ์ ์œผ๋กœ cfs ํ• ๋‹น๋Ÿ‰์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— cpu ํ• ๋‹น๋Ÿ‰์„ ๊ณผ๋„ํ•˜๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋„์›€์ด๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
golang์˜ ๊ฒฝ์šฐ GOMAXPROCS ~ = ceil (quota)
Java์˜ ๊ฒฝ์šฐ CPU ํ• ๋‹น๋Ÿ‰ ์ œํ•œ์„ ์ธ์‹ํ•˜๊ณ  ์ค€์ˆ˜ํ•˜๋Š” ์ตœ์‹  JVM์œผ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค. ์ด์ „ jvms๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์ฝ”์–ด ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ CPU ์ฝ”์–ด ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ์„ฑ๋Šฅ์— ํฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ํ• ๋‹น๋Ÿ‰์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ์— ๋„๋‹ฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ,์ด ์Šค๋ ˆ๋“œ๋ฅผ Azure AKS ์ง€์›์— ์ง€์ ํ•œ ํ›„, ๊ธฐ๊ปํ•ด์•ผ 9 ์›” ๋ง์— ์ปค๋„ 5.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ๋•Œ ํŒจ์น˜๊ฐ€ ์ถœ์‹œ ๋  ๊ฒƒ์ด๋ผ๋Š” ๋‹ต๋ณ€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋•Œ๊นŒ์ง€๋Š” ์ œํ•œ ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜์‹ญ์‹œ์˜ค. :)

@ prune998 CPUmanager๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์•ฝ๊ฐ„์˜์ฃผ์˜ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค (์ฆ‰, ๋ณด์žฅ ๋œ QoS์—์„œ ํฌ๋“œ์— ์ „์šฉ CPU ํ• ๋‹น).

์ œํ•œ์„ ์ œ๊ฑฐํ•˜๋ฉด CFS ์กฐ์ ˆ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณด์žฅ ๋œ QoS์—์„œ ํฌ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ CPUmanager๊ฐ€ ๋” ์ด์ƒ ์ด๋Ÿฌํ•œ ํฌ๋“œ์— ์ „์šฉ ์ฝ”์–ด๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CPUmanager๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ-์•„๋ฌด๋Ÿฐ ํ•ด๋ฅผ ๋ผ์น˜ ์ง€ ์•Š์ง€๋งŒ์ด ๋ฐฉํ–ฅ์„ ์„ ํƒํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ฐธ๊ณ ๋กœํ•˜์‹ญ์‹œ์˜ค.

์ „์šฉ CPU๊ฐ€์žˆ๋Š” ํฌ๋“œ์— ๋Œ€ํ•ด CFS ํ• ๋‹น๋Ÿ‰์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” PR (https://github.com/kubernetes/kubernetes/issues/70585)์ด ์žˆ์ง€๋งŒ ์•„์ง ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์œ„์—์„œ ์ œ์•ˆํ•œ๋Œ€๋กœ CFS ํ• ๋‹น๋Ÿ‰ ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์„ ํƒํ–ˆ์œผ๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@ dannyk81 https://github.com/kubernetes/kubernetes/issues/70585 ๋Š” ๋ณ‘ํ•ฉ ํ•  ์ˆ˜์žˆ๋Š” PR์ด ์•„๋‹™๋‹ˆ๋‹ค (์ฝ”๋“œ ์Šค ๋‹ˆํŽซ ๋ฌธ์ œ). ๊ท€ํ•˜ (๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ)๊ฐ€ PR์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๋ฏธ ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/kubernetes/kubernetes/pull/75682

@dims ๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ PR์„ ์—ฐ๊ฒฐ ...ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” PR์— ์—ฐ๊ฒฐ๋˜์–ด :) ์‹ค์ œ๋กœ ๊ทธ๊ฒƒ์ด https://github.com/kubernetes/kubernetes/pull/75682 ํ•˜๊ณ  ์ž ์‹œ ๋™์•ˆ ๊ฑฐ๊ธฐ์— ๋งค๋‹ฌ๋ ค๋˜์–ด์žˆ์–ด, ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์ด ์ •๋ง๋กœ ์„ฑ๊ฐ€์‹  ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๋ฐ€ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค : +1 :

์›์Šค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @ dannyk81 ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ํ• ๋‹นํ•˜๊ณ  ์ด์ •ํ‘œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค

FWIW์—์„œ๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ CFS ํ• ๋‹น๋Ÿ‰ ๊ธฐ๊ฐ„์„ ๊ธฐ๋ณธ 100ms๊ฐ€ ์•„๋‹Œ 10ms๋กœ ์ค„์ด๋ฉด ํ…Œ์ผ ์—”๋“œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ํ›จ์”ฌ ์ ์€ ์–‘์˜ ํ• ๋‹น๋Ÿ‰์ด ๋‚ญ๋น„๋˜๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ๋งŽ์€ ํ• ๋‹น๋Ÿ‰ (์ž‘์€ ํ• ๋‹น๋Ÿ‰์œผ๋กœ)์„ ๋” ๋นจ๋ฆฌ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ผ ๋ฟ์ด์ง€ ๋งŒ CFS ํ• ๋‹น๋Ÿ‰์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ๊ตฌํ˜„ ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜์ฐฝ๊ณ ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. k8s๋Š” 1.12์—์„œ cpuCFSQuotaPeriod ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ ๋ฐ --cpu-cfs-quota-period kubelet ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์ด ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธํ•ด์•ผํ–ˆ์ง€๋งŒ ์ฝ”๋“œ์— ์Šฌ๋ผ์ด์Šค ์ตœ์†Œ๊ฐ’๊ณผ ํ• ๋‹น๋Ÿ‰ ์ตœ์†Œ๊ฐ’์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊ฐ„์„ ๊ทธ๋ ‡๊ฒŒ ์ค„์ด๋ฉด ํšจ๊ณผ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์„ ํ•ด์ œํ•˜๊ณ  ์†Œํ”„ํŠธ ํ• ๋‹น๋Ÿ‰์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@chiluk ๋‚ด ํ‰์‹ ๋„์˜ ์ดํ•ด๋Š” ๊ธฐ๋ณธ ์Šฌ๋ผ์ด์Šค๊ฐ€ 5ms์ด๋ฏ€๋กœ ๊ทธ ์ดํ•˜๋กœ ์„ค์ •ํ•˜๋ฉด ์‚ฌ์‹ค์ƒ ๋น„ํ™œ์„ฑํ™”๋˜์ง€๋งŒ ๊ธฐ๊ฐ„์ด 5ms๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ํ•œ ์—ฌ์ „ํžˆ ํ• ๋‹น๋Ÿ‰ ์ ์šฉ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ™•์‹คํžˆ ์•Œ๋ ค์ฃผ์„ธ์š”.

--feature-gates=CustomCPUCFSQuotaPeriod=true --cpu-cfs-quota-period=10ms ์œผ๋กœ ๋‚ด ํฌ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ •๋ง ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒจ๋ถ€ ๋œ prometheus ๊ทธ๋ž˜ํ”„์—์„œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹œ์ž‘์„ ์‹œ๋„ํ•˜๊ณ  ์ฃฝ์„ ๋•Œ๊นŒ์ง€ ํ™œ์„ฑ ์ƒํƒœ ํ™•์ธ์„ ๊ฑฐ์˜ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋Š” ์•ฝ 5 ์ดˆ ์•ˆ์— ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ํ™œ์„ฑ ์ƒํƒœ๋ฅผ initialDelaySeconds๋ฅผ 60 ์ดˆ๋กœ ๋Š˜๋ ค๋„ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ ๊ฒƒ์œผ๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.

kubelet ์ธ์ˆ˜์—์„œ cpu-cfs-quota-period๋ฅผ ์ œ๊ฑฐ ํ•  ๋•Œ๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํฌ๊ฒŒ ์ œํ•œ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ์‹œ์ ์—์„œ ์ œํ•œ์ด ํ›จ์”ฌ ๋” ํ‰ํ‰ ํ•ด์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•ฝ 5 ์ดˆ ํ›„์— ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

Screen Shot 2019-06-05 at 10 23 13 am

์ฐธ๊ณ  : CPU ์Šค๋กœํ‹€ ๋ง ๋น„ํ™œ์„ฑํ™” ์ฃผ์ œ์— ๋Œ€ํ•œ ํ˜„์žฌ ํŠธ์œ„ํ„ฐ ์Šค๋ ˆ๋“œ : https://twitter.com/it_supertramp/status/1133648291332263936

๋‹ค์Œ์€ ์ง€์—ฐ ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ ์„œ๋น„์Šค 2 ๊ฐœ์— ๋Œ€ํ•ด ํ”„๋กœ๋•์…˜์—์„œ --cpu-cfs-quota-period=10ms ๋กœ ์ด์ „ํ•˜๊ธฐ ์ „ / ํ›„์˜ CPU ์ œํ•œ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค.

Screen Shot 2019-06-05 at 15 34 35

Screen Shot 2019-06-05 at 15 36 36

์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” ๋‹ค์–‘ํ•œ ์ธ์Šคํ„ด์Šค ์œ ํ˜•์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค (ํƒ€์ธ / ๋‚ด์„ฑ). ๋‘ ๋ฒˆ์งธ ์„œ๋น„์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ๋จผ์ € ๋‚ฎ์€ CFS ํ• ๋‹น๋Ÿ‰ ๊ธฐ๊ฐ„์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋Š” ๋ถ€ํ•˜์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค.

@ d-shi ๊ทธ๋ž˜ํ”„์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„์ด ๋„ˆ๋ฌด ์งง๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ๋‹น์‹ ์ด ํƒ€๊ฒฉํ•˜๊ณ ์žˆ๋Š” ์ตœ์†Œ ํ• ๋‹น๋Ÿ‰์ด์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธํ•˜๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ํ• ๋‹น๋Ÿ‰์„ ์‹ค์ˆ˜๋กœ ๋Š˜ ๋ ธ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ• ๋‹น๋Ÿ‰์„ ๋Š˜๋ ค์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์Šค๋กœํ‹€ ๋ง๋ณด๋‹ค๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. cfs-quota ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. cfs-quota-period ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์œ ์‚ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@chiluk ์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ํ• ๋‹น๋Ÿ‰์„

@blakebarnett ์šฐ๋ฆฌ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋ฒค์น˜ ๋งˆํฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ, 10ms-100ms ๋ฒ”์œ„์—์„œ --cpu-cfs-quota-period ์—…๋ฐ์ดํŠธ ์ „ ํ‰๊ท  ์•ฝ 18ms์—์„œ ํ‰๊ท  10ms-20ms ๋ฒ”์œ„๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์•ฝ 11ms. p99 ์ง€์—ฐ ์‹œ๊ฐ„์€ ์•ฝ 98ms์—์„œ 20ms๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘์ž : ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ๋‚ด ๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผํ–ˆ๋˜ ํŽธ์ง‘์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

@ d-shi, ๋‹น์‹ ์€ ์•„๋งˆ๋„ 512ac999๋กœ ํ•ด๊ฒฐ ๋œ ๋ฌธ์ œ์— ๋ถ€๋”ชํ˜”์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@chiluk ์—ฌ๋Ÿฌ๋ถ„์˜ ํŒจ์น˜๋ฅผ ๋ช‡ ๋ฒˆ์ด๊ณ  ์ฝ์€ ํ›„,์ด ์ฝ”๋“œ์˜ ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Œ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.

    if (cfs_rq->expires_seq == cfs_b->expires_seq) {
-       /* extend local deadline, drift is bounded above by 2 ticks */
-       cfs_rq->runtime_expires += TICK_NSEC;
-   } else {
-       /* global deadline is ahead, expiration has passed */
-       cfs_rq->runtime_remaining = 0;
-   }

runtime_remaining์ด ๊ธ€๋กœ๋ฒŒ ํ’€์—์„œ ์–ผ๋งˆ ๋™์•ˆ ๋นŒ๋ ค๋„ ํ• ๋‹น๋Ÿ‰์ด ๋งŒ๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ. ์ตœ์•…์˜ ๊ฒฝ์šฐ sched_cfs_bandwidth_slice_us์— ๋”ฐ๋ผ 5ms ๋™์•ˆ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์นœ ๊ฑด๊ฐ€์š”?

@chiluk ๊ทธ๋ž˜ ๋‚ด๊ฐ€ ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„๋Š” ์—ฌ์ „ํžˆ ์ปค๋„ 4.4์— ์žˆ์œผ๋ฏ€๋กœ ์ˆ˜์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์•„๋งˆ๋„ ์ƒˆ๋กœ์šด ์ปค๋„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด CFS ํ• ๋‹น๋Ÿ‰ ๊ธฐ๊ฐ„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜„์žฌ๋กœ์„œ๋Š” ํ…Œ์ผ ์—”๋“œ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์•„์ง ๋ถ€์ž‘์šฉ์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ ๋ช‡ ์ฃผ ๋™์•ˆ ๋งŒ ๋ผ์ด๋ธŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@chiluk ์ปค๋„์—์„œ์ด ๋ฌธ์ œ์˜ ์ƒํƒœ๋ฅผ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? 512ac999๋ผ๋Š” ํŒจ์น˜๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋Œ๋ฆฐ ๊ณณ์„ ์ฝ์—ˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ „์ฒด / ๋ถ€๋ถ„์ ์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ๋ฒ„์ „์ž…๋‹ˆ๊นŒ?

@mariusgrigoriu ๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. @chiluk ๋Š” ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ํŒจ์น˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ์ƒํƒœ๋Š” https://github.com/kubernetes/kubernetes/issues/67577#issuecomment -482198124๋ฅผ ์ฐธ์กฐ

@Mwea ์ „์—ญ ํ’€์€ cfs_b-> runtime_remaining์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. CPU ๋‹น ์‹คํ–‰ ๋Œ€๊ธฐ์—ด (cfs_rq)์— ํ• ๋‹น๋˜๋ฉด ๊ธ€๋กœ๋ฒŒ ํ’€์— ๋‚จ์•„์žˆ๋Š” ์–‘์ด ์ค„์–ด ๋“ญ๋‹ˆ๋‹ค. cfs_bandwidth_slice_us๋Š” ์ „์—ญ ํ’€์—์„œ CPU ๋ณ„ ์‹คํ–‰ ๋Œ€๊ธฐ์—ด๋กœ ์ „์†ก๋˜๋Š” CPU ๋Ÿฐํƒ€์ž„์˜ ์–‘์ž…๋‹ˆ๋‹ค. ์Šค๋กœํ‹€์ด ๋ฐœ์ƒํ•˜๋ฉด cfs_b-> runtime_remaining == 0์„ ์‹คํ–‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์ด cfs_b์— ๋ณด์ถฉ ๋œ ๋‹ค์Œ ๋ฐฐํฌ ๋˜๋ ค๋ฉด ํ˜„์žฌ ๊ธฐ๊ฐ„ (๊ธฐ๋ณธ์ ์œผ๋กœ 100ms)์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ cfs_rq. ์ตœ๊ทผ์— ๋งŒ๋ฃŒ ๋œ ๋Ÿฐํƒ€์ž„์˜ ์–‘์ด cfs_rq ๋‹น ์ตœ๋Œ€ 1ms๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ์œ  ํƒ€์ด๋จธ๊ฐ€ CPU ๋‹น ์‹คํ–‰ ๋Œ€๊ธฐ์—ด์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํ• ๋‹น๋Ÿ‰์˜ 1ms๋งŒํผ ๋ชจ๋‘ ๋‹ค์‹œ ์บก์ฒ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ 1ms๋Š” ๊ธฐ๊ฐ„์ด ๋๋‚  ๋•Œ ๋‚ญ๋น„ / ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 88 cpus์— ๊ฑธ์ณ ํผ์ง€๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ 100ms ๊ธฐ๊ฐ„ ๋‹น 88ms์˜ ๋‚ญ๋น„ ๋œ ํ• ๋‹น๋Ÿ‰ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์Šฌ๋ž™ ํƒ€์ด๋จธ๊ฐ€ ์œ ํœด CPU ๋ณ„ ์‹คํ–‰ ๋Œ€๊ธฐ์—ด์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ํ• ๋‹น๋Ÿ‰์„ ๋‹ค์‹œ ์บก์ฒ˜ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋Œ€์ฒด ์ œ์•ˆ์œผ๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ํŠน๋ณ„ํžˆ ๊ฐ•์กฐํ•˜๋Š” ์„ ์€. ๋‚ด ์ œ์•ˆ์€ CPU ๋‹น ์‹คํ–‰ ๋Œ€๊ธฐ์—ด์— ํ• ๋‹น ๋œ ๋Ÿฐํƒ€์ž„ ๋งŒ๋ฃŒ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ค„์€ 512ac999์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ด๋Š” CPU ๋‹น ์‹คํ–‰ ๋Œ€๊ธฐ์—ด ์‚ฌ์ด์˜ ํด๋ก ๋ถˆ๊ท ํ˜•์œผ๋กœ ์ธํ•ด ํ• ๋‹น๋Ÿ‰์ด ์กฐ๊ธฐ์— ๋งŒ๋ฃŒ๋˜์–ด ์•„์ง ํ• ๋‹น๋Ÿ‰ (afaiu)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œํ•œํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ ๊ธฐ๊ฐ„ ๊ฒฝ๊ณ„์—์„œ expires_seq๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ expires_seq๋Š” ๋™์ผํ•œ ๊ธฐ๊ฐ„์—์žˆ์„ ๋•Œ ๊ฐ cfs_rq๊ฐ„์— ์ผ์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@mariusgrigoriu- ๋‚ฎ์€ CPU ์‚ฌ์šฉ๋Ÿ‰์œผ๋กœ ๋†’์€ ์Šค๋กœํ‹€ ๋ง์— ๋„๋‹ฌํ•˜๊ณ  ์ปค๋„์ด 512ac999 ์ด์ „ ์ธ ๊ฒฝ์šฐ ์•„๋งˆ๋„ 512ac999๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 512ac999๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฌธ์ œ๊ฐ€ ํ˜„์žฌ lkml์—์„œ ๋…ผ์˜๋˜๊ณ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • CPU ๊ณ ์ •
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒ์„ฑํ•˜๋Š” ์Šค๋ ˆ๋“œ ์ˆ˜ ์ค„์ด๊ธฐ
  • ์Šค๋กœํ‹€ ๋ง์ด ๋ฐœ์ƒํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ• ๋‹น๋Ÿ‰์„ ์ดˆ๊ณผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€๊ธˆ์€ ํ•˜๋“œ ์ œํ•œ์„ ํ•ด์ œํ•˜์‹ญ์‹œ์˜ค.
  • ์ œ์•ˆ ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ์ปค๋„์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

@chiluk ์ด๋ฏธ ์ปค๋„ 4.14์™€ ํ˜ธํ™˜๋˜๋Š”์ด ํŒจ์น˜์˜ ๋ฒ„์ „์„ ์ด๋ฏธ ๊ฒŒ์‹œ ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ˆ˜์ฒœ ๊ฐœ์˜ ํ˜ธ์ŠคํŠธ๋ฅผ 4.9.62์—์„œ 4.14.121๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ๋ณด๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ฝค ๊ณต๊ฒฉ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  1. memcached, mysql, nginx ๋“ฑ์— ๋Œ€ํ•œ ์ œํ•œ ๊ฐ์†Œ
  2. ์ž๋ฐ” ์•ฑ์— ๋Œ€ํ•œ ์ œํ•œ ์ฆ๊ฐ€

์—ฌ๊ธฐ์—์„œ ๋‘ ์„ธ๊ณ„๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ง๋กœ ๋กค ํฌ์›Œ๋“œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— ์ง์ ‘ ์ด์‹์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ—‰ํ—‰
Ben Segull์˜ ์ œ์•ˆ์— ๋”ฐ๋ผ ์ง€๋‚œ ๋ฉฐ์น  ๋™์•ˆ ์‹ค์ œ๋กœ ํŒจ์น˜๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ปค๋„ ํŒจ์น˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์„ ํ™•๋ณด ํ•  ์ˆ˜์žˆ๋Š”๋Œ€๋กœ ๊ณง ์ถœ์‹œ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@chiluk ํ•ด๋‹น ํŒจ์น˜์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋”๋ผ๋„ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ง€๋‚˜๊ฐ€๋Š” ํŒจ์น˜๋ฅผ ๋†“์น˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@PaulFurtado , ํŒจ์น˜๋Š” CFS ์ž‘์„ฑ์ž์— ์˜ํ•ด "์Šน์ธ"๋˜์—ˆ์œผ๋ฉฐ ์Šค์ผ€์ค„๋Ÿฌ ๊ด€๋ฆฌ์ž๊ฐ€ ํŒจ์น˜๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ Linus์— ํ‘ธ์‹œํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@chiluk ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ฐฉ๊ธˆ ํ˜„์žฌ ํ”„๋กœ๋•์…˜ ์ปค๋„ ์ธ ์ปค๋„ 4.14์— ํŒจ์น˜๋ฅผ ๋ฐฑ ํฌํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฐฑ ํฌํŠธ์— ๋Œ€ํ•œ ์š”์ ๊ณผ fibtest์˜ ๊ฒฐ๊ณผ๋ฅผ ์—ฌ๊ธฐ์—์„œ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค : https://gist.github.com/PaulFurtado/ff6c67ec87416b66ba1c6fc70f7beec1

kubernetes ๋ฐ mesos ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜„์žฌ ์„ธ๋Œ€ c5.9xlarge ๋ฐ m5.24xlarge ec2 ์ธ์Šคํ„ด์Šค์—์„œ ํŒจ์น˜๋Š” fibtest ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ๋‘ ๋ฐฐ๋กœ ๋†’์ž…๋‹ˆ๋‹ค. ์ด์ „ ์„ธ๋Œ€ r4.16xlarge ์ธ์Šคํ„ด์Šค ์œ ํ˜•์—์„œ๋Š” 1.5 ๋ฐฐ ๋” ๋งŽ์€ CPU ์‚ฌ์šฉ๋ฅ ์„ ๊ด€๋ฆฌํ•˜์ง€๋งŒ ์ถ”๊ฐ€ ๋ฐ˜๋ณต์€ ๊ฑฐ์˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์ด๋Š” CPU ์ƒ์„ฑ ๋ฐ ํ”ผ๋ณด๋‚˜์น˜ ์‹œํ€€์Šค์˜ ์ง€์ˆ˜ ์  ํŠน์„ฑ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค). ์ด ์ˆซ์ž๋Š” ํ…Œ์ŠคํŠธ๋ฅผ 5 ์ดˆ ๊ธฐ๋ณธ๊ฐ’ ๋Œ€์‹  30 ์ดˆ๋กœ ๋Š˜๋ฆฌ๋ฉด ๊ฑฐ์˜ ์ •ํ™•ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ฃผ์—์ด๋ฅผ QA ํ™˜๊ฒฝ์— ์ ์šฉํ•˜์—ฌ ์ตœ์•…์˜ ์Šค๋กœํ‹€ ๋ง์„ ๊ฒช๊ณ ์žˆ๋Š” ์•ฑ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ง€ํ‘œ๋ฅผ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@PaulFurtado ๋จผ์ € ํ…Œ์ŠคํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. kernel.org 4.14 ๋˜๋Š” ์šฐ๋ถ„ํˆฌ 4.14๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค 512ac999๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. fibtest์˜ ๊ฒฝ์šฐ ์™„๋ฃŒ๋œ ๋ฐ˜๋ณต์€ ์‚ฌ์šฉ ๋œ cpu ์‹œ๊ฐ„๋งŒํผ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ๋œ ๋ฐ˜๋ณต์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ cpu mhz์˜ ์˜ํ–ฅ์„ ํฌ๊ฒŒ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (ํŠนํžˆ ํด๋ผ์šฐ๋“œ์—์„œ ์ œ์–ด ํ•  ์ˆ˜์žˆ๋Š” ์ •๋„๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).

kernel.org 4.14 ๋˜๋Š” ์šฐ๋ถ„ํˆฌ 4.14๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค 512ac999๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์šฐ๋ฆฌ๋Š” ๋ฉ”์ธ ๋ผ์ธ 4.14๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค (Amazon Linux 2 ์ปค๋„์˜ ํŒจ์น˜ ์„ธํŠธ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ์ด ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ํŒจ์น˜๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์Œ).

512ac999๋Š” ๋ฉ”์ธ ๋ผ์ธ 4.14.95์— ์ฐฉ๋ฅ™ํ–ˆ์œผ๋ฉฐ 4.14.77์—์„œ 4.14.121+๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ๋•Œ ์˜ํ–ฅ์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด memcached ์ปจํ…Œ์ด๋„ˆ (๋งค์šฐ ์ ์€ ์Šค๋ ˆ๋“œ ์ˆ˜)๊ฐ€ ์„ค๋ช… ํ•  ์ˆ˜์—†๋Š” ์ œํ•œ์—์„œ ์ œํ•œ ์—†์Œ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์ง€๋งŒ, golang ๋ฐ Java ์ปจํ…Œ์ด๋„ˆ (๋งค์šฐ ๋†’์€ ์Šค๋ ˆ๋“œ ์ˆ˜)์—์„œ ๋” ๋งŽ์€ ์ œํ•œ์„ ๊ฒฝํ—˜ํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

fibtest์˜ ๊ฒฝ์šฐ ์™„๋ฃŒ๋œ ๋ฐ˜๋ณต์€ ์‚ฌ์šฉ ๋œ cpu ์‹œ๊ฐ„๋งŒํผ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ๋œ ๋ฐ˜๋ณต์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ cpu mhz์˜ ์˜ํ–ฅ์„ ํฌ๊ฒŒ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (ํŠนํžˆ ํด๋ผ์šฐ๋“œ์—์„œ ์ œ์–ด ํ•  ์ˆ˜์žˆ๋Š” ์ •๋„๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).

๋” ์ƒˆ๋กญ๊ฑฐ๋‚˜ ๋” ํฐ EC2 ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์„œ ์ƒํƒœ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ˆ˜์ค€์˜ ํ„ฐ๋ณด ๋ถ€์ŠคํŠธ๋ฅผ ๋ˆ ์ƒํƒœ๋กœ ์‹คํ–‰ ํ•˜๊ณ  ์ฝ”์–ด๊ฐ€ ์œ ํœด ์ƒํƒœ๊ฐ€๋˜์ง€ ์•Š๋„๋กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ c- ์ƒํƒœ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์žˆ์ง€๋งŒ p- ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ณต ์ฆ๊ฐ€๋ฅผ ๋ณด์ง€ ๋ชปํ•œ ์ธ์Šคํ„ด์Šค ์œ ํ˜•์€ p- ์ƒํƒœ๋ฅผ ์ œ์–ด ํ•  ์ˆ˜์žˆ๋Š” ์œ ํ˜•์ด๋ฏ€๋กœ ๋งค์šฐ ์ž˜ ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ํ…Œ์ŠคํŠธ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์ „ํ˜€ ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์ฃผ๋ง ๋™์•ˆ ์‚ฌ์ „ QA ํ™˜๊ฒฝ์—์„œ ์ƒํ™ฉ์ด ์•ˆ์ •์ ์ด์—ˆ์œผ๋ฉฐ ๋‚ด์ผ ์ฃผ์š” QA ํ™˜๊ฒฝ์— ํŒจ์น˜๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ๋” ๋งŽ์€ ์‹ค์ œ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. memcached๊ฐ€ ์ด์ „ ํŒจ์น˜์˜ ํ˜œํƒ์„ ๋ฐ›์•˜๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ, ์šฐ๋ฆฌ๋Š” ์ผ€์ดํฌ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์—ˆ๊ณ  ๋‘ ํŒจ์น˜๋ฅผ ๋ชจ๋‘ ์ œ์ž๋ฆฌ์— ๋‘์–ด ๋จน๊ธฐ๋ฅผ ์›ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊บผ์ด ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์กฐ์ ˆ์— ํˆฌ์ž… ํ•œ ๋ชจ๋“  ์ž‘์—…์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋…ผ์˜์ค‘์ธ ์ปค๋„ ํŒจ์น˜์— ๋Œ€ํ•ด ๋ฉ”๋ชจ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค ....

ํ˜„์žฌ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ์ปค๋„์— ์ ์šฉํ–ˆ์œผ๋ฉฐ CFS ์Šค๋กœํ‹€ ๋ง ์†๋„์—์„œ ๋ช‡ ๊ฐ€์ง€ ํฐ ์ด์ ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์˜ ์ด์ ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์ด๋ฅผ ์ตœ๋Œ€ 100ms๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํŒจ์น˜๋Š” ์˜ค๋Š˜ ์•„์นจ์— ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=de53fd7aedb100f03e5d2231cfce0e4993282425

Torvald์˜ ํŠธ๋ฆฌ์— ๋„๋‹ฌํ•˜๋ฉด Linux ์•ˆ์ • ํฌํ•จ์„ ์œ„ํ•ด ์ œ์ถœํ•˜๊ณ  ์ดํ›„ ์ฃผ์š” ๋ฐฐํฌํŒ (Redhat / Ubuntu)์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์— ๊ด€์‹ฌ์ด ์žˆ๊ณ  ๊ทธ๋“ค์ด ๋ฆฌ๋ˆ…์Šค ์•ˆ์ • ํŒจ์น˜๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ง์ ‘ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ golang ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ํŒจ์น˜ (ubuntu 18.04, 5.2.7 ์ปค๋„, ๋…ธ๋“œ : 56 ์ฝ”์–ด CPU E5-2660 v4 @ 2.00GHz)๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋งค์šฐ ์ธ์ƒ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์—์„œ CFS๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์„ฑ๋Šฅ.

๊ฑฐ์˜ 0์— ๊ฐ€๊นŒ์šด ์Šค๋กœํ‹€ ๋ง ์†๋„์—์„œ ๋™์‹œ์„ฑ / CPU ์‚ฌ์šฉ๋ฅ ์— ๋”ฐ๋ผ ์ง€์—ฐ ์‹œ๊ฐ„์ด 5 ~ 35 % ๊ฐ์†Œํ•˜๊ณ  RPS๊ฐ€ 5 ~ 55 % ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @chiluk !

@jhohertz ๋ผ๊ณ 

golang์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๋ ค๋ฉด GOMAXPROCS๋ฅผ ceil (quota) +2๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. ํ”Œ๋Ÿฌ์Šค 2๋Š” ์ผ๋ถ€ ๋™์‹œ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@chiluk ๋Š” GOMAXPROCS = 8๊ณผ GOMAXPROCS = 10์œผ๋กœ cpu.limit = 8๋กœ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ํฐ ์ฐจ์ด๋Š” ์•„๋‹ˆ์ง€๋งŒ ์•ฝ 1-2 % ์ •๋„์ž…๋‹ˆ๋‹ค.

@zigmund ๋Š” cpu.limit๊ฐ€ 8 cpu์˜ cpuset์— ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ”์ธ๋”ฉํ•ด์•ผํ•˜๋Š” ์ •์ˆ˜ 8๋กœ ์„ค์ •๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 1-2 % ์ฐจ์ด๋Š” 8 ๊ฐœ์˜ CPU ์ž‘์—… ์„ธํŠธ์—์„œ 2 ๋ช…์˜ ์ถ”๊ฐ€ ๊ณ  ๋ฃจํ‹ด ๋Ÿฌ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ์ „ํ™˜์— ๋Œ€ํ•œ ์˜ค๋ฒ„ ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

GOMAXPROCS = # ์„ค์ •์€ ์ปค๋„ ํŒจ์น˜๊ฐ€ ๋„๋ฆฌ ๋ฐฐํฌ ๋  ๋•Œ๊นŒ์ง€ go ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ง ํ–ˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํŒจ์น˜ ๋œ ์ปค๋„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์œผ๋ฉฐ ์ด์ œ ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ˆœ๊ฐ„์„ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํด๋Ÿฌ์Šคํ„ฐ ์ค‘ ํ•˜๋‚˜์˜ ํ†ต๊ณ„-72 ์ฝ”์–ด E5-2695 v4 @ 2.10GHz, 128Gb RAM, Debian 9, 5.2.7 ์ปค๋„ ํŒจ์น˜ ํฌํ•จ.
์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„ golang ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋œ ํ˜ผํ•ฉ๋กœ๋“œ๊ฐ€ ์žˆ์ง€๋งŒ php์™€ python๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณจ๋ž‘. ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋” ์งง๊ณ  ์˜ฌ๋ฐ”๋ฅธ GOMAXPROCS๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ธฐ๋ณธ GOMAXPROCS = 72 ์ธ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ~ 16์—์„œ ์ปค๋„์„ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉฐ ๊ทธ ํ›„ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค๊ณ  CPU ์‚ฌ์šฉ๋ฅ ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. 21:15์— ์˜ฌ๋ฐ”๋ฅธ GOMAXPROCS๋ฅผ ์„ค์ •ํ•˜๊ณ  CPU ์‚ฌ์šฉ๋ฅ ์„ ์ •๊ทœํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
image
image

ํŒŒ์ด์ฌ. ์ถ”๊ฐ€ ์ด๋™์—†์ด ํŒจ์น˜๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๊ฒƒ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋ฅ ๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.
image
image

PHP. CPU ์‚ฌ์šฉ๋ฅ ์€ ๋™์ผํ•˜๋ฉฐ ์ผ๋ถ€ ์„œ๋น„์Šค์—์„œ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ๊ฐ์†Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํฐ ์ด์ต์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @zigmund.
I setted correct GOMAXPROCS ๋ผ๊ณ  ๋งํ–ˆ์„ ๋•Œ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ...
72 ๊ฐœ์˜ ์ฝ”์–ด ๋…ธ๋“œ์—์„œ ํ•˜๋‚˜์˜ ํฌ๋“œ ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฏ€๋กœ GOMAXPROCS ๋ฅผ ๋” ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ํฌ๋“œ์˜ CPU ์ œํ•œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @zigmund. ์ด๋™ ๋ณ€๊ฒฝ์€ ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฑฐ์˜ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

GIL์ด ์ด๊ฒƒ์˜ ์ด์ ์„ ๊ฑฐ์˜ ๋ฌดํšจํ™” ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ํŒŒ์ด์ฌ ๊ฐœ์„ ์— ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ด ํŒจ์น˜๊ฐ€ ์‘๋‹ต ์‹œ๊ฐ„์„ ๊ฑฐ์˜ ์ˆœ์ „ํžˆ ์ค„์—ฌ์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์ œํ•œ ๊ธฐ๊ฐ„์˜ ๋น„์œจ์„ ์ค„์ด๊ณ  CPU ์‚ฌ์šฉ๋ฅ ์„ ๋†’์ด์‹ญ์‹œ์˜ค. ํŒŒ์ด์ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ์ „ํžˆ ์ •์ƒ์ž…๋‹ˆ๊นŒ?

@ prune998 ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ์ฒ ์ž๊ฐ€ ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. GOMAXPROCS = limits.cpu๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ์ด ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ๋…ธ๋“œ ๋‹น ์•ฝ 110 ๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@chiluk ์ €๋Š” ํŒŒ์ด์ฌ์— ๊ฐ•ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŒจ์น˜๊ฐ€ ํ•˜์œ„ ๊ณ„์ธต์—์„œ ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌธ์ œ์—†์ด ์ •์ƒ์ด๋ฉฐ ์ปค๋„ ๋ณ€๊ฒฝ ํ›„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

@chiluk ๋‹ค์–‘ํ•œ Linux ๋ฐฐํฌํŒ์—์„œ ํŒจ์น˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ €๋Š” ํŠนํžˆ ๋ฐ๋น„์•ˆ๊ณผ AWS Linux์— ๊ด€์‹ฌ์ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ถ„ํˆฌ ๋“ฑ์— ๊ด€์‹ฌ์ด ์žˆ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋น›์„ ๋น„์ถ”์–ด๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@Nuru https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html?highlight=stable%20rules ... ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด ํŒจ์น˜๊ฐ€ Linus์— ๋„๋‹ฌํ•˜๋ฉด linux-stable์„ ํ†ตํ•ด ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. tree, * (์•„๋งˆ๋„ ๋” ์ผ์ฐ), ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฐฐํฌํŒ์€ linux-stable ํ”„๋กœ์„ธ์Šค๋ฅผ ๋”ฐ๋ผ์•ผํ•˜๋ฉฐ ์•ˆ์ •๋œ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ํ—ˆ์šฉ ํ•œ ํŒจ์น˜๋ฅผ ๋ฐฐํฌํŒ ํŠน์ • ์ปค๋„๋กœ ๊ฐ€์ ธ์™€์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐฐํฌํŒ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

@chiluk Linux ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. "Linus 'ํŠธ๋ฆฌ"๋Š” https://github.com/torvalds/linux ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

Linus์˜ ํŠธ๋ฆฌ๋Š” https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ˜„์žฌ ๊ฐœ๋ฐœ ํ†ตํ•ฉ ํŠธ๋ฆฌ ์ธ linux-next์— ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ ์ปค๋„ ๊ฐœ๋ฐœ์€ ์•”ํ‘๊ธฐ์— ์•ฝ๊ฐ„ ๊ฐ‡ํ˜€ ์žˆ์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Š” 5.3์ด ๋ฆด๋ฆฌ์Šค๋˜๊ณ  5.4-rc0์—์„œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด linux-next ํŠธ๋ฆฌ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•ˆ์ •๋œ ์ปค๋„์ด์ด ์ˆ˜์ •์„ ์‹œ์ž‘ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์ž…๋‹ˆ๋‹ค. Linus๊ฐ€ 5.3์ด ์•ˆ์ •์ ์ด๋ผ๊ณ  ๋Š๋‚„ ๋•Œ๋งˆ๋‹ค ๋ˆ„๊ตฌ๋‚˜ ์ถ”์ธก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Linus]๋Š” 5.3์ด ๋ฆด๋ฆฌ์Šค๋˜๊ณ  5.4-rc0์—์„œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด linux-next ํŠธ๋ฆฌ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•ˆ์ •๋œ ์ปค๋„์ด์ด ์ˆ˜์ •์„ ์‹œ์ž‘ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์ž…๋‹ˆ๋‹ค. Linus๊ฐ€ 5.3์ด ์•ˆ์ •์ ์ด๋ผ๊ณ  ๋Š๋‚„ ๋•Œ๋งˆ๋‹ค ๋ˆ„๊ตฌ๋‚˜ ์ถ”์ธก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@chiluk Linus๊ฐ€ 2019 ๋…„ 9 ์›” 15 ์ผ ์— 5.3์ด ์•ˆ์ •์ ์ด๋ผ๊ณ  ๊ฒฐ์ •ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด "linux-next"๋ž€ ๋ฌด์—‡์ด๋ฉฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ํŒจ์น˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ์ถ”์ ํ•ฉ๋‹ˆ๊นŒ?

๋ฐ๋น„์•ˆ ์ŠคํŠธ๋ ˆ์น˜ ํŒจํ‚ค์ง€ ๋ฐ / ๋˜๋Š”์ด ํŒจ์น˜๊ฐ€ ํฌํ•จ ๋œ AWS ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ ํ•œ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? https://github.com/kubernetes-sigs/image-builder/tree/master/images/kube-deploy/imagebuilder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ ‡๊ฒŒํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ์ค‘๋ณต ๋…ธ๋ ฅ์„ ํ”ผํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ด์ œ Linus์˜ ํŠธ๋ฆฌ ์— ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฉฐ 5.4์—์„œ ๋ฆด๋ฆฌ์Šค๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ linux-stable์— ์ œ์ถœํ–ˆ๊ณ , ์•ˆ์ •๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฐํฌํŒ์ด ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ณง ๊ทธ๊ฒƒ์„ ์„ ํƒํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์ด CentOS (7)๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒฝ์šฐ / ์–ด๋–ป๊ฒŒ ๋”ฐ๋ผ์•ผํ• ์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐฑ ํฌํŒ… ๋“ฑ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@till https://github.com/kubernetes/kubernetes/issues/67577#issuecomment -531370333

์•ˆ์ •์ ์ธ ์ปค๋„ ๋Œ€ํ™”๋Š” ์—ฌ๊ธฐ์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
https://lore.kernel.org/stable/CAC=E7cUXpUDgpvsmMaMU6sAydbfD0FEJiK25R1r=e9=YtcPjGw@mail.gmail.com/

๋˜ํ•œ KubeCon์—๊ฐ€๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด์ด ๋ฌธ์ œ๋ฅผ ๊ฑฐ๊ธฐ์—์„œ ๋ฐœํ‘œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://sched.co/Uae1

์Šค์ผ€์ค„๋Ÿฌ ๊ด€๋ฆฌ์ž์˜ ๋ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Greg HK๊ฐ€ ์•ˆ์ •์ ์ธ ํŠธ๋ฆฌ๋กœ ๊ฐ€์ ธ ์˜ค๊ธฐ ์œ„ํ•ด ์ฐพ๊ณ  ์žˆ๋˜ ack?

Greg KH๋Š” ์Šค์ผ€์ค„๋Ÿฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ํŒจ์น˜์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋ฏธ๋ฃจ ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒจ์น˜๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฐฑ ํฌํŒ…๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” LKML์— ๋Œ€ํ•œ ์ € ์ด์™ธ์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์˜๊ฒฌ์€ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

CoreOS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ฒฝ์šฐ, ๊ฐœ๋ฐฉ ๋ฌธ์ œ๊ฐ€์žˆ๋‹ค @chiluk์˜ ํŒจ์น˜๊ฐ€ ๋ฐฑ ํฌํŠธ ํ•  ๊ฒƒ์„ ์š”์ฒญ.

CoreOS ์ปค๋„ 4.19.82์—๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/coreos/linux/pull/364
CoreOS Container Linux 2317.0.1 (์•ŒํŒŒ ์ฑ„๋„)์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/coreos/coreos-overlay/pull/3796 http://coreos.com/releases/#2317.0.1

Linux stable ๋กœ์˜ ๋ฐฑ ํฌํŠธ ๋Š” ํŒจ์น˜๊ฐ€ ์ œ๋Œ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋‹จ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. @chiluk Linux ์•ˆ์ •์„์œ„ํ•œ ๋ฐฑ ํฌํŠธ ์ž‘์—…์„ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด 4.9๋กœ ๋ฐฑ ํฌํŠธํ•˜์—ฌ Debian "stretch"๋กœ ๋“ค์–ด๊ฐ€ kops ์˜ํ•ด ์„ ํƒ๋˜๋„๋ก ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? "์ŠคํŠธ๋ ˆ์น˜"์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ 6 ๊ฐœ์›”์ด ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทธ๋•Œ kops ๊ฐ€ "buster"๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Nuru , ๋‚˜๋Š” ํŒจ์น˜๋ฅผ ๋ฐฑ ํฌํŠธํ•˜๊ณ  ์ŠคํŠธ๋ ˆ์น˜ ํŒจํ‚ค์ง€ (stretch-backports ์ปค๋„ ๊ธฐ๋ฐ˜)์™€ kops 1.11 ์นœํ™”์  ์ธ AMI๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-4.19.67-pm_4.19.67-1_amd64.buildinfo
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-image-4.19.67-pm_4.19.67-1_amd64.deb
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-image-4.19.67-pm-dbg_4.19.67-1_amd64.deb
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-headers-4.19.67-pm_4.19.67-1_amd64.deb
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-4.19.67-pm_4.19.67-1_amd64.changes
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-libc-dev_4.19.67-1_amd64.deb

293993587779 / k8s-1.11-debian-stretch-amd64-hvm-ebs-2019-09-26

@blakebarnett ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ ๋“œ๋ฆฌ๋ฉฐ ๊ท€์ฐฎ๊ฒŒํ•ด์„œ ๋ฏธ์•ˆํ•˜์ง€๋งŒ ์กฐ๊ธˆ ๋” ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

  • "stretch"๋Š” Linux 4.9๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜์ง€๋งŒ ๋ชจ๋“  ๋งํฌ๋Š” 4.19 ์šฉ์ž…๋‹ˆ๋‹ค.
  • "ํŒจ์น˜"๋ฅผ ๋ฐฑ ํฌํŠธํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ 3 ๊ฐœ์˜ ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (์„ธ ๋ฒˆ์งธ๋Š” ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. 512ac999 sched / fair : ๋Œ€์—ญํญ ํƒ€์ด๋จธ ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ ์ƒํƒœ ์ˆ˜์ •

    2. de53fd7ae sched / fair : CPU ๋กœ์ปฌ ์Šฌ๋ผ์ด์Šค ๋งŒ๋ฃŒ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋†’์€ ์Šค๋กœํ‹€ ๋ง์œผ๋กœ ๋‚ฎ์€ CPU ์‚ฌ์šฉ๋Ÿ‰ ์ˆ˜์ •

    3. 763a9ec06 sched / fair : -Wunused-but-set-variable ๊ฒฝ๊ณ  ์ˆ˜์ •

3 ๊ฐœ์˜ ํŒจ์น˜๋ฅผ ๋ชจ๋‘ 4.9๋กœ ๋ฐฑ ํฌํŠธ ํ–ˆ์Šต๋‹ˆ๊นŒ? (์ €๋Š” ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. "๋ณ€๊ฒฝ ์‚ฌํ•ญ"๋ฌธ์„œ๋Š” ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๋˜ํ•œ ์–ด๋–ค ๋ฆฌ์ „์—์„œ AMI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, 4.19 ์ธ stretch-backports ์ปค๋„์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. AWS์—์„œ๋„ ํ•„์š”ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (ํŠนํžˆ M5 / C5 ์ธ์Šคํ„ด์Šค ์œ ํ˜•์˜ ๊ฒฝ์šฐ).

๋‚ด๊ฐ€ ๋ฏฟ๋Š” ๋ชจ๋“  ํŒจ์น˜๋ฅผ ํ†ตํ•ฉ ํ•œ diff๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 4.19์—์„œ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ญ์ œ ๋œ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € https://github.com/kubernetes/kubernetes/issues/67577์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

--- kernel/sched/fair.c 2019-09-25 16:06:02.954933954 -0700
+++ kernel/sched/fair.c-b   2019-09-25 16:06:56.341615817 -0700
@@ -4928,8 +4928,6 @@

    cfs_b->period_active = 1;
    overrun = hrtimer_forward_now(&cfs_b->period_timer, cfs_b->period);
-   cfs_b->runtime_expires += (overrun + 1) * ktime_to_ns(cfs_b->period);
-   cfs_b->expires_seq++;
    hrtimer_start_expires(&cfs_b->period_timer, HRTIMER_MODE_ABS_PINNED);
 }
--- kernel/sched/sched.h    2019-08-16 01:12:54.000000000 -0700
+++ sched.h.b   2019-09-25 13:24:00.444566284 -0700
@@ -334,8 +334,6 @@
    u64         quota;
    u64         runtime;
    s64         hierarchical_quota;
-   u64         runtime_expires;
-   int         expires_seq;

    short           idle;
    short           period_active;
@@ -555,8 +553,6 @@

 #ifdef CONFIG_CFS_BANDWIDTH
    int         runtime_enabled;
-   int         expires_seq;
-   u64         runtime_expires;
    s64         runtime_remaining;

    u64         throttled_clock;

AMI๊ฐ€ us-west-1์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ํŒจ์น˜๋ฅผ ๋ฐฑ ํฌํŠธํ•˜์—ฌ Linux ์•ˆ์ •์ ์ธ ์ปค๋„์— ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.
v4.14 https://lore.kernel.org/stable/[email protected]/
v4.19 https://lore.kernel.org/stable/[email protected]/ #t

์•ˆ๋…•ํ•˜์„ธ์š”,
4.19 ๋ธŒ๋žœ์น˜์— ํŒจ์น˜๋ฅผ ํ†ตํ•ฉ ํ•œ ํ›„, buster ๋ฐ stretch-backport์—์„œ kerner๋ฅผ ์ ์ ˆํžˆ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ๋น„์•ˆ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=946144

๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ง์„ค์ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์ด ๋„ˆ๋ฌด ์ŠคํŒธ ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ @chiluk์˜ ํ›Œ๋ฅญํ•œ ๊ฐ•์—ฐ์„์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๋งŽ์€ ๋ฐฐ๊ฒฝ ์ •๋ณด๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค . https://youtu.be/UE7QX98-kO0.

GKE์—์„œ ์กฐ์ ˆ์„ ํ”ผํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜์š”? ์šฐ๋ฆฌ๋Š” PHP ์ปจํ…Œ์ด๋„ˆ์˜ ํ•œ ๋ฐฉ๋ฒ•์ด ์ผ๋ฐ˜์ ์ธ 0.1 ์ดˆ ๋Œ€์‹  120 ์ดˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํฐ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

CPU ์ œํ•œ ์ œ๊ฑฐ

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ CPU ์š”์ฒญ์ด ๋„ˆ๋ฌด ์ ์„ ๋•Œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œํ•œ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด๋ฉฐ ์ œํ•œ์ด ์—†์œผ๋ฉฐ CPU ์š”์ฒญ ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ์ „ํžˆ ์Šค๋กœํ‹€ ๋ง์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@bartoszhernas ์—ฌ๊ธฐ์— ์ž˜๋ชป๋œ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์‚ฌ๋žŒ๋“ค์ด "throttling"์„ ์–ธ๊ธ‰ ํ•  ๋•Œ cgroup ์ฆ๊ฐ€์— ๋Œ€ํ•œ cpu.stat์˜ nr_throttled ์ธ cfs ๋Œ€์—ญํญ ์ œ์–ด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” CPU ์ œํ•œ์ด ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋งŒ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. GKE๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋ฅด๊ฒŒ ํŒŸ (Pod)์— ์ œํ•œ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํ•œ ๋‚˜๋Š” ๋‹น์‹ ์ด ์น˜๋Š” ๊ฒƒ์„ ์กฐ์ ˆ์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด "ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ๊ฒฝํ•ฉ"์ด๋ผ๊ณ  ๋ฌ˜์‚ฌ ํ•œ ๊ฒƒ์„ ๋ถ€๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญํ•œ ๊ฒƒ๋ณด๋‹ค ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ž์˜ ํ”„๋กœ์„ธ์„œ ๋˜๋Š” ๊ธฐํƒ€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๊ฒฝ์Ÿํ•˜๋Š” ์ž˜๋ชป๋œ ํฌ๊ธฐ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ * (์š”์ฒญ)์ด ์—ฌ๋Ÿฌ ๊ฐœ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•œ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ •ํ™•ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ€์ ์ ˆํ•œ ํฌ๊ธฐ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ƒ์ž์˜ ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ฐ€๋Šฅ์„ฑ์€ ๋ถ€์กฑํ•œ ์š”์ฒญ ๋Ÿ‰์ด ๋‹จ์ˆœํžˆ ์ž˜๋ชป๋œ ์Šค์ผ€์ค„๋ง ๋™์ž‘์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์„ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋” ๋†’์€ "์š”์ฒญ"์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋น„ํ•ด ์–‘์˜ "์ข‹์€"๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์†Œํ”„ํŠธ ์ œํ•œ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

90 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle stale

/ remove-lifecycle stale

๋‚ด ์ดํ•ด์—์„œ ์ปค๋„์˜ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์–ด https://github.com/coreos/bugs/issues/2623์˜ ContainerLinux์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์ด ์ปค๋„ ํŒจ์น˜ ์ดํ›„ ๋‚จ์€ ๋ฌธ์ œ๋ฅผ ์•Œ๊ณ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@sfudeus Kubernetes๋Š” ๋ชจ๋“  Linux ๋ฒ„์ „ ๋˜๋Š” AFAIK, POSIT ํ˜ธํ™˜ Unix ๋ฒ„์ „์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋Š” Linux๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๊ฒฐ์ฝ” ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ผ๋ถ€ Linux ํŒŒ์ƒ ๋ฐฐํฌํŒ์—์„œ๋Š” ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์—์„œ๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋Š” Linux ์ปค๋„ 5.4์—์„œ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” ๋‹ค์–‘ํ•œ ์ด์ „ ์ปค๋„๋กœ ๋ฐฑ ํฌํŒ… ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•„์ง 5.4 ์ปค๋„๋กœ ์ด๋™ํ•  ์ค€๋น„๊ฐ€๋˜์ง€ ์•Š์€ ์ƒˆ Linux ๋ฐฐํฌํŒ์„ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์œ„์˜ ์ปค๋ฐ‹ ๋ชฉ๋ก์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฒ„๊ทธ ์ˆ˜์ • ํŒจ์น˜๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์„ ์ˆ˜์žˆ๋Š” ๋ฌด์ˆ˜ํ•œ Linux ๋ฐฐํฌํŒ์— ์—ฌ์ „ํžˆ ํ†ตํ•ฉ๋˜๋Š” ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ™œ์„ฑ ์ปค๋ฐ‹ ์ฐธ์กฐ๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋˜๋Š” ๋™์•ˆ์ด ๋ฌธ์ œ๋ฅผ ์—ด์–ด๋‘๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Kubernetes ์„ค์น˜๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ๊ธฐํƒ€ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@Nuru ๊ดœ์ฐฎ์•„์š”, ์ด๋ฏธ ์•Œ๋ ค์ง„ ๋‹ค๋ฅธ ์ปค๋„ ๋ฌธ์ œ๊ฐ€ ๋‚จ์•„ ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ†ตํ•ฉ ํ•œ ๋Œ€๊ทœ๋ชจ ๋ฐฐํฌํŒ๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์—ด์–ด ๋‘์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋์—†๋Š” IoT ์žฅ์น˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ๋์—†์ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์˜๋ฏธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ซํžŒ ๋ฌธ์ œ๋„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‚ด 2 ์„ผํŠธ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณต ํ•  ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ์ด๋ฅผ ์ œ๊ธฐํ•ด์•ผ ํ•  ๊ณณ์€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

k8s 1.15.10 ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Debian Buster (buster-backports ์ปค๋„ ์‚ฌ์šฉ)์—์„œ 5.4 Linux ์ปค๋„์„ ์‹คํ–‰ ์ค‘์ด๋ฉฐ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•  ์ผ์ด ๊ฑฐ์˜์—†๊ณ  (kube-downscaler๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ณ„์† ๋Œ์•„๊ฐ€๋Š” ์˜ˆ์ด๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 3m์˜ CPU๊ฐ€ ํ•„์š”ํ•จ) ํ• ๋‹น ๋œ CPU ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งค์šฐ ์ ๊ณ  (kube-downscaler์˜ ๊ฒฝ์šฐ 50m) ํด๋Ÿฌ์Šคํ„ฐ) ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋งค์šฐ ๋†’์€ ์กฐ์ ˆ ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ kube-downscaler๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ sleep ๋ฅผ 30 ๋ถ„ ๋™์•ˆ ์‹คํ–‰ํ•˜๋Š” Python ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. cAdvisor๋Š”์ด ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ container_cpu_cfs_throttled_periods_total์˜ ์ฆ๊ฐ€๊ฐ€์ด ์ปจํ…Œ์ด๋„ˆ์˜ container_cpu_cfs_periods_total ๊ฐ’๊ณผ ํ•ญ์ƒ ๋‹ค์†Œ ์œ ์‚ฌํ•˜๋„๋ก ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค (5m ๊ฐ„๊ฒฉ์œผ๋กœ ์ฆ๊ฐ€๋ฅผ ํ™•์ธํ•  ๋•Œ ๋‘˜ ๋‹ค ์•ฝ 250 ์ž„). ์ œํ•œ ๊ธฐ๊ฐ„์ด 0์— ๊ฐ€๊นŒ์šธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์ž˜๋ชป ์ธก์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? cAdvisor๊ฐ€ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๊นŒ? ์Šค๋กœํ‹€ ๊ธฐ๊ฐ„์ด ๊ฐ์†Œํ•ด์•ผํ•œ๋‹ค๋Š” ์šฐ๋ฆฌ์˜ ๊ฐ€์ •์ด ๋งž์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—์„œ ์กฐ์–ธ์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

5.4 ์ปค๋„๋กœ ์ „ํ™˜ ํ•œ ํ›„์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” Pod ์ˆ˜๊ฐ€ ์•ฝ๊ฐ„ (์•ฝ 40 %) ๊ฐ์†Œํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ ํ˜„์žฌ๋ณด๊ณ ์žˆ๋Š” ๊ฒƒ์ด ์‹ค์ œ ๋ฌธ์ œ์ธ์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ์œ„์˜ ํ†ต๊ณ„๋ฅผ ๋ณผ ๋•Œ 3m ํ‰๊ท  CPU ์‚ฌ์šฉ๋Ÿ‰์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์–ป๋Š” ๊ฒฝ์šฐ "์กฐ์ ˆ"์ด ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹คํ–‰์ค‘์ธ ๋…ธ๋“œ๋Š” ์˜ค๋ฒ„ ์ปค๋ฐ‹๋˜์ง€ ์•Š์œผ๋ฉฐ ํ‰๊ท  CPU ์‚ฌ์šฉ๋Ÿ‰์ด 10 % ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค.

@timstoop ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‹ ๊ฒฝ ์“ฐ๋Š” ๊ฐ„๊ฒฉ์€ ํฐ 30 ๋ถ„ ๋ฒ”์œ„๊ฐ€ ์•„๋‹Œ ๋งˆ์ดํฌ๋กœ ์ดˆ ์˜์—ญ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ CPU ์ œํ•œ์ด 50 ๋ฐ€๋ฆฌ ํ‘ธ์ด๊ณ  100 ๋งˆ์ดํฌ๋กœ ์ดˆ์˜ ๋ฒ”์œ„์—์„œ 50 ๋ฐ€๋ฆฌ ํ‘ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 30 ๋ถ„ ์œ ํœด ์‹œ๊ฐ„์— ๊ด€๊ณ„์—†์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ 50 ๋ฐ€๋ฆฌ ํ‘ธ๋Š” ๋งค์šฐ ์ž‘์€ CPU ์ œํ•œ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋‚ฎ์€ ์ œํ•œ์œผ๋กœ ๋‹จ์ผ HTTPS ์š”์ฒญ์„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๊ฑฐ์˜ ์ œํ•œ์„๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰์ค‘์ธ ๋…ธ๋“œ๋Š” ์˜ค๋ฒ„ ์ปค๋ฐ‹๋˜์ง€ ์•Š์œผ๋ฉฐ ํ‰๊ท  CPU ์‚ฌ์šฉ๋Ÿ‰์ด 10 % ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ์˜๋กœ๋“œ ๋ฐ ๊ธฐํƒ€ ์›Œํฌ๋กœ๋“œ๋Š” ์Šค๋กœํ‹€ ๋ง๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œํ•œ์€ ์ปจํ…Œ์ด๋„ˆ / cgroup์˜ ์ž์ฒด ์ œํ•œ๋งŒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

@PaulFurtado ๊ท€ํ•˜์˜ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ Pod ์ž์ฒด์˜ ํ‰๊ท  ์‚ฌ์šฉ๋Ÿ‰์€ ํ•ด๋‹น ์ ˆ์ „ ๋ชจ๋“œ์—์„œ 3m cpu์ด๋ฉฐ ์—ฌ์ „ํžˆ ์กฐ์ ˆ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ ์–ด๋–ค ์š”์ฒญ๋„ํ•˜์ง€ ์•Š๊ณ  ์ž ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 50m ์•ˆํƒ€๋„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์ฃ ? ์•„๋‹ˆ๋ฉด ์–ด์จŒ๋“  ์ž˜๋ชป๋œ ๊ฐ€์ •์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ •ํ™•์„ฑ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ •๋„๋กœ ๋‚ฎ์€ ์ˆ˜์น˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  50m๋Š” ๋„ˆ๋ฌด ๋‚ฎ์•„์„œ ์–ด๋–ค ๊ฒƒ์ด ๋“  ๋„˜์–ด ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Python์˜ ๋Ÿฐํƒ€์ž„์€ ์ž ์ž๋Š” ๋™์•ˆ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹  ๋ง์ด ๋งž์•˜์–ด์š”. ์‚ฌ์‹ค์ด ์•„๋‹Œ ๊ฐ€์ •์„ํ•˜๊ณ  ์žˆ์—ˆ์–ด์š”. ๊ท€ํ•˜์˜ ์•ˆ๋‚ด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์ง€๊ธˆ์€ ์ดํ•ด๊ฐ€๊ฐ‘๋‹ˆ๋‹ค.

์ปค๋„ ํŒจ์น˜๊ฐ€ 4.19 LTS ์ปค๋„์— ์ ์šฉ๋˜๊ณ  CoreOS / Flatcar์— ๋‚˜ํƒ€๋‚œ ์ดํ›„๋กœ ์—ฌ๊ธฐ์—์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ˆœ๊ฐ„, ๋‚ด๊ฐ€ ์ œํ•œ๋˜๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๋‚ด๊ฐ€ ํ•œ๊ณ„๋ฅผ ์˜ฌ๋ ค์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :๋ฏธ์†Œ:

@sfudeus @chiluk ์ปค๋„์—์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

kope.io/k8s-1.15-debian-stretch-amd64-hvm-ebs-2020-01-17 (ํ˜„์žฌ ๊ณต์‹ kops ์ด๋ฏธ์ง€)์ด ํŒจ์น˜๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@mariusgrigoriu์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ •์  cpu ์ •์ฑ…์— ๋”ฐ๋ผ ๋…์  cpuset์—์„œ ์‹คํ–‰๋˜๋Š” ํฌ๋“œ์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ cpu ํ• ๋‹น๋Ÿ‰ ์ œํ•œ์„ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋…์  cpu ์„ธํŠธ์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ํŒจ์น˜๋Š” ์ด๋Ÿฌํ•œ ๋ชฉ์ ์„์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ํฌ๋“œ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

@Nuru ๋‚˜๋Š” https://github.com/indeedeng/fibtest๋ฅผ ์ผ๋‹ค.
๋‹น์‹ ์ด ์–ป์„ ์ˆ˜์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ์ •์ ์ด์ง€๋งŒ C ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ๋œ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๋˜ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๋Œ€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์‹คํ–‰์— ์‚ฌ์šฉ ๋œ ์‹œ๊ฐ„์— ์ดˆ์ ์„ ๋งž ์ถฅ๋‹ˆ ๋‹ค.

ํŒจ์น˜ ๋œ ์ปค๋„์„ ํ™•์ธํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์€ @chiluk ์˜ ๋งˆ์ง€๋ง‰ ์Šฌ๋ผ์ด๋“œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค (์ด btw์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค) ํ† ํฌ https://www.youtube.com/watch?v=UE7QX98-kO0

์ปค๋„ 4.15.0-67์— ํŒจ์น˜ (https://launchpad.net/ubuntu/+source/linux/4.15.0-67.76)๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์š”์ฒญ / ์ œํ•œ์ด ํ›จ์”ฌ ๋†’์€ ์ผ๋ถ€ ํฌ๋“œ์—์„œ ์—ฌ์ „ํžˆ ์Šค๋กœํ‹€ ๋ง์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋Ÿ‰.
์š”์ฒญ์ด 250m๋กœ ์„ค์ •๋˜๊ณ  500m๋กœ ์ œํ•œ๋˜๋Š” ์•ฝ 50ms ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. CPU ๊ธฐ๊ฐ„์˜ ์•ฝ 50 %๊ฐ€ ์กฐ์ ˆ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.์ด ๊ฐ’์€ ์˜ˆ์ƒ ํ•  ์ˆ˜์žˆ์„๋งŒํผ ๋‚ฎ๊ณ  ์ˆ˜์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ 0์œผ๋กœ ๋‚ฎ์ถ”๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋Ÿ‰์ด ํ•œ๋„์— ๊ฐ€๊นŒ์›Œ์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ „ํ˜€ ์ œํ•œํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

ํŒจ์น˜ ๋œ ์ƒˆ ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—ฌ์ „ํžˆ ์•ฝ๊ฐ„์˜ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@ vgarcia-te ํŒจ์น˜ ๋œ ๋ชฉ๋ก๊ณผ ํŒจ์น˜๋˜์ง€ ์•Š์€ ๋ชฉ๋ก์—์„œ ์•Œ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ปค๋„์ด ์ˆœํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์ปค๋ฐ‹์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ์ˆ˜๋ฐฑ. Ubuntu์˜ ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ์ฝ์€ ๊ฒฐ๊ณผ 4.15๊ฐ€ ์•„์ง ํŒจ์น˜๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ (Azure์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ mabye ์ œ์™ธ) ์—ฐ๊ฒฐ ํ•œ ํŒจ์น˜๊ฐ€ ๊ฑฐ๋ถ€ ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” 4.9 ์‹œ๋ฆฌ์ฆˆ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” kops ์ด ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋“ค์ด ์ˆ˜์ • ๋œ AMI๋ฅผ ์–ธ์ œ ์ถœ์‹œํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ•œํŽธ, ๋‚˜์—๊ฒŒ ๊ฝค ์ข‹์€ @bobrik ์˜ ํ…Œ์ŠคํŠธ ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

wget https://gist.githubusercontent.com/bobrik/2030ff040fad360327a5fab7a09c4ff1/raw/9dcf83b821812064fa7fb056b8f22cbd5c4364f1/cfs.go

sudo docker run --rm -it --cpu-quota 20000 --cpu-period 100000 -v $(pwd):$(pwd) -w $(pwd) golang:1.9.2 go run cfs.go -iterations 15 -sleep 1000ms

์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” CFS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ ˆ์ฝ”๋”ฉ ์‹œ๊ฐ„์€ ํ•ญ์ƒ 5ms์ž…๋‹ˆ๋‹ค. ์œ„์˜ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•œ ์˜ํ–ฅ์„๋ฐ›๋Š” ์ปค๋„๋กœ 99ms์˜ ๋ ˆ์ฝ”๋”ฉ ์‹œ๊ฐ„์„ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 6ms๊ฐ€ ๋„˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

@nuru ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ฐพ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@justinsb ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋Š” ํŒจ์น˜๊ฐ€ ์—†๊ฑฐ๋‚˜ KOPS ๊ฒฝ์šฐ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค
https://github.com/kubernetes/kops/blob/master/channels/stable

๋ฐœํ–‰ ๋œ ๋ฌธ์ œ : https://github.com/kubernetes/kops/issues/8954

https://github.com/kubernetes/kubernetes/issues/67577#issuecomment -617586330

์—…๋ฐ์ดํŠธ : kops 1.15 ์ด๋ฏธ์ง€์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/kubernetes/kops/issues/8954#issuecomment -617673755

๋ˆ„๋ฃจ

2020/04/22 11:02:48 [0] burn took 5ms, real time so far: 5ms, cpu time so far: 6ms
2020/04/22 11:02:49 [1] burn took 5ms, real time so far: 1012ms, cpu time so far: 12ms
2020/04/22 11:02:50 [2] burn took 5ms, real time so far: 2017ms, cpu time so far: 18ms
2020/04/22 11:02:51 [3] burn took 5ms, real time so far: 3023ms, cpu time so far: 23ms
2020/04/22 11:02:52 [4] burn took 5ms, real time so far: 4028ms, cpu time so far: 29ms
2020/04/22 11:02:53 [5] burn took 5ms, real time so far: 5033ms, cpu time so far: 35ms
2020/04/22 11:02:54 [6] burn took 5ms, real time so far: 6038ms, cpu time so far: 40ms
2020/04/22 11:02:55 [7] burn took 5ms, real time so far: 7043ms, cpu time so far: 46ms
2020/04/22 11:02:56 [8] burn took 5ms, real time so far: 8049ms, cpu time so far: 51ms
2020/04/22 11:02:57 [9] burn took 5ms, real time so far: 9054ms, cpu time so far: 57ms
2020/04/22 11:02:58 [10] burn took 5ms, real time so far: 10059ms, cpu time so far: 63ms
2020/04/22 11:02:59 [11] burn took 5ms, real time so far: 11064ms, cpu time so far: 69ms
2020/04/22 11:03:00 [12] burn took 5ms, real time so far: 12069ms, cpu time so far: 74ms
2020/04/22 11:03:01 [13] burn took 5ms, real time so far: 13074ms, cpu time so far: 80ms
2020/04/22 11:03:02 [14] burn took 5ms, real time so far: 14079ms, cpu time so far: 85ms

๊ทธ ๊ฒฐ๊ณผ๋Š”

Linux <servername> 4.15.0-96-generic #97-Ubuntu SMP Wed Apr 1 03:25:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

์šฐ๋ถ„ํˆฌ 18.04์˜ ๊ธฐ๋ณธ ์ตœ์‹  ์•ˆ์ • ์šฐ๋ถ„ํˆฌ ์ปค๋„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํŒจ์น˜ ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@zerkms Ubuntu 18.04์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋””์—์„œ ์‹คํ–‰ ํ–ˆ์Šต๋‹ˆ๊นŒ? ํŒจ์น˜๊ฐ€ Azure ์šฉ ์ปค๋„๋กœ๋งŒ ๋งŒ๋“  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Ubuntu linux ํŒจํ‚ค์ง€์— ์ ์šฉ๋œ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉด ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค. ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ํ…Œ์ŠคํŠธ๋Š” CoreOS์—์„œ๋„ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ CFS ์Šค์ผ€์ค„๋ง์ด ์ „์—ญ ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๋ฃจ

Ubuntu 18.04์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋””์—์„œ ์‹คํ–‰ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜.

๋‚˜๋Š” ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์•˜๊ณ , ๋ฌด์—‡์„ ์ฐพ์•„์•ผํ• ์ง€์กฐ์ฐจ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ์ปค๋„์ž…๋‹ˆ๋‹ค. ๐Ÿคท

ํŒจ์น˜๋Š” ์šฐ๋ถ„ํˆฌ ์Šค ์ปค๋„ git์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
https://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/commit/?id=aadd794e744086fb50cdc752d54044fbc14d4adb

์—ฌ๊ธฐ์— ๊ทธ๊ฒƒ์— ๊ด€ํ•œ ์šฐ๋ถ„ํˆฌ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1832151

๋ฐ”์ด์˜ค๋‹‰์—์„œ ๋ฐฉ์ถœ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
apt-get source linux ํ•˜์—ฌ ํ™•์ธํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฒดํฌ์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@zerkms "์–ด๋””์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ ํ–ˆ์Šต๋‹ˆ๊นŒ?"๋ผ๋Š” ๋ง์€ ์‚ฌ๋ฌด์‹ค์˜ ์„œ๋ฒ„์˜€์Šต๋‹ˆ๊นŒ? GCP, AWS, Azure ๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ์˜ ์„œ๋ฒ„

๋ถ„๋ช…ํžˆ Ubuntu๊ฐ€ ๋ฐฐํฌ๋˜๊ณ  ์œ ์ง€๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ uname -a ์ถœ๋ ฅ๋„ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. Ubuntu ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

18.04.4๋Š” 18.04.3์˜ v5.0 ๊ธฐ๋ฐ˜ ์ปค๋„์—์„œ ์—…๋ฐ์ดํŠธ ๋œ v5.3 ๊ธฐ๋ฐ˜ Linux ์ปค๋„๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ 18.04.4๊ฐ€ 2020 ๋…„ 2 ์›” 12 ์ผ์— ์ถœ์‹œ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์— ๋”ฐ๋ฅด๋ฉด 2020 ๋…„ 4 ์›” 1 ์ผ ์ปดํŒŒ์ผ ๋œ v4.15 ์ปค๋„์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@juliantaylor ์ €๋Š” Ubuntu ์„œ๋ฒ„ ๋‚˜ Git ์ €์žฅ์†Œ์˜ ๋ณต์‚ฌ๋ณธ์ด ์—†์œผ๋ฉฐ aadd794e7440 ๊ณผ ๊ฐ™์€ ํŠน์ • ์ปค๋ฐ‹์ด ๊ฒŒ์‹œ ๋œ ์•ˆ์ •์ ์ธ ์ปค๋„๋กœ ๋งŒ๋“  ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Ÿฐ์น˜ ํŒจ๋“œ ๋ฒ„๊ทธ ๋Œ“๊ธ€์„ ๋ณด๋ฉด

  • ์ด ๋ฒ„๊ทธ๋Š” linux-azure-5.0.0-1027.29 ํŒจํ‚ค์ง€์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ฒ„๊ทธ๋Š” linux-azure-5.0.0-1027.29 ~ 18.04.1 ํŒจํ‚ค์ง€์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜์ด ํŠน์ • ํŒจ์น˜ ( sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices )๋Š” ์•„๋ž˜์— ๋‚˜์—ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ด ๋ฒ„๊ทธ๋Š” linux-4.15.0-69.78 ํŒจํ‚ค์ง€์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Ubuntu 18.04.4 ์ถœ์‹œ ๋…ธํŠธ ์— '1832151'์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ „ ์˜๊ฒฌ ์€ 4.15.0-67.76์—์„œ ํŒจ์น˜๋˜์—ˆ๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ linux-image-4.15.0-67-generic ํŒจํ‚ค์ง€๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์šฐ๋ถ„ํˆฌ์˜ ์ „๋ฌธ๊ฐ€์™€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€๊ณ ์ด ํŒจ์น˜ ์ถ”์ ์ด ์šฉ๋‚ฉ ํ•  ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด ํŒจ์น˜๊ฐ€ ์‹ค์ œ๋กœ 18.04์˜ ํ˜„์žฌ ๋ฒ„์ „ ์ธ Ubuntu 18.04.4์— ํฌํ•จ๋˜์—ˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๋ฅผ ์ด์ œ ์ดํ•ดํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚ด _ ์ตœ๊ณ ์˜ ์ถ”์ธก _์€ 18.04.4๊ฐ€ ์ถœ์‹œ ๋œ ํ›„ ์ปค๋„ ์—…๋ฐ์ดํŠธ๋กœ ์ถœ์‹œ๋˜์—ˆ์œผ๋ฉฐ Ubuntu ์ปค๋„์ด 4.15.0-69 ์ด์ƒ์„๋ณด๊ณ ํ•˜๋Š” ๊ฒฝ์šฐ ํฌํ•จ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ 18.04.4๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ํŒจ์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฒ ์–ด ๋ฉ”ํƒˆ ์„œ๋ฒ„์—์„œ ์ปค๋„ 4.15.0-72 ์—์„œ Go ํ…Œ์ŠคํŠธ (๋งค์šฐ ์œ ์šฉํ•จ)๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ํŒจ์น˜๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2020/04/22 21:24:27 [0] burn took 5ms, real time so far: 5ms, cpu time so far: 7ms
2020/04/22 21:24:28 [1] burn took 5ms, real time so far: 1010ms, cpu time so far: 13ms
2020/04/22 21:24:29 [2] burn took 5ms, real time so far: 2015ms, cpu time so far: 20ms
2020/04/22 21:24:30 [3] burn took 5ms, real time so far: 3020ms, cpu time so far: 25ms
2020/04/22 21:24:31 [4] burn took 5ms, real time so far: 4025ms, cpu time so far: 32ms
2020/04/22 21:24:32 [5] burn took 5ms, real time so far: 5030ms, cpu time so far: 38ms
2020/04/22 21:24:33 [6] burn took 5ms, real time so far: 6036ms, cpu time so far: 43ms
2020/04/22 21:24:34 [7] burn took 5ms, real time so far: 7041ms, cpu time so far: 50ms
2020/04/22 21:24:35 [8] burn took 5ms, real time so far: 8046ms, cpu time so far: 56ms
2020/04/22 21:24:36 [9] burn took 5ms, real time so far: 9051ms, cpu time so far: 63ms
2020/04/22 21:24:37 [10] burn took 5ms, real time so far: 10056ms, cpu time so far: 68ms
2020/04/22 21:24:38 [11] burn took 5ms, real time so far: 11061ms, cpu time so far: 75ms
2020/04/22 21:24:39 [12] burn took 5ms, real time so far: 12067ms, cpu time so far: 81ms
2020/04/22 21:24:40 [13] burn took 5ms, real time so far: 13072ms, cpu time so far: 86ms
2020/04/22 21:24:41 [14] burn took 5ms, real time so far: 14077ms, cpu time so far: 94ms

๋™์ผํ•œ ์œ ํ˜•์˜ ์„œ๋ฒ„์—์„œ ์ปค๋„ 4.9.164 ์—์„œ ๋™์ผํ•œ ์‹คํ–‰์ด 5ms์— ๊ฑธ์ณ ๋ฒˆ์ง์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

2020/04/22 21:24:41 [0] burn took 97ms, real time so far: 97ms, cpu time so far: 8ms
2020/04/22 21:24:42 [1] burn took 5ms, real time so far: 1102ms, cpu time so far: 12ms
2020/04/22 21:24:43 [2] burn took 5ms, real time so far: 2107ms, cpu time so far: 16ms
2020/04/22 21:24:44 [3] burn took 5ms, real time so far: 3112ms, cpu time so far: 24ms
2020/04/22 21:24:45 [4] burn took 83ms, real time so far: 4197ms, cpu time so far: 28ms
2020/04/22 21:24:46 [5] burn took 5ms, real time so far: 5202ms, cpu time so far: 32ms
2020/04/22 21:24:47 [6] burn took 94ms, real time so far: 6297ms, cpu time so far: 36ms
2020/04/22 21:24:48 [7] burn took 99ms, real time so far: 7397ms, cpu time so far: 40ms
2020/04/22 21:24:49 [8] burn took 100ms, real time so far: 8497ms, cpu time so far: 44ms
2020/04/22 21:24:50 [9] burn took 5ms, real time so far: 9503ms, cpu time so far: 52ms
2020/04/22 21:24:51 [10] burn took 5ms, real time so far: 10508ms, cpu time so far: 60ms
2020/04/22 21:24:52 [11] burn took 5ms, real time so far: 11602ms, cpu time so far: 64ms
2020/04/22 21:24:53 [12] burn took 5ms, real time so far: 12607ms, cpu time so far: 72ms
2020/04/22 21:24:54 [13] burn took 5ms, real time so far: 13702ms, cpu time so far: 76ms
2020/04/22 21:24:55 [14] burn took 5ms, real time so far: 14707ms, cpu time so far: 80ms

๊ทธ๋ž˜์„œ ๋‚ด ๋ฌธ์ œ๋Š” ์ปค๋„์ด ํŒจ์น˜ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์—ฌ์ „ํžˆ CPU ์Šค๋กœํ‹€ ๋ง์ด ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Nuru ๋งž์•„, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ๋ฌด์‹ค์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฒ ์–ด ๋ฉ”ํƒˆ ์„œ๋ฒ„์˜€์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ 18.04.4๊ฐ€ 2020 ๋…„ 2 ์›” 12 ์ผ์— ์ถœ์‹œ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์— ๋”ฐ๋ฅด๋ฉด 2020 ๋…„ 4 ์›” 1 ์ผ ์ปดํŒŒ์ผ ๋œ v4.15 ์ปค๋„์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์„œ๋ฒ„ LTS์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด HWE๋ฅผ ๋ช…์‹œ ์ ์œผ๋กœ ์˜ตํŠธ ์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ”์ธ ๋ผ์ธ ๋งŒ ์‹คํ–‰ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฉ”์ธ ๋ผ์ธ ์ปค๋„๊ณผ HWE ์ปค๋„ ๋ชจ๋‘ ์ •๊ธฐ์ ์œผ๋กœ ๋ฆด๋ฆฌ์Šค๋˜๋ฏ€๋กœ ์ตœ๊ทผ์— ๋นŒ๋“œ ๋œ ์ปค๋„์ด ์žˆ๋‹ค๊ณ  ์˜์‹ฌ๋˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. http://changelogs.ubuntu.com/changelogs/pool/main/l/linux-meta/linux-meta_4.15.0.96.87/ ๋ณ€๊ฒฝ ๋กœ๊ทธ

@zerkms ์ •๋ณด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์ง€๋งŒ ์ด๊ณณ์€ ๋‚˜๋ฅผ ๊ต์œก ํ•  ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@ vgarcia-te ์ปค๋„์ด ํŒจ์น˜ ๋œ ๊ฒƒ ๊ฐ™์œผ๋ฉด์ด ๋ฒ„๊ทธ๋กœ ์ธํ•œ ์ œํ•œ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ๋•Œ ์šฉ์–ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ์ด 250m๋กœ ์„ค์ •๋˜๊ณ  500m๋กœ ์ œํ•œ๋˜๋Š” ์•ฝ 50ms ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. CPU ๊ธฐ๊ฐ„์˜ ์•ฝ 50 %๊ฐ€ ์กฐ์ ˆ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.์ด ๊ฐ’์€ ์˜ˆ์ƒ ํ•  ์ˆ˜์žˆ์„๋งŒํผ ๋‚ฎ๊ณ  ์ˆ˜์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Kubernetes CPU ๋ฆฌ์†Œ์Šค๋Š” CPU ๋‹จ์œ„๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค. 1์€ ์ „์ฒด CPU 1 ๊ฐœ์˜ 100 %๋ฅผ ์˜๋ฏธํ•˜๊ณ  1m์€ 1 CPU์˜ 0.1 %๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "500m"์˜ ์ œํ•œ์€ 0.5 CPU๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

CFS์˜ ๊ธฐ๋ณธ ์˜ˆ์•ฝ ๊ธฐ๊ฐ„์€ 100ms์ด๋ฏ€๋กœ ์ œํ•œ์„ CPU 0.5 ๊ฐœ๋กœ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ 100ms๋งˆ๋‹ค 50ms์˜ CPU๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€์ด๋ฅผ ์ดˆ๊ณผํ•˜๋ ค๊ณ ํ•˜๋ฉด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ ํŒจ์Šค์—์„œ 50ms ์ด์ƒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ œํ•œ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Nuru ๊ทธ๊ฒŒ ๋ง์ด ๋˜๊ฒ ์ง€๋งŒ, ๊ธฐ๋ณธ CPU ๊ธฐ๊ฐ„์ด 100ms๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค์— 1 ๊ฐœ์˜ CPU๊ฐ€ ํ• ๋‹น ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ผ ํŒจ์Šค์—์„œ 100ms ์ด์ƒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์Šค๋กœํ‹€ ๋ง๋ฉ๋‹ˆ๊นŒ?
์ด๊ฒƒ์€ ๊ธฐ๋ณธ CPU ๊ธฐ๊ฐ„์ด 100ms ์ธ Linux์—์„œ ๋‹จ์ผ ํŒจ์Šค์—์„œ 100ms ์ด์ƒ ์‹คํ–‰๋˜๋Š” ์ œํ•œ์ด์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค๋กœํ‹€๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

๋‹จ์ผ ํŒจ์Šค์—์„œ 100ms ์ด์ƒ ๊ฑธ๋ฆฌ์ง€ ๋งŒ ๋‚˜๋จธ์ง€ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ํœด ์ƒํƒœ ์ธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ข‹์€ ์ œํ•œ ๊ตฌ์„ฑ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ vgarcia-te๊ฐ€ ๋ฌผ์—ˆ๋‹ค

๊ธฐ๋ณธ CPU ๊ธฐ๊ฐ„์ด 100ms๋ผ๊ณ  ๊ฐ€์ • ํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค์— 1 ๊ฐœ์˜ CPU๊ฐ€ ํ• ๋‹น ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ผ ํŒจ์Šค์—์„œ 100ms ์ด์ƒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์ œํ•œ๋ฉ๋‹ˆ๊นŒ?

๋ฌผ๋ก  ์ผ์ •์€ ์—„์ฒญ๋‚˜๊ฒŒ ๋ณต์žกํ•ด์„œ ์™„๋ฒฝํ•œ ๋‹ต์„ ๋“œ๋ฆด ์ˆ˜๋Š” ์—†์ง€๋งŒ ๊ฐ„๋‹จํ•œ ๋‹ต์€ ์•„๋‹ˆ์˜ค์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ์„ค๋ช…์€ ์—ฌ๊ธฐ ์™€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค .

๋ชจ๋“  ์œ ๋‹‰์Šค ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ๊ฐ„ ์กฐ๊ฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ์„ ์  ํ˜• ์Šค์ผ€์ค„๋ง์˜ ์ ์šฉ์„๋ฐ›์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ์ฝ”์–ด ๋‹จ์ผ CPU ์‹œ์ ˆ์—๋Š” ์—ฌ์ „ํžˆ 30 ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ "๋™์‹œ์—"์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ์–ด๋‚˜๋Š” ์ผ์€ ๊ทธ๋“ค์ด ์ž ์‹œ ๋›ฐ๊ณ  ์ž ์„ ์ž๊ฑฐ๋‚˜ ์‹œ๊ฐ„ ์กฐ๊ฐ์ด ๋๋‚  ๋•Œ ๋‹ค๋ฅธ ๊ฒƒ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ• ๋‹น๋Ÿ‰์ด์žˆ๋Š” CFS๋Š”์ด๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „์‹œํ‚ต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์˜ 50 %๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๋งํ•  ๋•Œ ์‹ค์ œ๋กœ ๋ฌด์Šจ ๋ง์„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? 5 ๋ถ„ ๋™์•ˆ CPU๋ฅผ 100 % ์žก์•„ ๋จน๊ณ  ๋‹ค์Œ 5 ๋ถ„ ๋™์•ˆ ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํ•œ ๊ดœ์ฐฎ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๊นŒ? ์ด๋Š” 10 ๋ถ„ ๋™์•ˆ 50 % ์‚ฌ์šฉ๋Ÿ‰์ด์ง€๋งŒ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ CFS๋Š” ํ• ๋‹น๋Ÿ‰์„ ์ ์šฉํ•˜๋Š” ๊ธฐ๊ฐ„ ์ธ "CPU ๊ธฐ๊ฐ„"์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”์–ด๊ฐ€ 4 ๊ฐœ์ด๊ณ  CPU์ฃผ๊ธฐ๊ฐ€ 100ms ์ธ ์‹œ์Šคํ…œ์—์„œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์‹ค์ œ (๋ฒฝ์‹œ๊ณ„) ์‹œ๊ฐ„์„ 100ms ์ด์ƒ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด 400ms์˜ CPU ์‹œ๊ฐ„์„๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ณ‘๋ ฌํ™” ํ•  ์ˆ˜์—†๋Š” ๋‹จ์ผ ์‹คํ–‰ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” ๊ธฐ๊ฐ„ ๋‹น ์ตœ๋Œ€ 100ms์˜ CPU ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” CPU 1 ๊ฐœ์˜ 100 %์ž…๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์„ 1 CPU๋กœ ์„ค์ •ํ•˜๋ฉด ์ œํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ• ๋‹น๋Ÿ‰์„ 500m (0.5 CPU)๋กœ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ 100ms๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” ๋ฐ 50ms๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. 100ms ๊ธฐ๊ฐ„์€ 50ms ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ œํ•œ๋˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. Ayn 100ms ๊ธฐ๊ฐ„์€ 50ms๋ฅผ ์‹คํ–‰ ํ•œ ํ›„์—๋„ ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ค์Œ 100ms ๊ธฐ๊ฐ„๊นŒ์ง€ ์Šค๋กœํ‹€๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ง€์—ฐ ์‹œ๊ฐ„ (์‹คํ–‰ํ•  ์ˆ˜์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ์‹œ๊ฐ„)๊ณผ ํ˜ธ๊น… (๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ—ˆ์šฉ๋˜๋Š” ์‹œ๊ฐ„) ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

@Nuru ๋‚ด ์Šฌ๋ผ์ด๋“œ๊ฐ€ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ถ„ํˆฌ ๊ฐœ๋ฐœ์ž์ด๊ธฐ๋„ํ•˜๋‹ค * (์ง€๊ธˆ์€ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์—๋งŒ). ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์†Œ์Šค๋ฅผ ์ฝ๊ณ  git blame + tag --contains๋ฅผ ํ™•์ธํ•˜์—ฌ ํŒจ์น˜๊ฐ€ ๊ด€์‹ฌ์žˆ๋Š” ์ปค๋„ ๋ฒ„์ „์— ๋„๋‹ฌํ•˜๋Š”์‹œ๊ธฐ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@chiluk ๋‚˜๋Š” ๋‹น์‹ ์˜ ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๋ณธ ์ ์ด์—†๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด, ํŒจ์น˜๊ฐ€ ์–ผ๋งˆ ์ „์— ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ณณ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Ubuntu 4.15.0-67 ์ด์ƒ
  • Ubuntu 5.3.0-24 +
  • RHEL7 ์ปค๋„ 3.10.0-1062.8.1.el7
    ๋ฌผ๋ก  Linux stable v4.14.154, v4.19.84, 5.3.9. Linux ์•ˆ์ •์ ์ธ 5.4-rc1์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ๊ฑฐ์‹œ ์„ค์น˜์—์„œ ๋‹ค์–‘ํ•œ ์ปค๋„์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ CFS ์Šค์ผ€์ค„๋Ÿฌ ๋ฒ„๊ทธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์†Œ๊ทœ๋ชจ AWS ์„œ๋ฒ„์—์„œ ์ž‘๋™ํ•˜๋Š” ์•ˆ์ •์ ์ด๊ณ  ํ•ด์„ํ•˜๊ธฐ ์‰ฌ์šด ํ…Œ์ŠคํŠธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์—ฌ์ „ํžˆ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž„ ๋ผ์ธ์„ ์ดํ•ดํ–ˆ๋“ฏ์ด 2014 ๋…„ Linux ์ปค๋„ v3.16-rc1์— ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • [51f2176d74ac](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=51f2176d74ac) sched/fair: Fix unlocked reads of some cfs_b->quota/period

์ด๋กœ ์ธํ•ด ๋‹ค์–‘ํ•œ CFS ์กฐ์ ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. kops Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋Š” 4.9 ์ปค๋„์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฒ„๊ทธ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

51f2176d74ac ๋Š” 2018 ์ปค๋„ v4.18-rc4์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • [512ac999](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=512ac999d2755d2b7109e996a76b6fb8b888631d) sched/fair: Fix bandwidth timer clock drift condition

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ @chiluk ๋ฒ„๊ทธ๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • [de53fd7ae](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=de53fd7aedb100f03e5d2231cfce0e4993282425) sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices

๋ฌผ๋ก  ์ปค๋„ ํŒจ์น˜๊ฐ€ ๋ฐฐํฌํŒ ์ „์ฒด์—์„œ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์€ Chiluk ๋˜๋Š” ๋‹ค๋ฅธ ํ•œ ์‚ฌ๋žŒ์˜ ์ž˜๋ชป์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์—ฌ์ „ํžˆ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Debuan buster 10 (AWS AMI debian-10-amd64-20191113-76 )์—์„œ ์ปค๋„ ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

Linux ip-172-31-41-138 4.19.0-6-cloud-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux

๋‚ด๊ฐ€ ์•Œ ์ˆ˜์žˆ๋Š” ํ•œ,์ด ์ปค๋„์—๋Š” 51f2176d74ac ์ด ์žˆ์–ด์•ผํ•˜๊ณ  512ac999 ๊ฐ€ ์—†์–ด์•ผํ•˜๋ฏ€๋กœ 512ac999 ์„ค๋ช… ๋œ ํ…Œ์ŠคํŠธ์— ์‹คํŒจํ•ด์•ผํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋ฆฌ๋ˆ…์Šค ์ปค๋„ 4.10์—์„œ ์ ์ง„์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ๊ณ  ๋ณ€๊ฒฝ ๋กœ๊ทธ์— ํ•ด๋‹น ํŒจ์น˜์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— 512ac999 ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ 4 cpu AWS VM์—์„œ๋Š” ์‹คํŒจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Chiluk์˜ fibtest ๋˜๋Š” Bobrik์˜ CFS ๋”ธ๊พน์งˆ ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‚˜๋Š” Chiluk์˜ ํŒจ์น˜๋ฅผ ๋ฐ›๊ธฐ ์ „์— CoreOS์—์„œ ์Šค์ผ€์ค„๋ง ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ œ ์ƒ๊ฐ์€ Bobrik์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์ฃผ๋กœ 51f2176d74ac ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์ด๊ณ , ์ œ๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ Debian buster 10 AMI _does_๋Š” 512ac999 ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ณ€๊ฒฝ ๋กœ๊ทธ์—์„œ ๋ช…์‹œ ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ fibtest ๋Š” ์ฝ”์–ด๊ฐ€ ๋ช‡ ๊ฐœ์ธ ์ปดํ“จํ„ฐ์—์„œ ๋งค์šฐ ๋ฏผ๊ฐํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

4 ์ฝ”์–ด CPU๋Š” ์ˆ˜์ • ๋œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

chiluks kubecon talk (https://www.youtube.com/watch?v=UE7QX98-kO0)์˜ ์„ค๋ช…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด 40 cpus ์ด์ƒ์˜ ๋” ํฐ ์ปดํ“จํ„ฐ์—์„œ๋งŒ ์žฌํ˜„ ๊ฐ€๋Šฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฃผ๋ณ€์—๋Š” ๋งŽ์€ ์ปค๋„ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉฐ ๋งŽ์€ ํŒจ์น˜ ๋ฐ ํŒจ์น˜ ๋˜๋Œ๋ฆฌ๊ธฐ๊ฐ€ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๋กœ๊ทธ์™€ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ์ง€๊ธˆ๊นŒ์ง€๋งŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
์˜์‹ฌ์Šค๋Ÿฌ์šด ๊ฒฝ์šฐ ์œ ์ผํ•œ ์‹ ๋ขฐํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์—ฌ๊ธฐ์— ๋งํฌ ๋œ ํŒจ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

90 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle stale

/ remove-lifecycle stale

์ด ์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰ ํ•œ ํ…Œ์ŠคํŠธ๋Š” ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ (๋ช‡ ๋ฒˆ์˜ ๋ฒˆ์— 5ms ์ด์ƒ ๊ฑธ๋ฆฌ์ง€ ๋งŒ ๊ทธ์ค‘ 0.01 %์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค) ์šฐ๋ฆฌ์˜ cfs ์Šค๋กœํ‹€ ๋ง ๋ฉ”ํŠธ๋ฆญ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ ๋‹นํ•œ ์–‘์˜ ์Šค๋กœํ‹€ ๋ง์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์ „๋ฐ˜์— ๊ฑธ์ณ ์„œ๋กœ ๋‹ค๋ฅธ ์ปค๋„ ๋ฒ„์ „์ด ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Debian 4.19.67-2+deb10u2~bpo9+1 (2019-11-12)
  • 5.4.38 ์˜ ์ˆ˜๋™ ๋ฐฑ ํฌํŠธ

์ด ๋ฒ„์ „์—์„œ ๋‘ ๋ฒ„๊ทธ๊ฐ€ ๋ชจ๋‘ ์ˆ˜์ •๋˜์–ด์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ž˜์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์€์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. 16 ์ฝ”์–ด์™€ 36 ์ฝ”์–ด๊ฐ€์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ํ…Œ์ŠคํŠธ ์ค‘์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ์œ ํšจํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ์ฝ”์–ด๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ด๋Ÿฌํ•œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์Šค๋กœํ‹€ ๋ง์ด ์—ฌ์ „ํžˆ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ...

์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ๋ฌธ์ œ์— ์ง๋ฉด ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ์š”์ฒญํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ ์ŠคํŒธ์€ ๋Œ€ํ™”๋ฅผ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

^ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์ผ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

/๋‹ซ๊ธฐ

์œ„์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ. ํ•„์š”์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ํ˜ธ๋ฅผ์—ฌ์‹ญ์‹œ์˜ค.

@dims :์ด ๋ฌธ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/๋‹ซ๊ธฐ

์œ„์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ. ํ•„์š”์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ํ˜ธ๋ฅผ์—ฌ์‹ญ์‹œ์˜ค.

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes / test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์ด ์ด์Šˆ์— ๋Œ€ํ•œ ํ›„์† ์ด์Šˆ๋ฅผ ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ์ด์Šˆ๋ฅผ ๊ตฌ๋… ํ•œ ์‚ฌ๋žŒ๋“ค์ด ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ๊ตฌ๋… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
5 / 5 - 1 ๋“ฑ๊ธ‰