cpulimitのインストール方法&使い方~プロセスの使用CPUを制限する方法

本記事では、Linuxで利用中のプロセスのCPU利用率に制限をかける方法として、「cpulimit」の使い方を紹介します。

 

 

CPUに負荷のかかる処理を常駐で一定期間動かし続けたい場合に、そのまま実行するとそのプロセスがCPUを100%使い続けてしまう場合があります。自宅サーバーであれば電気代がかさむだけですが、レンタルサーバーやVPSなどでCPUを100%利用する状態を続けると、プロバイダーから怒られてしまい、悪質な場合には利用CPUを強制的に制限されてしまったり、アカウントを停止されてしまう場合もあります。

 

 

そんなときに便利なのが、実行プロセスの利用CPUを制限する「cpulimit」です。cpulimitを使えば、プロセス単位で利用可能なCPUに制限をかけることが可能です。これにより重い処理をバックグラウンドで動かしながら、大切な処理に割り当てるCPUを確保しておくことが出来たり、レンタルサーバでシミュレーションや解析など高負荷な処理を動かし続けたい場合に加減をして使う(?)といったことが可能になります。

 

最近では、マイニングを行っている人も多いと思いますが、その際のCPU調節にも便利ですね。私も格安VPSを契約して、空き時間でマイニングを行っています

 

 

 

マイニングにも使える格安VPS Time4VPSの公式サイトはこちら↓

Time4VPS.EU - VPS hosting in Europe

 

 

cpulimitのインストール方法

まずは、cpuinfoをyumを使ってインストールしていきます。

yumパッケージの確認

 

yum provides cpulimit

 

[root@SERVER_A ~]# yum provides cpulimit

Yum command has been deprecated, redirecting to ‘/usr/bin/dnf provides cpulimit’.
See ‘man dnf’ and ‘man yum2dnf’ for more information.
To transfer transaction metadata from yum to DNF, run:
‘dnf install python-dnf-plugins-extras-migrate && dnf-2 migrate’

Last metadata expiration check performed 0:17:14 ago on Tue Nov 21 08:09:47 2017.
cpulimit-1:0.1-2.20140722gitcabeb99.fc22.x86_64 : CPU Usage Limiter for Linux
Repo : fedora

cpulimit-1:0.2-1.20151118gitf4d2682.fc22.x86_64 : CPU Usage Limiter for Linux
Repo : updates

 

 

yumインストール

パッケージを確認したら、同じくyumコマンドを使ってインストールを実行します。

 

yum install cpulimit

 

[root@SERVER_A ~]# yum install cpulimit
Yum command has been deprecated, redirecting to ‘/usr/bin/dnf install cpulimit’.
See ‘man dnf’ and ‘man yum2dnf’ for more information.
To transfer transaction metadata from yum to DNF, run:
‘dnf install python-dnf-plugins-extras-migrate && dnf-2 migrate’

Last metadata expiration check performed 0:25:29 ago on Tue Nov 21 08:09:47 2017.
Dependencies resolved.
=============================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================
Installing:
cpulimit x86_64 1:0.2-1.20151118gitf4d2682.fc22 updates 20 k

Transaction Summary
=============================================================================================================================
Install 1 Package

Total download size: 20 k
Installed size: 26 k
Is this ok [y/N]: y
Downloading Packages:
cpulimit-0.2-1.20151118gitf4d2682.fc22.x86_64.rpm 198 kB/s | 20 kB 00:00
—————————————————————————————————————————–
Total 13 kB/s | 20 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Installing : cpulimit-1:0.2-1.20151118gitf4d2682.fc22.x86_64 1/1
Verifying : cpulimit-1:0.2-1.20151118gitf4d2682.fc22.x86_64 1/1

Installed:
cpulimit.x86_64 1:0.2-1.20151118gitf4d2682.fc22

Complete!
[root@SERVER_A ~]#

 

以上でインストールは完了です。

 

cpulimitの使い方

ヘルプを表示

cpulimit -h

[root@SERVER_A ~]# cpulimit -h
Usage: cpulimit [OPTIONS…] TARGET
OPTIONS
-l, –limit=N percentage of cpu allowed from 0 to 100 (required)
-v, –verbose show control statistics
-z, –lazy exit if there is no target process, or if it dies
-i, –include-children limit also the children processes
-h, –help display this help and exit
TARGET must be exactly one of these:
-p, –pid=N pid of the process (implies -z)
-e, –exe=FILE name of the executable program file or path name
COMMAND [ARGS] run this command and limit it (implies -z)

