일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BastianHost
- 다이렉트 커넥트
- ec2
- s3 sync
- Route53 Endpoint
- SessionManager 터널링
- 도커
- push-gateway
- S3 Interface Endpoint
- VGW
- S3 PrivateLink
- DXGW
- bWAPP install
- x lock s lock
- node pod 분리
- 리눅스
- s3
- Terraform
- 마운트
- bWAPP M1
- sessionManager
- Route53 Resolver
- S3 private통신
- 푸시게이트웨이
- ix is lock
- CrossSiteScript
- bWAPP arm
- S3 Gateway Endpoint
- AWS Resolver
- DNS Resolver
- Today
- Total
이것이 점프 투 공작소
cgroup에 대해 알아보자 본문
cgroup이란?
리눅스에서 컨테이너를 구성하는 3가지 주요 기술 중 하나로,
프로세스들이 사용하는 시스템 자원의 사용정보를 수집 및 제한 시키는 커널의 기능입니다.
cgroup 사용 가능한 서브시스템
- CPU - 스케줄러를 이용해 cgroup에 속한 프로세스의 CPU 사용시간을 제어
- Memory - cgroup에 속한 프로세스의 메모리 사용량 제어
- freezer - cgroup의 작업을 일시 중지하거나 다시 시작
- blkio - cgroup에 블록 장치에 대한 I/O 제한을 설정
- net_cls - 트래픽 컨트롤러(tc)가 특정 cgroup 적업에서 발생하는 패킷을 식별하게 하는 네트워크 패킷 태그를 지정
- cpuset - 개별 CPU 메모리 노드를 cgroup에 할당
- cpuacct - cgoup이 사용한 CPU자원 보고서 생성
- devices - cgroup의 작업 단위로, 장치에 대한 엑세스를 허용하거나 거부
- ns - namespace 서브시스템
cgroup으로 cpu사용 제한하기
cgroup은 /sys/fs/cgroup폴더에 가상파일로 존재하고 있으며,
해당 파일들에 설정들을 변경해가면서 사용 가능합니다.
/sys/fs/cgroup/cpu 폴더에 들어가 cpu관련 cgroup설정을 변경 및 사용가능합니다.
/sys/fs/cgroup/cpu 내에 컨트롤 그룹 폴더를 만들고 해당 폴더에 들어가면
cgroup관련 각종 값들이 자동으로 만들어집니다.
(utils라는 이름으로 폴더를 만들었습니다.)
해당 컨트롤 그룹에 프로세스를 등록하려면 task파일에 프로세스ID를 등록하면 됩니다.
현재 프로세스를 tasks에 등록합니다.
cpu의 사용량을 10%로 제한하기 위해 2가지 설정값을 변경해야합니다.
cpu.cfs_period_us : CFS가 다음 작업을 수행하도록 하는 사이클시간, 기본값 100ms입니다.
cpu.cfs_quota_us : CPU를 사용할 수 있는 시간
CFS Quota
cpu.cfs_quota_us를 10ms으로 설정한다면 해당 cgroup은 10ms만큼 CPU를 사용 가능합니다.
하지만 cpu.cfs_quota_us를 통해 설정된 시간은 특정 주기로 복구됩니다. 이 때 특정 주기를 cpu.cfs_period_us 라고 합니다.
cpu.cfs_period_us : 100000us
cpu.cfs_quota_us : 10000us
상기 설정대로 두 값을 변경한다면 cgroup의 cpu사용시간이 100ms 주기로 초기화 되고,
cgroup은 100ms 동안 10ms 까지 CPU를 사용하게 됩니다
즉 0.1CPU를 사용하게 됩니다.
상기 두 설정을 100ms, 10ms으로 설정해주었습니다.
자식 컨트롤 그룹은 부모 컨트롤을 상속 받아가기에 해당 쉘에서 stress 명령어를 실행합니다
다른 터미널에서 확인해보면 10프로까지만 CPU를 사용하는것을 확인 할 수 있습니다.
추가로 cfs_quota_us 값을 변경하여 사용량을 동적으로 변경 할 수 있습니다.
감사합니다.
'리눅스' 카테고리의 다른 글
UFS와 Union Mount Filesystem에 대해 알아보자 (0) | 2023.02.04 |
---|---|
리눅스 NameSpace에 대해 알아보자 (0) | 2023.02.04 |
파일시스템 성능 지표에 대해 알아보자 (0) | 2022.12.31 |
OOM Killer와 oom_score에 대해 알아보자 (0) | 2022.12.23 |
CSF 스케줄러(공정 스케줄러)와 구성요소 (0) | 2022.12.21 |