プログラムのCPU使用を制限する

CentOS7で、cpulimitを使ってプログラムのCPU使用率を制限します。

目次

  1. cpulimitをインストール
  2. プログラム呼び出し時にCPU使用率を制限する
  3. 試してみた

cpulimitをインストール

CentOS7 minimalにはcpulimitが入っていませんので、yumでインストールします。

$ sudo yum install -y cpulimit

プログラム呼び出し時にCPU使用率を制限する

cpulimit -l ##を頭に付けてプログラムを実行します。 下記の場合は、xxxxというプログラムに-yyと-zzというコマンドラインオプションを付けて、CPU使用率を25%に制限して実行します。

$ cpulimit -l 25 xxxx -yy -zz

試してみた

まず無限ループするプログラムを実行します。

$ python -c 'while True:    a=1'  # 変数aに1を代入し続ける

これを実行してtopコマンドを見てみると、こうなります。

%Cpu(s): 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   482556 total,   185764 free,   152732 used,   144060 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.   277416 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  1158 hogehoge  20   0  123164   4256   1844 R 99.7  0.9   0:27.00 python
     1 root      20   0  128172   6832   4068 S  0.0  1.4   0:02.53 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd

pythonのCPU使用率がほぼ100%になっています。

では、cpulimitを付けて実行してみます。

$ cpulimit -l 10 python -c 'while True:    a=1'

で、topで実行状態をみてみると、pythonが約10%に抑えられています。

%Cpu(s):  4.6 us,  0.0 sy,  0.0 ni, 95.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   482556 total,   184924 free,   153348 used,   144284 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.   276832 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  1164 hogehoge  20   0  123164   4252   1844 T  9.0  0.9   0:02.09 python
  1165 hogehoge  20   0    4320    476    356 S  0.7  0.1   0:00.09 cpulimit
     9 root      20   0       0      0      0 S  0.3  0.0   0:00.86 rcu_sched

公開日

広告