LoginSignup
3
2

More than 5 years have passed since last update.

cgroups でプロセスの CPU 利用率を制御する.

Posted at

漢ならアプリに CPU 優先度を付けて実行したいですよね! でも nice だとうまくいかない… 悲しくて涙で枕を濡らす日々が続いていました…

そこで昨今の Linux に搭載されている cgroups による CPU リソース制御を使ってみます.

当然ベンチマークアプリは aobench http://code.google.com/p/aobench/ ですね.
OpenMP 化してマルチスレッド実行するようにしておきましょう.

設定

cgroups の機能を有効にしておきます.

$ sudo chkconfig cgconfig on
$ sudo service cgconfig start

aobench 用のグループを作ります.

$ sudo cgcreate -g cpu:/aobench-group

ディレクトリが出来ているのを確認します.

$ ls /cgroup/cpu/aobench-group

CPU 利用率を 50% に設定します.

$ sudo sh -c "echo 50000 > /cgroup/cpu/aobench-group/cpu.cfs_quota_us"

実行

まずは普通に aobench 実行します.

$ ./ao
$ top
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                               
15813 syoyo     20   0  114m  26m  932 R 794.9  0.1   2:13.43 ao

4 core(8 HT cores) なので理論上 800% のうち 750% ~ 795% くらい出ています. 期待通りですね.

cgroup の設定を使って 50% の利用率になるように実行してみます.

$ sudo cgexec -g cpu:aobench-group ./ao
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                               
16300 root      20   0  114m  26m  940 R 49.9  0.1   0:21.94 ao

50% にはなりましたが, 物理 1 コアの半分での 50% になってしまいました… 400% が期待される結果なのですが, マルチコアでの設定はなにかやりかたが違うのでしょうかね.

TODO

  • Docker で使いたい
  • マルチコア環境での設定方法

References

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2