CPU 사용량 제한 · 6 min read · Sep 19, 2025

Ubuntu Linux에서 CPULimit로 CPU 사용량 제한하는 방법

cpulimit 명령은 특정 프로세스의 CPU 사용량을 제한하도록 설계되어 있으며, 정의된 임계값을 초과하지 않도록 보장합니다. 이는 시스템 리소스를 관리하고 단일 프로세스가 CPU 시간을 독점하여 전체 시스템 성능을 저하시킬 수 있는 것을 방지하는 데 특히 유용합니다. 사용자는 원하는 CPU 사용량 제한을 백분율로 지정하여 실행 중인 프로세스에 제약을 적용하거나 제어된 CPU 소비 하에 새로운 프로세스를 시작할 수 있습니다. 이 도구는 대상 프로세스에 SIGSTOP 및 SIGCONT 신호를 보내어 설정된 사용량 제한을 유지하기 위해 일시 중지 및 재개합니다.

1 사전 참고

이 튜토리얼은 Ubuntu 24.04에서 테스트되었지만 이전 Ubuntu 릴리스에서도 작동합니다.

2 CPULimit 설치

먼저, 다음과 같이 cpulimit를 설치해야 합니다:

sudo apt update  
sudo apt install cpulimit

3 CPU 사용량 제한하기

이제 CPU 사용량을 제한하는 유틸리티를 확인해 보겠습니다. 이를 위해 먼저 CPUlimit 없이 CPU 사용량을 확인한 다음 CPUlimit를 구현하여 평가하겠습니다. 예를 들어 명확히 해 보겠습니다.

  1. 단일 코어 CPU에서 애플리케이션으로 CPU를 활용하는 방법의 예는 다음과 같습니다:
dd if=/dev/zero of=/dev/null &

그런 다음, 다음 명령으로 CPU 사용량을 확인합니다:

top
top - 11:24:18 up 49 min,  1 user,  load average: 0.94, 1.02, 1.79  
Tasks: 249 total,   2 running, 247 sleeping,   0 stopped,   0 zombie  
%Cpu(s): 13.4 us, 11.6 sy,  0.0 ni, 74.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st  
KiB Mem:   1010540 total,   271652 used,   738888 free,    21760 buffers  
KiB Swap:  1048572 total,        0 used,  1048572 free.   158204 cached Mem  
  
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                      
 1850 root      20   0    7224    616    520 R 100.0  0.1   1:20.33 dd                           
 1851 root      20   0   24952   1756   1180 R   0.3  0.2   0:00.03 top                          
    1 root      20   0   33480   2776   1456 S   0.0  0.3   0:05.31 init                         
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd        

보시다시피 CPU 사용량이 100%로 증가했습니다. 이제 cpulimit를 사용하여 CPU 사용량을 제한하겠습니다. fg 명령을 사용하여 이 프로세스를 전경으로 가져오고 CTRL+C로 취소할 수 있습니다.

fg

fg 명령을 사용하여 프로세스를 전경으로 가져오기

이제 cpulimit가 제대로 작동하는지 테스트할 수 있습니다. 다음과 같이 테스트해 보겠습니다:

cpulimit -l 30 dd if=/dev/zero of=/dev/null &

root@server1:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &

[1] 1852

root@server1:~# 프로세스 1853 감지됨

[1]+  완료                    cpulimit -l 30 dd if=/dev/zero of=/dev/null

root@server1:~#

이제 top 명령으로 CPU 사용량을 확인하겠습니다:

top

top - 11:30:54 up 55 min,  1 user,  load average: 0.20, 0.58, 1.34

Tasks: 250 total,   2 running, 247 sleeping,   1 stopped,   0 zombie

%Cpu(s):  4.5 us,  4.1 sy,  0.0 ni, 91.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem:   1010540 total,   271944 used,   738596 free,    21816 buffers

KiB Swap:  1048572 total,        0 used,  1048572 free.   158212 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

1853 root      20   0    7224    612    520 T 33.8 0.1   0:35.53 dd

1 root      20   0   33480   2776   1456 S   0.0  0.3   0:05.37 init

2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd

3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0

4 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0

이제 CPU 사용량이 100%에서 33.8%로 감소했음을 알 수 있습니다. 따라서 단일 코어 Ubuntu 배포판에서 CPU 소비를 제한할 수 있는 유틸리티 cpulimit를 성공적으로 확인했습니다.

  1. 다중 코어 CPU에서 애플리케이션으로 CPU를 활용하는 방법의 예는 다음과 같습니다:

