cgroupはキーと値のペアのリストですか、それともプロセスグループですか?

cgroupはキーと値のペアのリストですか、それともプロセスグループですか?

私はcgroupが特定の条件を満たすプロセスグループだと思います。http://man7.org/linux/man-pages/man7/cgroups.7.html

cグループはプロセス収集cgroupファイルシステムによって定義された制限またはパラメータセットにバインドされます。

与えられたPIDを持つプロセスのcgroupを見つけるのは正しいですか?ただ実行してください。

$ cat /proc/11/cgroup
12:perf_event:/
11:blkio:/
10:hugetlb:/
9:freezer:/
8:pids:/
7:cpuset:/
6:devices:/
5:cpu,cpuacct:/
4:rdma:/
3:memory:/
2:net_cls,net_prio:/
1:name=systemd:/
0::/

cgroupがID番号であることがわかりました。ただし、これはキーと値のペアのリストです。上記のKey-Valueペアのリストはプロセスのリストを表していますか?

同じcgroup内のすべてのプロセスを見つけることはできますか?

ありがとうございます。

ベストアンサー1

引用したマニュアルページに記載されているように、cgroupはプロセスグループです。

の内容は、/proc/11/cgroupプロセス11が属する全ての制御グループを記述する。 v1グループの場合、各行の最初のフィールドは階層ID、2番目のフィールドはコントローラのリスト、3番目のフィールドは階層内のcgroupのパス名です。 v2 グループの場合、最初のフィールドは 0 で、2 番目のフィールドは空で、3 番目のフィールドはパス名です。

特定のcgroup内のすべてのプロセスを見つけ、tasksそのsysfsディレクトリのファイルを表示します。例えば

cat /sys/fs/cgroup/perf_event/tasks

以下に該当します12:perf_event:/

| /sys/fs/cgroup/ | perf_event | / | tasks
|                 |            |   |
|<  mountpoint   >|<controller>| ^ |
                                 |
               cgroup pathname --+

おすすめ記事