8 制御グループについて
制御グループ(通常はcgroups)は、プロセス(PIDs)をリソース割当ての階層グループに編成できるようにする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
...カスタムcgroupsを作成するには、/sys/fs/cgroup仮想ファイル・システムにフォルダを作成し、システムのニーズに応じてプロセスID (PIDs)を別のcgroupsに割り当てます。 ただし、/sys/fs/cgroupでcgroupを手動で作成するかわりに、systemdを使用してcgroupを構成することをお薦めします。 systemdでcgroupを管理するための推奨方法については、「systemdを使用したcgroups v2の管理」を参照してください。
ノート:
systemdを使用して、cgroupを構成します。
推奨構成方法ではsystemdを使用してcgroupを管理しますが、このトピックでは、/sys/fs/cgroupファイル・システムでのcgroupフォルダの手動作成についても説明します。 ただし、この対象は主に、systemdがアクセスを提供するカーネルcgroup機能のバックグラウンド知識を提供することです。
Oracle Linuxは、制御グループ・バージョン2 (cgroups v2)実装)を使用します。 これらのグループは、すべてのリソース・コントローラがマウントされる単一の制御グループ階層を提供します。 この階層では、異なるリソース・コントローラ間でのリソース使用をより適切に調整できます。 このバージョンはcgroups v1よりも改善され、柔軟性が高すぎるとシステム・コンシューマ間のリソース使用の適切な調整が妨げられました。
cgroups v1は非推奨であり、Oracle Linux 10では使用できません。 cgroups v2機能はデフォルトで有効化およびマウントされます。
制御グループの詳細は、cgroups(7)およびsysfs(5)のマニュアル・ページを参照してください。