CPU 코어를 확인하려면 다음 명령을 사용하십시오:

nproc   

내 경우, CPU 코어 수는 4였습니다.
이제 다음과 같이 애플리케이션에 대해 cpulimit 없이 모든 4코어의 CPU 사용량을 확인하겠습니다:

for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done

이 명령은 모든 코어를 활용하여 실행되며 출력은 다음과 같습니다:

root@server1:~# for j in seq 1 4; do dd if=/dev/zero of=/dev/null & done

[1] 1263

[2] 1264

[3] 1265

[4] 1266

root@server1:~#

이제 top 명령으로 CPU 사용량을 확인합니다:

top

top - 11:47:45 up 4 min,  1 user,  load average: 3.63, 1.53, 0.57

Tasks: 290 total,   5 running, 285 sleeping,   0 stopped,   0 zombie

%Cpu0  : 48.3 us, 51.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st

%Cpu1  : 47.8 us, 52.2 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu2  : 53.3 us, 46.4 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st

%Cpu3  : 52.0 us, 48.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem:   1010540 total,   209712 used,   800828 free,    20276 buffers

KiB Swap:  1048572 total,        0 used,  1048572 free.    93632 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

1263 root      20   0    7224    612    520 R 100.0 0.1   2:21.40 dd

1264 root      20   0    7224    616    520 R 100.0 0.1   2:21.41 dd

1265 root      20   0    7224    612    520 R 99.0 0.1   2:21.03 dd

1266 root      20   0    7224    616    520 R 98.0 0.1   2:20.82 dd

1281 root      20   0  104416   3992   2920 S   1.0  0.4   0:00.03 sshd

1283 root      20   0  104416   3988   2920 S   1.0  0.4   0:00.03 sshd

1279 root      20   0  104556   4008   2924 S   0.7  0.4   0:00.08 sshd

dd 명령은 모든 코어의 거의 100% CPU를 소비합니다.  다음으로 cpulimit 유틸리티로 명령을 확인하겠습니다. 이를 위해 다음과 같이 dd 명령의 이전 흔적을 종료합니다:

killall dd

root@server1:~# killall dd

[1]   종료됨              dd if=/dev/zero of=/dev/null

[3]-  종료됨              dd if=/dev/zero of=/dev/null

[2]-  종료됨              dd if=/dev/zero of=/dev/null

[4]+  종료됨              dd if=/dev/zero of=/dev/null

root@server1:~#

이제 다음과 같이 동일한 명령으로 cpulimit를 사용합니다:

for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done

root@server1:~# for j in seq 1 4; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done

[1] 1429

[2] 1430

[3] 1431

[4] 1432

root@server1:~# 프로세스 1434 감지됨

프로세스 1433 감지됨

프로세스 1437 감지됨

프로세스 1439 감지됨

[1]   완료                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

[2]   완료                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

[3]-  완료                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

[4]+  완료                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

root@server1:~#

이제 cpulimit 유틸리티로 CPU 사용량을 확인합니다.

top

top - 11:59:10 up 16 min,  2 users,  load average: 0.47, 0.71, 0.81

Tasks: 256 total,   2 running, 251 sleeping,   3 stopped,   0 zombie

%Cpu0  :  2.0 us,  2.0 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu1  : 26.2 us, 22.8 sy,  0.0 ni, 50.7 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st

%Cpu2  : 14.0 us, 12.3 sy,  0.0 ni, 73.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu3  : 13.3 us, 11.6 sy,  0.0 ni, 75.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem:   1010540 total,   204064 used,   806476 free,    20408 buffers

KiB Swap:  1048572 total,        0 used,  1048572 free.    98340 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

1433 root      20   0    7224    612    520 T 28.2 0.1   0:12.00 dd

1439 root      20   0    7224    616    520 R 26.6 0.1   0:12.13 dd

1434 root      20   0    7224    612    520 T 25.3 0.1   0:11.97 dd

1437 root      20   0    7224    612    516 T 22.9 0.1   0:11.93 dd

7 root      20   0       0      0      0 S   0.3  0.0   0:00.22 rcu_sched

8 root      20   0       0      0      0 S   0.3  0.0   0:00.21 rcuos/0

위에서 보시다시피 CPU 사용량이 거의 100%에서 20%로 제한되었습니다.  축하합니다! 우리는 Ubuntu에서 CPU 사용량을 제한하기 위해 cpulimit를 성공적으로 테스트했습니다.

4 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.