cgroup: cpu 서브시스템

cpu 서브시스템은 리눅스 커널에서 프로세스 그룹의 CPU 리소스를 효과적으로 제어하기 위한 기능이다. CPU 할당량 설정과 우선순위 조정을 통해 리소스 사용을 조절하고 프로세스 그룹 간의 스케줄링 시간 분배를 설정할 수 있다.

CPU 할당량 설정

프로세스 그룹에 할당되는 CPU 시간을 설정하여 리소스 사용량을 제한할 수 있다. 할당량은 백분율 단위로 표현되며, 아래 인터페이스를 사용하여 설정한다.

  • /sys/fs/cgroup/cpu/[cgroup_name]/cpu.cfs_quota_us:
    • 프로세스 그룹에 할당되는 CPU 시간의 한계를 마이크로초(µs) 단위로 설정
    • 예를 들어, 500000은 50%의 할당량을 의미
  • /sys/fs/cgroup/cpu/[cgroup_name]/cpu.cfs_period_us:
    • CPU 할당량을 사용할 수 있는 기간을 마이크로초(µs) 단위로 설정
    • 기본값은 100000 (100ms)

다음은 할당량 설정 예시이다.

$ echo 500000 > /sys/fs/cgroup/cpu/example_group/cpu.cfs_quota_us
$ echo 100000 > /sys/fs/cgroup/cpu/example_group/cpu.cfs_period_us

CPU 우선순위 설정

CPU 우선순위를 설정하면 프로세스 그룹에 대한 CPU 할당량을 조절할 수 있다. 우선순위는 정수값으로 표현되며, 높은 우선순위 값을 가진 그룹이 더 많은 CPU시간을 할당 받게된다. 설정는 아래 파일을 사용한다.

  • /sys/fs/cgroup/cpu/[cgroup_name]/cpu.shares:
    • 프로세스 그룹에 대한 CPU 우선순위를 설정
    • 기본적으로 모든 그룹에는 동일한 우선순위(1024)가 할당

다음은 우선순위 설정 예시이다.

$ echo 2048 > /sys/fs/cgroup/cpu/example_group/cpu.shares

CPU 사용량 확인

CPU 사용량은 cpuacct 서브시스템으로 확인 가능하므로, cpu 서브시스템 사용시 cpuacct도 같이 활성화 되도록 설정한다. CPU 사용량은 ‘cpuacct.usage’ 인터페이스를 통해 확인 할 수 있다. 단위는 밀리초(msec) 단위로 표시된다.

CPU 사용량 확인 예시이다.

$ cat /sys/fs/cgroup/cpu/example_group/cpuacct.usage

cgroups: 프로세스 그룹의 자원 관리
cgroup: cpu 서브시스템
cgroup: memory 서브시스템
cgroups: Memory Threshold Notifier 구현
cgruops v1 사용법

참고

답글 남기기