IMG-LOGO
공지사항 :

리눅스 CPU 사용률 제한

lmkfox - 2025-01-12 06:51:18 147 Views 0 Comment

리눅스에서 특정 프로세스나 전체 CPU 사용률을 제한하려면 여러 가지 방법이 있습니다. 여기서는 주요 방법들을 설명합니다.


1. cpulimit 명령어 사용

cpulimit는 특정 프로세스의 CPU 사용률을 제한하는 데 사용됩니다.

설치

sudo apt-get install cpulimit   # Ubuntu/Debian
sudo yum install epel-release && sudo yum install cpulimit  # CentOS/RHEL

사용법

sudo cpulimit -p <PID> -l <LIMIT>
  • <PID>: 제한할 프로세스 ID
  • <LIMIT>: CPU 사용률의 최대 값 (예: 50은 CPU 사용률 50%)

예제:

sudo cpulimit -p 12345 -l 50

위 명령은 PID 12345인 프로세스의 CPU 사용률을 50%로 제한합니다.

실행 시 바로 제한

새로운 프로세스를 실행하면서 제한을 걸고 싶다면:

sudo cpulimit -e <프로그램> -l <LIMIT>

2. nice와 renice를 사용한 우선순위 조정

CPU 사용률을 직접 제한하지는 않지만, 프로세스의 우선순위를 낮춰 다른 프로세스가 더 많은 리소스를 사용하도록 설정할 수 있습니다.

새 프로세스 실행 시 nice 사용

nice -n <PRIORITY> <COMMAND>
  • <PRIORITY>: -20(최고 우선순위)에서 19(최저 우선순위)
  • 기본 우선순위는 0입니다.

예제:

nice -n 10 ./my_program

실행 중인 프로세스의 우선순위 변경 (renice)

renice <PRIORITY> -p <PID>

예제:

renice 10 -p 12345

3. cgroups 사용

cgroups는 시스템 자원을 그룹 단위로 관리하는 리눅스 커널 기능입니다.

cgroups 설정

  1. cgroup-tools 설치
  2. sudo apt-get install cgroup-tools # Ubuntu/Debian sudo yum install libcgroup-tools # CentOS/RHEL
  3. cgroup 생성 및 CPU 제한
    • cpu.shares: CPU 점유 비율 (기본값: 1024, 낮을수록 우선순위 낮음)
  4. sudo cgcreate -g cpu:/mygroup sudo cgset -r cpu.shares=512 mygroup
  5. 프로세스 그룹에 추가
  6. sudo cgclassify -g cpu:/mygroup <PID>

4. systemd를 사용한 제한

systemd로 관리되는 서비스라면 CPU 사용률을 설정할 수 있습니다.

  1. 서비스 파일 수정 /etc/systemd/system/<서비스 이름>.service를 엽니다.
  2. [Service] CPUQuota=50%
  3. 설정 적용
  4. sudo systemctl daemon-reload sudo systemctl restart <서비스 이름>

5. taskset으로 CPU 코어 지정

특정 코어에서만 프로세스를 실행하게 설정하면 CPU 사용률을 제한할 수 있습니다.

사용법

taskset -c <CORE_LIST> <COMMAND>
  • <CORE_LIST>: 사용 가능한 CPU 코어 번호 (예: 0,1 또는 0-3)

예제:

taskset -c 0-1 ./my_program

위 명령은 프로그램을 0번과 1번 코어에서만 실행하도록 제한합니다.


결론

  • 간단히 제한하려면 cpulimit 사용.
  • 우선순위를 조정하려면 nice 또는 renice 사용.
  • 고급 설정이 필요하면 cgroups나 systemd를 활용.
  • 특정 코어에서만 실행하려면 taskset을 사용.


댓글