gpt4 book ai didi

linux - 获取有关 cgroup 进程更改的通知?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:40 30 4
gpt4 key购买 nike

基本上,通常用于通知文件系统更改的 inotify 在 cgroup 虚拟文件系统中不起作用。

本质上,我想要一种在 cgroup 中的进程死亡或 fork 时获得类似于 inotify 的通知的方法。我尝试将 inotify 附加到 cgroup 文件系统内的 tasks 虚拟文件,但是当进程自行 fork 时它什么也不做,只有当 usespace 工具实际手动写入它以影响 cgroup 时。

最佳答案

inotify 不适用于此类虚拟文件系统,无论是 cgroupproc 还是 sys

注意:我也试过这个,在某些情况下它会非常方便,但没有。 :-)

这是因为文件和目录实际上并不存在(例如它们占用 0 磁盘空间),它们是在您访问时由内核动态为您生成的他们

因此替代方案是定期在繁忙的循环中主动访问文件和目录,这太丑陋以至于在大多数情况下它不是真正的替代方案。

这就是为什么诸如tophtop 之类的程序消耗如此多 CPU 的原因。他们确实主动地浏览了 proc 虚拟文件系统,而不是 inotifyselect 或事件方式中类似的东西。

编辑:

但有些事情可以帮助您:

1/对于最近的内核(cgroups 已经重新设计):

看:

https://www.kernel.org/doc/Documentation/cgroup-v2.txt

我引用:

2-3. [Un]populated Notification

Each non-root cgroup has a "cgroup.events" file which contains "populated" field indicating whether the cgroup's sub-hierarchy has live processes in it. Its value is 0 if there is no live process in the cgroup and its descendants; otherwise, 1. poll and [id]notify events are triggered when the value changes. [...]

1/对于旧内核:

您可能想看看 notify_on_releaserelease_agent。看看:

https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt

  • notify_on_release flag: run the release agent on exit?
  • release_agent: the path to use for release notifications (this file exists in the top cgroup only)

以及“1.4 notify_on_release 做什么?”部分和“1.5 clone_children 做什么?”

关于linux - 获取有关 cgroup 进程更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878292/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com