CentOS7で「cgroups」を用いてリソース制御を行うための設定ファイル編集内容メモ 基本設定編
投稿日:
このページは、CentOS7で「cgroups」を用いてリソース制御を行うための設定ファイル(本ページの場合は/etc/cgconfig.conf)の編集内容についてのメモ書きです。こちらのページに示したサンプルの意味の解説も兼ねています。もくじ
- サブシステムのマウント
- コントロールグループの作成
- cpu(リソースコントローラー・別記事)
- cpuset(リソースコントローラー・別記事)
サブシステムのマウント
プログラムに対してリソース制御を行う場合、まずは制御したいリソース(CPUやメモリ、ディスクI/Oなど)を担当するサブシステム(リソースコントローラー)をマウントする必要があります。当方の環境では、以下のサブシステムが/sys/fs/cgroup/にマウントされていました。 [VIM] cpuset cpu,cpuacct memory devices freezer net_cls,net_prio blkio perf_event hugetlb pids [/VIM] CentOS7の場合、以上のサブシステムを使用する場合はマウント設定を書き込む必要は特にありません。ただ、サブシステムを別の場所にマウントしたり、マウントされていないサブシステムを使用したい場合は、以下のようにマウント設定を書き込みます。
[VIM] mount { cpu = /cgroup/cpumem; cpuset = /cgroup/cpumem; memory = /cgroup/cpumem; blkio = /cgroup/iolimit; devices = /cgroup/devlist; } [/VIM]設定ファイルに「mount」と書き込んだ後ろに中括弧を1組打ち込み、その中に「(マウントしたいサブシステム) = (マウント先のディレクトリ)」という形式でサブシステムのマウント設定を書き込めばOKです。
コントロールグループの作成
cgroupsとサブシステム(リソースコントローラー)を用いてリソース制御を行うためには、まずコントロールグループを作成し、プログラムをコントロールグループに所属させる必要があります。コントロールグループを定義する時は、以下のような内容を/etc/cgconfig.confに書き込みます。下の例からも察していただけるかと思いますが、行頭に#がある場合、その行はコメントとなります。
[VIM] #hogeはグループ名 #fugaとpiyoはユーザー名 group hoge { perm { task { uid = fuga; gid = fuga; } admin { uid = piyo; gid = piyo; } } (ここにサブシステムの設定(リソース制御の設定)を書き込む) #例 cpuサブシステム cpu { cpu.cfs_period_us=”1000000″; cpu.cfs_quota_us=”300000″; } } [/VIM]まずは設定対象のグループに他のグループと区別できるグループ名を与えてください。グループ名の後ろに中括弧1組を打ち込み、そのグループの設定はすべて中括弧の中に書き込んでいきます。サブシステムの設定についても、各サブシステムごとに中括弧を打ち込み、その中に設定を書いていきます。
コントロールグループを定義する段階では、
- そのコントロールグループにプログラムを追加する権限を持つユーザー・グループ(taskセクションで設定)
- サブシステムパラメータ(使用可能なリソースの上限値など)の変更を行えるユーザー・グループ(adminセクションで設定)