리눅스에서 특정 프로세스나 전체 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 설정
- cgroup-tools 설치
- sudo apt-get install cgroup-tools # Ubuntu/Debian sudo yum install libcgroup-tools # CentOS/RHEL
- cgroup 생성 및 CPU 제한
- cpu.shares: CPU 점유 비율 (기본값: 1024, 낮을수록 우선순위 낮음)
- sudo cgcreate -g cpu:/mygroup sudo cgset -r cpu.shares=512 mygroup
- 프로세스 그룹에 추가
- sudo cgclassify -g cpu:/mygroup <PID>
4. systemd를 사용한 제한
systemd로 관리되는 서비스라면 CPU 사용률을 설정할 수 있습니다.
- 서비스 파일 수정 /etc/systemd/system/<서비스 이름>.service를 엽니다.
- [Service] CPUQuota=50%
- 설정 적용
- 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을 사용.
'리눅스' 카테고리의 다른 글
리눅스 특정 용량 되면 삭제 (0) | 2025.01.14 |
---|---|
리눅스 대용량 파일시스템 (0) | 2025.01.13 |
리눅스 LVM (0) | 2025.01.11 |
리눅스 디스크 정보 확인 (1) | 2025.01.08 |
리눅스 MEM 사용율 높은 프로세스 확인 (1) | 2025.01.07 |