cgroup

markyang92·2022년 5월 24일
0

linux (ubuntu/debian)

목록 보기
34/37
  • cgroup: 프로세스들이 사용하는 시스템 자원의 사용정보를 수집 및 제한한다. Control Groups
    • 제한 가능 자원: CPU, Memory, Network, Device, Block I/O








oci runtime


cgroups

  • 사용 가능한 서브시스템
    • blkio, cpu, cpuacct, cpuset, devices, freezer, memory, net_cls, ns
  • cpu: 스케줄러를 이용해 해당 cgroup에 속한 프로세스 CPU 사용 시간 제어
    • e.g, 해당 그룹의 CPU 사용량 10%로 제한
  • memory: 해당 cgroup에 속한 프로세스의 메모리 사용량에 대한 제어
    • e.g., 해당 그룹의 메모리 사용량을 128MB로 제한 -> 128MB 초과 사용시? (oom_control)
  • freezer: cgroup의 작업을 일시 중지하거나 다시 시작
    • e.g., docker pause
  • blkio: cgorup에 블록 장치에 대한 입출력 제한 설정 (저장 공간 제한 개념 아님)
  • net_cls: 이 서브시스템은 Linux 트래픽 컨트롤러 (tc)가 특정 group 작업에서 발생하는 패킷을 식별하게 하는 classid를 사용하여 네트워크 패킷에 태그를 지정
  • cpuset: 개별 CPU 및 메모리 노드를 cgroup에 할당
  • cpuacct: cgroup이 사용한 CPU 자원에 대한 보고서를 생성
  • devices: cgroup의 작업 단위로 장치에 대한 액세스를 허용하거나 거부
  • ns: namespace 서브시스템

stress toolcpu load 증가시키기

  1. CPU stress 테스트 툴 설치
$ sudo apt install stress

  1. test용 cgroup 생성
$ sudo su
# cd /sys/fs/cgroup


cgroup 속성은 디렉토리 형태로 제공되어, echo로 속성 값 변경 가능

(/sys/fs/cgroup)       # cd cpu
(/sys/fs/cgroup)       # ls

(/sys/fs/cgroup)       # mkdir utils   <-- control group명 utils 생성
(/sys/fs/cgroup)       # cd utils
(/sys/fs/cgroup/utils) # ls

(/sys/fs/cgroup/utils) # echo $$  <-- 터미널의 프로세스 출력
5926
  • stress tool로, cpu load 생성 -> CPU 사용량 10%로 제한
    • cpu.cfs_period_us = 100000
    • cpu.cfs_quota_us = 10000
    • <----------> period (default: 100ms)
    • <--> quota


  • task 등록
(/sys/fs/cgroup/utils) # echo $$ > tasks
  • stress app 실행
    자식 프로세스는 해당 control group에 inherit되어 실행 되므로, 현재 쉘에서 실행해야함
(/sys/fs/cgroup/utils) # stress -c 1    <-- -c 1 은 코어 1개
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글