배운 내용/리눅스: 클라우드 환경 운영부터 성능분석까지

11월23일 - (실습) cgroup으로 Anti Virus 앱 CPU 사용량 제한하기

JooJY 2023. 11. 23. 13:17

시나리오

  • 새벽 2시에 주기적으로 데이터 베이스 서버 응답 성능이 크게 증가, 원인 분석 결과 Anti Virus 앱의 주기적인 수행 작업에 영향을 받은 것을 확인

실습 

  • stress tool로 cpu 로드를 생성 -> cpu 사용량 10% 제한

스트레스 툴 설치

sudo apt update
sudo apt install -y stress

cgroup 속성 변경

mkdir utils로 dir 새로 만들었는데 안에 내용이 있음.

컨트롤 제어에 필요한 cpu와 관련된 컨트롤 제어에 필요한 각종 값들이 세팅 되어 있다.

실제 파일은 아니고 pseudo 파일임.

이 값들을 조절하면서 테스트를 할 수 있다.

프로세스를 등록하기 위해 테스크에 값을 써주면 된다.

# root로 변경
sudo su
# cgroup 폴더로 이동 및 cpu 속성 
cd /sys/fs/cgroup/cpu
# 새로운 컨트롤 그룹 만들기
mkdir utils
# 오 신기하다. 방금 dir 새로 만들었는데 안에 내용이 있음.
cd utils
# tasks에 해당 프로세스를 넣음
echo $$ > tasks

현재 연결된 프로세스 아이디 확인

echo $$

cat tasks를 하면 아무것도 없음. 여기에 프로세스 아이디 넣기

echo $$ >> tasks

stresstool로 period, quota를 설정 

period는 기본적으로 100ms = 100000

quota는 10000(10ms)

이러면 10%가 설정됨.

 

period 값 확인

cat cpu.cfs_period_us

quota 세팅하기

echo 10000 > cpu.cfs_quota_us

다른 쉘로 이동하면 안된다.

자식 프로세스는 해당 컨트롤 그룹의 부모 컨트롤 그룹의 상속을 받아가기 때문에 해당 쉘에서 스트레스 명령을 실행해야 함.

스트레스 주기

위의 설정을 안하면 cpu 사용량이 100%로 나온다.

stress -c 1

top 명령어로 cpu 사용량을 살펴보면 10.0인 것을 볼 수 있다.

이 값은 동적으로 변경이 가능하다.

새 터미널 열어서 quota 값을 변경해보자.

cd /sys/fs/cgroup/cpu/utils/

10000으로 된 값을 5000으로 변경하자.

cpu 사용량을 5%로 제한하였다.

echo 5000 > cpu.cfs_quota_us

다시 이전 터미널에서 top을 살펴보자.

이전에 top을 실행한 터미널에서 다시 확인하면 5%로 나오는 것을 확인할 수 있다.

어떤 장애들로 인해서 CPU 사용량이 증가할 수 있는데 이렇게 구성에 따라 c 그룹을 이용해서 안전하게 제한을 걸 수 있다.