制御グループ・ファイル・システムについて
cgroup機能は、/sys/fs/cgroupに階層ファイル・システムとしてマウントされています。
ディレクトリ/sys/fs/cgroupは、ルート制御グループとも呼ばれます。 ルート制御グループ・ディレクトリの内容は、システムにマウントされているcgroupのバージョンによって異なります。 cgroups v2の場合、ディレクトリの内容はfollowsです :
ls /sys/fs/cgroupcgroup.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.pressuremkdirコマンドを使用して、ルート制御グループ内に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