Show Table of Contents
第2章 コントロールグループの使用法
cgroup を使用して作業する最も簡単な方法は、libcgroup パッケージをインストールすることです。このパッケージには、数多くの cgroup 関連のコマンドラインユーティリティとそれらに関する man ページが含まれています。任意のシステム上で利用可能なシェルコマンドとユーティリティを使用して、階層をマウントし、cgroup のパラメーターを (非永続的に) 設定することも可能ですが、libcgroup の提供するユーティリティを使用すると、プロセスが簡素化され、機能性が拡張されます。このため、本ガイドでは全体を通して、libcgroup コマンドに重点を置いています。ほとんどの場合、相当するシェルコマンドを記載し、根本的な構造がわかりやすいようにしていますが、差し支えがなければ、libcgroup コマンドを使用することを推奨します。
注記
cgroup を使用するためには、まず最初に、root として以下のコマンドを実行し、libcgroup パッケージがインストールされているかどうかを確認します。
~]# yum install libcgroup2.1. cgconfig サービス
libcgroup パッケージとともにインストールされる
cgconfig サービスは、階層を作成して、サブシステムを階層に接続し、それらの階層内の cgroup を管理するのに便利な方法を提供します。システム上の階層と cgroup の管理には、cgconfig を使用することを推奨します。
Red Hat Enterprise Linux 6 では、
cgconfig サービスはデフォルトで起動しません。chkconfig を使用してサービスを起動すると、システムは cgroup の設定ファイル /etc/cgconfig.conf を読み取ります。そのため、cgroup はセッションからセッションへと再作成されて永続化します。cgconfig は、設定ファイルの内容に応じて、階層の作成、必要なファイルシステムのマウント、cgroup の作成、各グループ用のサブシステムパラメーターの設定を行います。
libcgroup パッケージとともにインストールされるデフォルトの
/etc/cgconfig.conf ファイルは、各サブシステム用の個別の階層を作成およびマウントし、それらの階層にサブシステムを接続します。
cgconfig サービスを停止 (service cgconfig stop コマンドを使用) すると、マウントされていたすべての階層がアンマウントされます。
2.1.1. /etc/cgconfig.conf ファイル
/etc/cgconfig.conf ファイルに含まれるエントリには、mount と group の 2 つの主要なタイプがあります。mount エントリは、仮想ファイルシステムとして階層を作成してマウントし、サブシステムをそれらの階層に接続します。mount エントリは、以下のような構文を用いて定義します。
mount {
<controller> = <path>;
…
}
使用例については、例2.1「mount エントリの作成」 を参照してください。
例2.1 mount エントリの作成
以下の例では、
cpuset サブシステム用の階層を作成します。
mount {
cpuset = /cgroup/red;
}
これに相当するシェルコマンドは以下のとおりです。
~]#mkdir /cgroup/red~]#mount -t cgroup -o cpuset red /cgroup/red
group エントリは cgroup を作成して、サブシステムパラメーターを設定します。group エントリは、以下のような構文を使用して定義します。
group <name> {
[<permissions>]
<controller> {
<param name> = <param value>;
…
}
…
}
permissions セクションはオプションである点に注意してください。グループエントリのパーミッションを定義するには、以下のような構文を使用します。
perm {
task {
uid = <task user>;
gid = <task group>;
}
admin {
uid = <admin name>;
gid = <admin group>;
}
}
使用例については、例2.2「group エントリの作成」 を参照してください。
例2.2 group エントリの作成
以下の例は、
sqladmin グループ内のユーザーのパーミッションで SQL デーモン用の cgroup を作成し、タスクを cgroup と root ユーザーに追加してサブシステムのパラメーターを変更します。
group daemons/sql {
perm {
task {
uid = root;
gid = sqladmin;
} admin {
uid = root;
gid = root;
}
} cpu {
cpuset.mems = 0;
cpuset.cpus = 0;
}
}
例2.1「mount エントリの作成」 の mount エントリの例と組み合わせた場合に、相当するシェルコマンドは以下のとおりです。
~]#mkdir -p /cgroup/red/daemons/sql~]#chown root:root /cgroup/red/daemons/sql/*~]#chown root:sqladmin /cgroup/red/daemons/sql/tasks~]#echo 0 > /cgroup/red/daemons/sql/cpuset.mems~]#echo 0 > /cgroup/red/daemons/sql/cpuset.cpus
注記
/etc/cgconfig.conf への変更内容を有効にするには、cgconfig を再起動する必要があります。ただし、このサービスを再起動すると、全 cgroup 階層が再構築され、以前に存在していた cgroup (例: libvirtd によって使用される既存の cgroup) はいずれも削除される点に注意してください。cgconfig サービスを再起動するには、以下のコマンドを実行します。
~]# service cgconfig restart
libcgroup パッケージをインストールすると、サンプルの設定ファイルが
/etc/cgconfig.conf に書き込まれます。行頭にハッシュ記号 ('#') が付いている場合、その行はコメントアウトされ、cgconfig サービスには不可視となります。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.