Cgroups : ルールを設定する2017/08/30 |
コントロールグループに登録するタスクのルールは、設定ファイルに記述しておくことで自動適用が可能です。
|
|
[1] | 設定ファイルからコントロールグループへタスクを登録するための Cgred サービスを起動しておきます。 |
[root@dlp ~]# systemctl start cgred [root@dlp ~]# systemctl enable cgred
|
[2] | ルールの設定例です。 |
# コントロールグループ作成 [root@dlp ~]# cgcreate -g cpu:/cpu_quota-70 [root@dlp ~]# cgset -r cpu.cfs_quota_us=70000 cpu_quota-70 [root@dlp ~]# cgget -g cpu /cpu_quota-70 /cpu_quota-70: cpu.rt_period_us: 1000000 cpu.rt_runtime_us: 0 cpu.stat: nr_periods 0 nr_throttled 0 throttled_time 0 cpu.cfs_period_us: 100000 cpu.cfs_quota_us: 70000 cpu.shares: 1024
[root@dlp ~]#
vi /etc/cgrules.conf # 最終行に追記 # [ユーザー] [サブシステム] [コントロールグループ] cent cpu /cpu_quota-70 # 特定のコマンド/スクリプトを指定する場合は [ユーザー:コマンド] # ワイルドカード使用可 (*=全て) # 全ユーザーの [test.sh] は [cpu_quota-70] へ関連付ける *:test.sh cpu /cpu_quota-70 # グループを指定する場合は [@グループ] @cent cpu /cpu_quota-70
[root@dlp ~]# systemctl restart cgred
# [cent] ユーザーで確認 # ジョブ投入 [cent@dlp ~]$ yes > /dev/null & [1] 1353 # 設定通り CPU#0 は 70% 程度に制限 [cent@dlp ~]$ mpstat -P ALL 1 1 | grep ^Average Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 34.67 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 65.33 Average: 0 69.70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 30.30 Average: 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 # 追加ジョブ投入 [cent@dlp ~]$ yes > /dev/null & [2] 1374 [cent@dlp ~]$ mpstat -P ALL 1 1 | grep ^Average Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 34.83 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 64.68 Average: 0 36.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 64.00 Average: 1 33.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 66.67 # ジョブを追加投入すると、空いている別の CPU コアで実行されるが # 100000μs あたり 70000μs 時間の CPUアクセスが可能となる設定のため上記のような結果となる
|