LoginSignup
6
6

More than 5 years have passed since last update.

cgroupsによるCPU使用時間優先度設定

Last updated at Posted at 2014-03-28

cgroupsのcpuサブシステムのcpu.sharesを使用して、
コントロールグループのタスクのCPU使用時間の優先度を設定します。

※CPU使用時間の優先度(配分)を設定するのであって上限を設定するものでないことに注意

異なる2つのコントロールグループ作成

groupAとgroupBの2つのコントロールグループを作成します。

# mount -t cgroup -o cpu none /cgroup/
# mkdir /cgroup/groupA
# mkdir /cgroup/groupB

タスクをコントロールグループに移動

CPU時間を浪費する2つのタスクtaskAとtaskBをバックグラウンド実行し、それぞれをgroupAとgroupBに登録します。
taskA、taskBの実体はCPU時間を浪費させるyesコマンドです。

$ ln -s /usr/bin/yes taskA
$ ln -s /usr/bin/yes taskB
$ ./taskA > /dev/null &
[1] 2249
# echo 2249 > /cgroup/groupA/tasks
$ ./taskB > /dev/null &
[2] 2263
# echo 2263 > /cgroup/groupB/tasks

CPU使用優先度設定をしない場合

topコマンドでtaskAとtaskBのCPU使用率を確認します。

$ top
top - 01:01:49 up 5 min,  1 user,  load average: 1.85, 0.89, 0.36
Tasks:  65 total,   3 running,  62 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99.0 us,  0.6 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:    447284 total,    54608 used,   392676 free,     8560 buffers
KiB Swap:   102396 total,        0 used,   102396 free,    24340 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
 2249 pi        20   0  3192  528  456 R  49.3  0.1   1:44.16 taskA
 2263 pi        20   0  3192  528  456 R  49.3  0.1   1:01.97 taskB
(以下略)

taskAとtaskBが半々の割合でCPU時間を消費しています。

CPU使用優先度設定をする場合

今回はgroupA(taskA)とgroupB(taskB)のCPU使用割合を3:1に設定します。

# echo 768 > /cgroup/groupA/cpu.shares
# echo 256 > /cgroup/groupB/cpu.shares

期待された割合になっているか確認します。

$ top
top - 01:03:08 up 6 min,  1 user,  load average: 2.02, 1.18, 0.50
Tasks:  64 total,   3 running,  61 sleeping,   0 stopped,   0 zombie
%Cpu(s): 98.4 us,  1.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:    447284 total,    54724 used,   392560 free,     8612 buffers
KiB Swap:   102396 total,        0 used,   102396 free,    24340 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
 2249 pi        20   0  3192  528  456 R  73.8  0.1   2:27.39 taskA
 2263 pi        20   0  3192  528  456 R  24.7  0.1   1:35.26 taskB
(以下略)

設定した割合でCPU時間が配分されました。

6
6
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
6
6