制御グループ・ファイル・システムについて

cgroup機能は、/sys/fs/cgroupに階層ファイル・システムとしてマウントされています。

ディレクトリ/sys/fs/cgroupは、ルート制御グループとも呼ばれます。ルート制御グループ・ディレクトリの内容は、システムにマウントされているcgroupのバージョンによって異なります。cgroups v2の場合、ディレクトリの内容は次のとおりです。

ls /sys/fs/cgroup
cgroup.controllers      cpuset.mems.effective  memory.stat
cgroup.max.depth        cpu.stat               misc.capacity
cgroup.max.descendants  dev-hugepages.mount    sys-fs-fuse-connections.mount
cgroup.procs            dev-mqueue.mount       sys-kernel-config.mount
cgroup.stat             init.scope             sys-kernel-debug.mount
cgroup.subtree_control  io.pressure            sys-kernel-tracing.mount
cgroup.threads          io.stat                system.slice
cpu.pressure            memory.numa_stat       user.slice
cpuset.cpus.effective   memory.pressure
mkdirコマンドを使用して、ルート制御グループ内にcgroupサブディレクトリを作成できます。たとえば、次のcgroupサブディレクトリを作成します。
  • /sys/fs/cgroup/MyGroups/

  • /sys/fs/cgroup/MyGroups/cgroup1

  • /sys/fs/cgroup/MyGroups/cgroup2

ノート:

ベスト・プラクティスは、/sys/fs/cgroup内に少なくとも2つのレベルの子cgroupsを作成することです。前述のリストの例では、最初の子グループMyGroupsを、システムに必要な様々なcgroupsを含む親として使用することで、このプラクティスに従っています。

階層内の各cgroupには、次のファイルが含まれます。

cgroup.controllers

この読取り専用ファイルには、現在のcgroupで使用可能なコントローラがリストされます。このファイルの内容は、親のcgroup内のcgroup.subtree_control ファイルの内容と一致します。

cgroup.subtree_control

このファイルには、現在のcgroupの直下の子cgroupsに対して有効になっているcgroup.controllersファイル内のコントローラが含まれています。

コントローラ(pidsなど)が cgroup.subtree_controlファイルに存在する場合、対応するコントローラ・インタフェース・ファイル(pids.maxなど)は、現在のcgroupの直下の子に自動的に作成されます。

アプリケーションのリソース管理を実装できる子グループを作成する手順の例は、CPUの重みの設定によるCPU時間配分の制御を参照してください。

cgroupを削除するには、cgroupに他の子グループが含まれていないことを確認してから、ディレクトリを削除します。たとえば、子グループ/sys/fs/cgroup/MyGroups/cgroup1を削除するには、次のコマンドを実行します。

sudo rmdir /sys/fs/cgroup/MyGroups/cgroup1