基本上,通常用于通知文件系统更改的inotify在cgroup虚拟文件系统中不起作用。
本质上,我想要一种方法来获得类似于inotify的通知,当cgroup中的进程是dies或fork时。我尝试将inotify附加到cgroup文件系统中的tasks虚拟文件,但当进程自行分叉时,这不会起任何作用,只有当usespace工具实际手动写入该文件以影响cgroup时。

最佳答案

inotify不适用于这种虚拟文件系统,无论它是cgroupproc还是sys
注:我也试过,在某些情况下会很方便,但没有。:-)
这是因为文件和目录实际上不存在于每个SEET(例如,它们占用0个磁盘空间),它们是在您访问内核时由内核为您生成的。
因此,另一种方法是定期地在繁忙的循环中主动访问文件和目录,这种方法非常难看,以至于在大多数情况下它不是一个真正的替代方法。
这就是为什么像tophtop这样的程序会消耗这么多cpu。他们实际并积极地浏览proc虚拟文件系统,而不是以事件方式浏览inotifyselect或类似的内容。
编辑:
但是有些事情可以帮助你:
1/对于最近的内核(cgroup已重新设计):
看看:
https://www.kernel.org/doc/Documentation/cgroup-v2.txt
我引用:
2-3分。[未]填充的通知
每个非根cgroup都有一个“cgroup.events”文件,其中包含
“填充”字段,指示cgroup的子层次结构是否
在里面有活的过程。如果中没有活动进程,则其值为0
cGroup及其子代;否则为1。投票和[ID]通知
值更改时触发事件。[…]
1/对于较老的内核:
您可能需要查看notify_on_releaserelease_agent。看看:
https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
NoTIFYONONION释放标志:在退出时运行发布代理?
RelaseEXAgent:发布通知使用的路径(此文件仅在顶部CGROUP中存在)
以及“1.4在发布时通知你做什么?”以及“1.5克隆人孩子做什么?”

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

10-13 07:23