当最后一个任务离开 cgroup 时,由 `release_agent` 指定的可执行文件在哪些命名空间中执行?

当最后一个任务离开 cgroup 时,由 `release_agent` 指定的可执行文件在哪些命名空间中执行?

正在阅读文档对于Linux cgroups,我遇到过该notify_on_release标志及其与 的关系,即,如果为真,当最后一个进程离开cgroup并且不存在子cgroup时,release_agent内核运行由 指定的可执行文件。release_agentnotify_on_release

我如何从中推断可执行文件在哪些命名空间中执行:

  • 它是在根命名空间中执行的吗?
  • 它是在创建 cgroup 的进程的命名空间中执行的吗?
  • 它是在 cgroup 中最后一个进程的命名空间中执行的吗?

1.4notify_on_release 的作用是什么?


如果在 cgroup 中启用了 notification_on_release 标志 (1),则每当 cgroup 中的最后一个任务离开(退出或附加到某个其他 cgroup)并且该 cgroup 的最后一个子 cgroup 被删除时,内核都会运行由该层次结构根目录中“release_agent”文件的内容,提供废弃 cgroup 的路径名(相对于 cgroup 文件系统的挂载点)。这可以自动删除废弃的 cgroup。系统启动时 root cgroup 中的 notification_on_release 的默认值是禁用的 (0)。其他cgroup在创建时的默认值是其父级的notify_on_release设置的当前值。 cgroup 层次结构的release_agent 路径的默认值为空。

相关内容