Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第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 には、mountgroup、および 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 -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