0

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

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

4

1 回答 1

0

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

例如。当您将机器配置为具有 2 个层次结构时:

  • 安装在/cgroup/memorymemorycgroup 控制器关联的位置
  • 安装在/cgroup/cpusetcpusetcgroup 控制器关联的位置

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

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

于 2014-03-29T01:27:49.707 回答