전공영역 공부 기록

쿠버네티스 cgroup과 request.cpu, limit.cpu 관계를 잘 설명한 글

악분 2025. 5. 31. 19:55
반응형

안녕하세요. 이 글은 빅토리아메트릭 기술블로그에서 좋은 글이 있어 소개드립니다. kubernetes의 request.cpu, limit.cpu를 설정이 리눅스 운영체제에서 어떻게 동작하는지 원리, 수식, 시각화 설명이 되어 있습니다.


이전 저의 블로그에도 다뤘지만 resource request/limit cpu는 코어를 사용하는게 아니라 cpu시간을 사용하겠다는 개념입니다.

 

cpu 경합이 발생할 때 request.cpu에 설정한 값을 보장해준다는 뜻입니다. cpu 경합이 없으면 설정한 값보다 더 사용할 수 있습니다.

 

출처: https://victoriametrics.com/blog/kubernetes-cpu-go-gomaxprocs/

 

 

limit.cpu는 cpu 시간 사용을 제한하는 설정입니다. limit.cpu 설정이 걸려있으면 작업이 리눅스 스케쥴시간(디폴트 100s)에 끝나지 않으면 cpu 쓰로틸링이 걸립니다.

출처: https://victoriametrics.com/blog/kubernetes-cpu-go-gomaxprocs/

 

 

cpu 쓰로틀링이 걸리면 cpu.pressure에 메트릭이 남습니다. 그리고 cAdvisor가 cpu.pressure 메트릭을 수집합니다. 아래 예시는 cpu 쓰로틸링이 없을때 cpu.pressure 메트릭은 0.00으로 보입니다.

cat cpu.pressure

 

cpu 쓰로틸링이 걸리면 아래처럼 cpu.pressure 메트릭 값이 0.00이 아닌 수치로 보입니다.

출처: https://victoriametrics.com/blog/kubernetes-cpu-go-gomaxprocs/

반응형