8 制御グループを使用したリソースの管理

制御グループは、cgroupsと呼ばれ、リソース割当てのためにプロセス(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)を別のcgroupsに割り当てることで、カスタムcgroupsを作成することもできます。ただし、/sys/fs/cgroupcgroupを手動で作成するかわりに、systemdを使用してcgroupを構成することをお薦めします。cgroupssystemdで管理する推奨方法については、『Oracle Linux 8: systemdでのシステムの管理』を参照してください。

ノート:

systemdを使用して、cgroupを構成します。

このトピックでは、/sys/fs/cgroupファイル・システムでcgroupディレクトリを手動で作成し、systemdがアクセスを提供するカーネルcgroup機能のバックグラウンド知識を提供します。systemdを使用してcgroupsを構成することをお薦めします。

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)のマニュアル・ページを参照してください。