为什么同一任务可以在不同的cgroups

时间:2013-06-19 02:52:35

标签: linux kernel task

我是cat / cgroup / memory / tasks和/ cgroup / cpuset / tasks,我发现了很多重复的任务。是不是任务只能出现在一个cgroup层次结构中?我对cgroup机制不太熟悉,内存和cpuset是否只控制任务行为的不同方面?

更具体地说,如果不同的子系统的行为与任务所属的另一个子系统的行为发生冲突会发生什么?

1 个答案:

答案 0 :(得分:0)

您正在混合2个原则:任何进程始终是某个cgroup的成员,但这适用于cgroup层次结构(它们彼此独立)。因此,每个进程都将是您定义的每个cgroup层次结构中某个cgroup的成员(通常安装在/cgroup/HIERARCHY_NAME中)。

EG。当您将计算机配置为具有2个层次结构时:

  • 已安装在与/cgroup/memory cgroup控制器
  • 相关联的memory
  • 已安装在与/cgroup/cpuset cgroup控制器
  • 相关联的cpuset

您将从包含所有正在运行的进程的pid的文件/cgroup/cpuset/tasks/cgroup/memory/tasks开始,直到您创建新的cgroup并在其中放入一些进程。所以难怪你在这里看到相同的pids。

此外,由于cgroup层次结构是独立的,因此您无法将cgroup控制器连接到多个层次结构 - 这可以消除明显的冲突。