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