Report bugs to <marlonx80@hotmail.com>.

 

実行例1 プロセス起動時にcpulimitを実行する方法

プロセス起動時にcpulimitを利用することで、実行対象プロセスが使えるCPUを制限する方法。

 

cpulimit -l <制限値> <実行プロセス>

 

CPUを100%利用するマイニングアプリのminergate-cli(マイナーゲートのAPI)で確認してみます。そのまま実行すると使える限りのリソースを使って実行するためCPU利用率は100%になります

 

・CPU制限なし(100%)で実行した場合

APIをそのまま実行

[root@SERVER_A ~]# minergate-cli –user XXXXXX@gmail.com –xmr 1 &
[21.11.2017 08:44] [ info] Pool parameters query…
[21.11.2017 08:44] [ info] Loading miners…
[21.11.2017 08:44] [ info] Miners loaded successfully
[21.11.2017 08:44] [ info] Successfully connected to pool: stratum+tcp://xmr.pool.minergate.com:45560. session_id=”dbe1
fae8-4b79-416d-af4c-6e0a3e940c3c”
[21.11.2017 08:44] [ info] New Job: job_id=”fe5faae7-3bf0-4954-8677-1b1bd43d97e6″ blob=”0606d596cfd005dd11a219e89554d05
8ba4b0430715b5c0c43506124c5d0fdb42ec1680388e1b1000000004e9a3845c1270c6feccb62f2b10e9968aa4c843b7eb74c220bfe416a9d46f6bb0
8″ target=”e4a63d00″
[21.11.2017 08:44] [ info] New difficulty: 1063
[21.11.2017 08:44] [ info] New Job: job_id=”7f8581c1-9daf-48ed-a20a-04c1b869ecdf” blob=”0606e896cfd005782893a124581bf99
38f1bb0526a3ed58af8e882545faa03f92d5ac8362f03fc00000000d90569983356a835f1967647d521104afd0fa09682cf8037c45a5f1c9dbeda1e0
2″ target=”e4a63d00″
[21.11.2017 08:44] [ info] New difficulty: 1063
XMR hashrate: 28.75 H/s
XMR hashrate: 34.67 H/s
XMR hashrate: 33.20 H/s
XMR hashrate: 33.60 H/s

 

アプリのhachrateは計算能力に比例するため、CPU利用率が高いほど値が大きくなります。

 

topコマンドで確認すると、CPU利用率が100%近く(99.3%)になっていることがわかります。

 

・cpulimitを使って75%で起動した場合

APIをcpulimit経由でCPU利用率を75%に指定して実行

 

[root@SERVER_A ~]# cpulimit -l 75 minergate-cli –user XXXXXX@gmail.com –xmr 1 &
[21.11.2017 08:48] [ info] Pool parameters query…
[21.11.2017 08:48] [ info] Loading miners…
[21.11.2017 08:48] [ info] Miners loaded successfully
[21.11.2017 08:48] [ info] Successfully connected to pool: stratum+tcp://xmr.pool.minergate.com:45560. session_id=”d66b
d7e9-67aa-4ece-ba3a-8f1fbcdd247d”
[21.11.2017 08:48] [ info] New Job: job_id=”134cb898-1e4c-4758-abb6-3946ba3c7bc3″ blob=”0606e796cfd005782893a124581bf99
38f1bb0526a3ed58af8e882545faa03f92d5ac8362f03fc00000000460f0574e5c602117af7786772a8adf459aa63fa2516f7aae419a5240ca3273f0
2″ target=”e4a63d00″
[21.11.2017 08:48] [ info] New difficulty: 1063
XMR hashrate: 17.16 H/s
XMR hashrate: 14.33 H/s
XMR hashrate: 14.29 H/s
XMR hashrate: 14.88 H/s
XMR hashrate: 14.57 H/s

hashrateが下がっている(=CPUの利用率が制限されている)ことがわかります。

 

topコマンドで確認すると、cpulimitが機能して、CPU利用率が指定した75%に制限されていることがわかります。

 

実行例2 起動中のプロセスにcpulimitを実行する方法

実行中の他プロセスに外からcpulimitを実行することで、対象プロセスが使えるCPUを制限する方法です。

 

cpulimit -z -l <制限値> -p <対象プロセスのPID>

 

利用する際には、topコマンドなどでCPUを多く使っているプロセスを事前に特定しておく必要があります。

 

 

※本記事の手順はFedora22,23で検証しています。(2017/11/21最終更新)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください