7 制御グループについて
制御グループ(通常はcgroup
)は、リソース割当てのためにプロセス(PID
)を階層グループに編成できるようにするOracle Linuxカーネル機能です。たとえば、CPU時間を150:100:50の比率で割り当てる必要がある3セットのプロセスを特定した場合は、3つのcgroups
を作成し、それぞれに比率の3つの値のいずれかに対応するCPUの重みを割り当て、各cgroup
に適切なプロセスを割り当てることができます。
デフォルトでは、systemd
は次のものに対してcgroup
を作成します:
-
ホストに設定された各
systemd
サービス。たとえば、サーバーには、
NetworkManager
サービスによって所有されるプロセスをグループ化する制御グループNetworkManager.service
と、firewalld
サービスによって所有されるプロセスをグループ化する制御グループfirewalld.service
などがあります。 -
ホストの各ユーザー(
UID
)。
cgroup
機能は/sys/fs/cgroup
に仮想ファイル・システムとしてマウントされています。各cgroupには、/sys/fs/cgroup
ファイル・システム内の対応するフォルダがあります。たとえば、管理するサービスに対してsystemd
によって作成されたcgroup
は、次のサンプル・コード・ブロックに示すように、コマンドls -l /sys/fs/cgroup/system.slice | grep ".service"
を実行して表示できます:
ls -l /sys/fs/cgroup/system.slice | grep ".service"
...root root 0 Mar 22 10:47 atd.service
...root root 0 Mar 22 10:47 auditd.service
...root root 0 Mar 22 10:47 chronyd.service
...root root 0 Mar 22 10:47 crond.service
...root root 0 Mar 22 10:47 dbus-broker.service
...root root 0 Mar 22 10:47 dtprobed.service
...root root 0 Mar 22 10:47 firewalld.service
...root root 0 Mar 22 10:47 httpd.service
...
また、/sys/fs/cgroup
仮想ファイル・システムに独自のフォルダを作成し、システム・ニーズに応じてプロセスID (PID
)を別のcgroup
に割り当てることで、独自のcgroup
を作成することもできます。ただし、/sys/fs/cgroup
でcgroup
を手動で作成するかわりに、systemd
を使用してcgroup
を構成することをお薦めします。systemd
でcgroup
を管理するための推奨方法については、「systemdを使用したcgroups v2の管理」を参照してください。
ノート:
systemd
を使用して、cgroup
を構成します。
推奨構成方法ではsystemd
を使用してcgroupを管理しますが、このトピックでは、/sys/fs/cgroup
ファイル・システムでのcgroup
フォルダの手動作成についても説明します。ただし、この対象は主に、systemd
がアクセスを提供するカーネルcgroup
機能のバックグラウンド知識を提供することです。
Oracle Linuxには、次の2つのタイプの制御グループがあります:
- 制御グループ・バージョン1 (
cgroups v1
) -
これらのグループは、リソースごとのコントローラ階層を提供します。CPU、メモリー、I/Oなどの各リソースには、独自の制御グループ階層があります。このグループの短所は、異なるプロセス階層に属する可能性のあるグループ間でリソース使用を適切に調整することが困難なことです。
- 制御グループ・バージョン2 (
cgroups v2
) -
これらのグループは、すべてのリソース・コントローラがマウントされる単一の制御グループ階層を提供します。この階層では、異なるリソース・コントローラ間でのリソース使用をより適切に調整できます。このバージョンは、柔軟性が高すぎてシステム利用者間のリソース利用の適切な調整を妨げていた
cgroups v1
の改良版です。
どちらのバージョンもOracle Linuxに存在します。ただし、デフォルトでは、cgroups v1
機能が有効になっており、Oracle Linux 8システムにマウントされています。
両方のバージョンの制御グループの詳細は、cgroups(7)
およびsysfs(5)
のマニュアル・ページを参照してください。