Linux 3.2 の CFS bandwidth control (2)
Linux 3.2 の CFS bandwidth control (1) - TenForwardの日記 の続編.簡単に動きを見てみました.
シェルを二つ起動して,こんなスクリプトを実行してみました.
# while :; do true ; done
結果は top コマンドで観測.まあ,これでは厳密にちゃんと動いているのかは分からないですが,とりあえず簡単な目安には...
# top -p 3146,3148
- cgroupfs にグループを作成します.
# cd /sys/fs/cgroup/cpu
# mkdir test1 test2 - シェルを 2 つ起動し,それぞれの pid をグループに登録.
# echo 3168 > /sys/fs/cgroup/cpu/test1/tasks
# echo 3146 > /sys/fs/cgroup/cpu/test2/tasks - 一応,cpu.cfs_period_us の値を確認.この時間内で最大どれだけ時間を使えるか? を設定します.デフォルトは 100ms になってます.とりあえずこのまま.
# cat cpu.cfs_period_us
100000 - 両方のグループに 5ms を登録してみます.
# echo 5000 > /sys/fs/cgroup/cpu/test1/cpu.cfs_quota_us
# echo 5000 > /sys/fs/cgroup/cpu/test2/cpu.cfs_quota_us - 片方を 10ms にしてみます.
# echo 10000 > /sys/fs/cgroup/cpu/test2/cpu.cfs_quota_us
- もう片方も 10ms に.
# echo 10000 > test1/cpu.cfs_quota_us
- 片方を 50ms に.
# echo 50000 > test1/cpu.cfs_quota_us
統計情報は cpu.stat ファイルで見ることが可能です.
# cat /sys/fs/cgroup/cpu/test1/cpu.stat nr_periods 42283 nr_throttled 32321 throttled_time 1723251367447