Kubernetes CPU

์ž์› ์ข…๋ฅ˜

  • ์••์ถ• ๊ฐ€๋Šฅํ•œ ์ž์›
    • Throttlingํ•ด์•ผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
    • e.g. CPU
  • ์••์ถ• ๋ถˆ๊ฐ€๋Šฅํ•œ ์ž์›
    • eviction์„ ํ•ด์•ผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
    • e.g. ๋ฉ”๋ชจ๋ฆฌ / ์ €์žฅ์žฅ์น˜

Kubernetes CPU

  • CPU์™€ ๊ฐ™์ด ์••์ถ• ๊ฐ€๋Šฅํ•œ(compressible) ์ž์›์— ๋Œ€ํ•ด ์ œํ•œ๊ฐ’(limits)์„ ์„ค์ •ํ•˜๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํ•ด๋‹น ์ž์›์ด ์„ค์ •๋œ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์—ฌ ์†Œ๋น„๋˜์ง€ ์•Š๋„๋ก ์Šค๋กœํ‹€๋ง(throttling)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋ฐ˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์€ ์••์ถ• ๋ถˆ๊ฐ€๋Šฅํ•œ(incompressible) ์ž์›์˜ ์ œํ•œ๊ฐ’์„ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ž์›์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ์ž‘์—…์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ(eviction)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

CPU request

  • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ์ถฉ๋ถ„ํ•œ CPU ์‹œ๊ฐ„์ด ์—†์„ ๊ฒฝ์šฐ, CFS(Completely Fair Scheduler)๋Š” ๊ฐ CGroup์ด ๊ฐ€์ง„ share(์ง€๋ถ„)๋ฅผ ํ™•์ธํ•˜๊ณ , ์ „์ฒด ์ง€๋ถ„์˜ ํ•ฉ๋งŒํผ CPU๋ฅผ ๋ถ„ํ• ํ•œ ๋’ค ๊ฐ CGroup์˜ ์ง€๋ถ„ ๋น„์œจ๋Œ€๋กœ ๋‚˜๋ˆ„์–ด ํ• ๋‹นํ•œ๋‹ค.
  • ํŒŒ๋“œ์™€ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹จ์ง€ โ€œkubepodsโ€๋ผ๋Š” CGroup์— ํ• ๋‹น๋œ CPU ์‹œ๊ฐ„๋งŒ์„ ๋‚˜๋ˆ  ์“ธ ๋ฟ์ด๋‹ค.
    • Kubelet, ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„, ๋…ธ๋“œ์˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์ด CPU ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋ฉด ์–ธ์ œ๋“  ์šฐ์„ ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๊ฒŒ ๋œ๋‹ค.

CPU limit

  • CPU ์ œํ•œ(limit)์€ ๋…ธ๋“œ ์ „์ฒด์˜ ์ž์› ๊ณผ์ ์ด๋‚˜ ์‹œ๋„๋Ÿฌ์šด ์ด์›ƒ(noisy neighbor) ๋ฐฉ์ง€๊ฐ€ ์•„๋‹Œ, ๋‹จ์ง€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‚จ์€ CPU ์ž์›์„ ์ดˆ๊ณผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์“ฐ์ž„์ƒˆ

  • ๊ตฌ๊ธ€์€ ๊ฐœ๋ณ„ ์›Œํฌ๋กœ๋“œ์˜ ์„ฑ๋Šฅ ์ตœ๋Œ€ํ™”๋ณด๋‹ค ์›Œํฌ๋กœ๋“œ ๊ฐ„์˜ ์„ฑ๋Šฅ ์ผ๊ด€์„ฑ(consistency)์„ ๋” ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค.
    • ํ”„๋กœ๋•์…˜ ์›Œํฌ๋กœ๋“œ๋Š” ๋‚จ๋Š” CPU ์ž์›์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • CPU ์š”์ฒญ(request)์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ CPU ์ž์›์„ โ€œ๋นผ์•—์•„โ€ ์“ฐ๋Š” ์ผ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ๋งŒ์•ฝ CPU ์š”์ฒญ์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ž˜๋ชป ์„ค์ •ํ–ˆ๋‹ค๋ฉด, CPU ์ œํ•œ(limit)์ด ์ด๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ์ง€๋Š” ๋ชปํ•œ๋‹ค.
    • ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์กฐ์ง์€ ๊ตฌ๊ธ€์ด ์•„๋‹ˆ๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์†Œ ๋น„์šฉ์˜ ์ธํ”„๋ผ ์œ„์—์„œ ๊ฐ€๋Šฅํ•œ ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ์–ป๊ณ  ๋‹ค์šดํƒ€์ž„์„ ์ตœ์†Œํ™”ํ•˜๋ ค ํ•œ๋‹ค.
    • ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์ด ํ•˜๋‚˜์˜ ์ค‘์•™ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ž์›์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ฃน ์ˆ˜์ค€์—์„œ ์ผ์ •ํ•˜๊ณ  ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์ด ๋ณด์žฅ๋ผ์•ผ ํ•  ๊ฒฝ์šฐ์—๋Š” ์ด ๋ฐฉ๋ฒ•์ด ์œ ๋ฆฌ
  • ์Šคํ…Œ์ด์ง•(staging) ํ™˜๊ฒฝ์—์„œ CPU ์ œํ•œ์„ ์„ค์ •ํ•˜์—ฌ ์ตœ์•…์˜ ์ƒํ™ฉ(๋‚จ๋Š” ์ž์›์ด ์—†์„ ๋•Œ)์„ ์˜๋„์ ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์—ฌ๋ถ„์˜ CPU ์ž์›์„ ์ œ์™ธํ•œ ์‹ค์ œ ํ•œ๊ณ„๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

Reference