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 사용법