Linux · 4 min read · Sep 19, 2025
Ubuntu LinuxでCPULimitを使用してCPU使用率を制限する方法

cpulimitコマンドは、Linux上の特定のプロセスのCPU使用率を制限するために設計されており、定義された閾値を超えないようにします。これは、システムリソースを管理し、単一のプロセスがCPU時間を独占するのを防ぐために特に便利です。これにより、全体的なシステムパフォーマンスが低下する可能性があります。希望するCPU使用率の制限をパーセンテージで指定することで、ユーザーは実行中のプロセスに制約を適用したり、制御されたCPU消費の下で新しいプロセスを開始したりできます。このツールは、ターゲットプロセスにSIGSTOPおよびSIGCONT信号を送信し、設定された使用制限を維持するために一時停止および再開します。
1 前提条件
このチュートリアルはUbuntu 24.04でテストされていますが、古いUbuntuリリースでも動作します。
2 CPULimitのインストール
まず、次のようにcpulimitをインストールする必要があります:
sudo apt update
sudo apt install cpulimit3 CPU使用率の制限
次に、CPU使用率を制限するためのユーティリティを確認します。これには、まずCPUlimitなしでのCPU使用率を確認し、その後CPUlimitを実装して評価します。例を挙げて明確にしましょう。
- 単一コアCPUでアプリケーションを使用してCPUを利用する方法の例は次のとおりです:
dd if=/dev/zero of=/dev/null &次に、次のコマンドでCPU使用率を確認します:
toptop - 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
次に、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:~# Process 1853 detected
[1]+ Done cpulimit -l 30 dd if=/dev/zero of=/dev/null
root@server1:~#
次に、topコマンドでCPU使用率を確認します:
toptop - 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を正常に確認しました。
- 複数コアCPUでアプリケーションを使用してCPUを利用する方法の例は次のとおりです:
CPUコアを確認するには、次のコマンドを使用します:
nproc 私の場合、CPUコア数は4でした。
次に、次のようにすべての4コアでcpulimitなしの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使用率を確認します:
toptop - 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 ddroot@server1:~# killall dd
[1] Terminated dd if=/dev/zero of=/dev/null
[3]- Terminated dd if=/dev/zero of=/dev/null
[2]- Terminated dd if=/dev/zero of=/dev/null
[4]+ Terminated 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 & doneroot@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:~# Process 1434 detected
Process 1433 detected
Process 1437 detected
Process 1439 detected
[1] Done cpulimit -l 20 dd if=/dev/zero of=/dev/null
[2] Done cpulimit -l 20 dd if=/dev/zero of=/dev/null
[3]- Done cpulimit -l 20 dd if=/dev/zero of=/dev/null
[4]+ Done cpulimit -l 20 dd if=/dev/zero of=/dev/null
root@server1:~#
次に、cpulimitユーティリティでCPU使用率を確認します。
toptop - 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 リンク
- Ubuntu : http://www.ubuntu.com/
- cpulimit : https://github.com/opsengine/cpulimit
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。