第3章 libcgroup ツールの使用
以前のバージョンの Red Hat Enterprise Linux で cgroup 管理用の主要なツールであった libcgroup パッケージは非推奨になりました。競合を 避ける ために、デフォルトのリソースコントローラー (Red Hat Enterprise Linux 7 で利用可能なコントローラー) が systemd の専用ドメインになりました。これにより、libcgroup ツールを適用するための限られたスペースが残されます。net_prio など、現在 systemd でサポートされていないコントローラーを管理する必要がある場合にのみ使用してください。
以下のセクションでは、デフォルトの階層システムと競合することなく、関連するシナリオで libcgroup ツールを使用する方法について説明します。
注記
libcgroup ツールを使用するには、まず libcgroup および libcgroup-tools パッケージがシステムにインストールされていることを確認してください。それらをインストールするには、
root
として実行します:
~]# yum install libcgroup ~]# yum install libcgroup-tools
注記
net_prio
コントローラーは、他のコントローラーのようにカーネルでコンパイルされません。マウントする前にロードする必要があるモジュールです。このモジュールをロードするには、root
として次のように入力します。
~]# modprobe netprio_cgroup
3.1. 階層のマウント
自動的にマウントされないカーネルリソースコントローラーを使用するには、このコントローラーを含む階層を作成する必要があります。
/etc/cgconfig.conf
設定ファイルの マウント
セクションを編集して、階層を追加または分離します。この方法では、コントローラーの接続が永続的になります。つまり、システムの再起動後も設定が保持されます。別の方法として、mount コマンドを使用して、現在のセッションのみの一時的なマウントを作成します。
cgconfig サービスの使用
libcgroup-tools パッケージでインストールされる
cgconfig
サービスは、追加のリソースコントローラーの階層をマウントする方法を提供します。デフォルトでは、このサービスは自動的に開始されません。cgconfig
を起動すると、/etc/cgconfig.conf
設定ファイルの設定が適用されます。したがって、設定はセッションごとに再作成され、永続的になります。cgconfig
を停止すると、マウントしたすべての階層がアンマウントされることに注意してください。
libcgroup パッケージでインストールされるデフォルトの
/etc/cgconfig.conf
ファイルには設定設定は含まれず、systemd がメインのリソースコントローラーを自動的にマウントする情報のみが含まれます。
/etc/cgconfig.conf
には、mount、group、および template の 3 種類のエントリーを作成できます。マウントエントリーは、階層を仮想ファイルシステムとして作成およびマウントし、コントローラーをそれらの階層に接続するために使用されます。Red Hat Enterprise Linux 7 では、デフォルトの階層が /sys/fs/cgroup/
ディレクトリーに自動的にマウントされるため、cgconfig
はデフォルト以外のコントローラーを接続するためにのみ使用されます。マウントエントリーは、次の構文を使用して定義されます。
mount { controller_name = /sys/fs/cgroup/controller_name; … }
controller_name を、階層にマウントするカーネルリソース コントローラー の名前に置き換えます。例は、 を参照してください。
例3.1 マウントエントリーの作成
net_prio
コントローラーをデフォルトの cgroup ツリーに接続するには、次のテキストを /etc/cgconfig.conf
設定ファイルに追加します。
mount { net_prio = /sys/fs/cgroup/net_prio; }
次に、
cgconfig
サービスを再起動して設定を適用します。
~]# systemctl restart cgconfig.service
/etc/cgconfig.conf
のグループエントリーを使用して、リソースコントローラーのパラメーターを設定できます。見る「cgroup パラメーターの設定」グループエントリーの詳細については、
/etc/cgconfig.conf
のテンプレートエントリーを使用して、すべてのプロセスに適用されるグループ定義を作成できます。
mount コマンドの使い方
mount コマンドを使用して、階層を一時的にマウントします。これを行うには、まず
/sys/fs/cgroup/
ディレクトリーにマウントポイントを作成します。ここで、systemd はメインのリソースコントローラーをマウントします。root
で次のコマンドを入力します。
~]# mkdir /sys/fs/cgroup/name
name を新しいマウント先の名前に置き換えます。通常はコントローラーの名前が使用されます。次に、mount コマンドを実行して階層をマウントし、同時に 1 つ以上のサブシステムを接続します。
root
で次のコマンドを入力します。
~]# mount -t cgroup -o controller_name none
/sys/fs/cgroup/controller_name
controller_name を コントローラー の名前に置き換えて、マウントするデバイスと宛先フォルダーの両方を指定します。
-t cgroup
パラメーターは、マウントのタイプを指定します。
例3.2 mount コマンドを使用してコントローラーを接続する
mount コマンドを使用して
net_prio
コントローラーの階層をマウントするには、まずマウントポイントを作成します。
~]# mkdir /sys/fs/cgroup/net_prio
次に、前の手順で作成した宛先に
net_prio
をマウントします。
~]# mount -t cgroup -o net_prio none
/sys/fs/cgroup/net_prio
lssubsys コマンド (「コントローラーの一覧表示」):
~]# lssubsys -am
cpuset /sys/fs/cgroup/cpuset
cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls /sys/fs/cgroup/net_cls
blkio /sys/fs/cgroup/blkio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb
net_prio /sys/fs/cgroup/net_prio