CPU ์Šค๋กœํ‹€๋ง (Throttling)

[์›๋ณธ ๋งํฌ]

์Šค๋กœํ‹€๋ง์€ CPU๊ฐ€ ์ง€๋‚˜์นœ ๊ณผ๋กœ๋กœ ๊ณผ์—ด๋ ๋•Œ ์†์ƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ์ „์••์„ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์Šค๋กœํ‹€๋ง์ด ๋ฐœ์ƒํ•˜๋ฉด ํ• ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.




๋ฐœ์ƒํ•˜๋Š” ์ด์œ 

ํ•˜๋“œ์›จ์–ด์ ์ธ ์ด์œ ์™€ ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์ด์œ ๊ฐ€ ์ „๋ถ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
๊ฒฐ๊ตญ ์˜จ๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด ๊บผ์ฃผ๋Š” ์†Œ๋ฐฉ์ˆ˜ ์—ญํ• ์ธ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, CPU ์„ฑ๋Šฅ ๋Œ€๋น„ ์ฟจ๋Ÿฌ๊ฐ€ ๋”ธ๋ฆฌ๋ฉด ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ณดํ†ต์€ ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์ด์œ ๊ฐ€ ๋งŽ๋‹ค.
๊ทธ๋ƒฅ ๋กœ์ง ์ž์ฒด๊ฐ€ ๊ตฌ๋ฆด ์ˆ˜๋„ ์žˆ๊ณ , GC ๊ฐ™์€ ๊ฒƒ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ณดํ†ต GC๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ํ”„๋กœ๊ทธ๋žจ์ผ์ˆ˜๋ก ๋ชฐ์•„์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๊ฐ€ ๋งŽ๊ณ , ์ด๋Š” CPU ์••๋ ฅ์œผ๋กœ ์ด์–ด์ง€๊ธฐ ์‰ฝ๋‹ค.




Docker & Kubernetes์—์„œ

Docker๋Š” cgroup์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์›์˜ ๋ถ„๋ฐฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

๊ทธ๋ž˜์„œ cgroup์— ๋Œ€ํ•ด์„œ ์–ด๋А์ •๋„ ์•Œ์•„์•ผ ๋Œ€์‘์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, cpu๋ฅผ 2๊ฐœ ํ• ๋‹นํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ง„์งœ ์ฝ”์–ด 2๊ฐœ๋ฅผ ํ• ๋‹นํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ cpu ์Šค์ผ€์ค„๋ง ์‹œ๊ฐ„ ๋™์•ˆ ๋ถ„๋ฐฐ๋ฅผ ํ•˜๋Š” ๋น„์œจ์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

docker ์ปจํ…Œ์ด๋„ˆ์— CPU limit์„ ๊ฑธ์–ด๋‘๋ฉด CPU throttling์ด ๊ฑธ๋ฆด ๋•Œ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์–ด์ฐจํ”ผ ์ง„์งœ CPU๊ฐ€ ๊บผ์ง€๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  ์ž์› ์ ์œ  ๋•Œ๋ฌธ์— ์กฐ๊ธˆ ๋ฐ€๋ฆฌ๋Š”๊ฒŒ ๋‹ค๋ผ์„œ, ๊ทน์‹ฌํ•˜๊ฒŒ ๊ฑธ๋ฆฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ๋ฌด์‹œํ•ด๋„ ๊ดœ์ฐฎ์„ ๋•Œ๊ฐ€ ๋งŽ๋‹ค.
๋ฌผ๋ก  ์•„๋‹ ์ˆ˜๋„ ์žˆ๊ณ , ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ธด ํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์• ์ดˆ์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” Pod์— CPU ์ œํ•œ์„ ๊ฑธ์ง€ ์•Š์„ ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.




๊ธฐํƒ€: API ์Šค๋กœํ‹€๋ง

์Šค๋กœํ‹€๋ง์ด๋ž€ ๋‹จ์–ด๋Š” CPU ์™ธ์—๋„ ์ธ์œ„์ ์ธ ์ œํ•œ์„ ๊ฑธ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, API ์Šค๋กœํ‹€๋ง์€ API ๋™์‹œ ์ตœ๋Œ€ ํ˜ธ์ถœ ์ˆ˜๋ฅผ ์ •ํ•ด๋†“๊ณ  ๊ทธ ์ด์ƒ์˜ ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด 429(Too Many Request)์˜ ์˜ค๋ฅ˜ ๋“ฑ์„ ๋˜์ง€๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.



์ฐธ์กฐ
https://medium.com/@ramandumcs/cpu-throttling-unbundled-eae883e7e494
https://home.robusta.dev/blog/stop-using-cpu-limits
https://github.com/robusta-dev/alert-explanations/wiki/CPUThrottlingHigh-(Prometheus-Alert)#why-cpu-throttling-can-occur-despite-low-cpu-usage-permalink