簡體   English   中英

獲取有關cgroup流程更改的通知?

[英]Get notification on cgroup process change?

基本上,inotify通常用於通知文件系統更改,在cgroup虛擬文件系統中不起作用。

本質上,當cgroup中的進程死亡或分叉時,我想要一種類似於inotify的通知。 我嘗試將inotify附加到cgroup文件系統內的tasks虛擬文件,但是僅當一個usespace工具實際上手動寫入它以影響cgroup時,當進程自行分叉時,該操作什么也不做。

inotify不適用於這種虛擬文件系統,無論是cgroupproc還是sys

注意:我也嘗試過,在某些情況下會非常方便,但不會。 :-)

這是因為文件和目錄每次查看時實際上並不存在 (例如,它們占用0的磁盤空間),它們是由內核在您訪問它們時為您動態生成的

因此,替代方案是定期在繁忙的循環中主動訪問文件和目錄,這非常丑陋,因此在大多數情況下不是真正的替代方案。

這就是為什么諸如tophtop類的程序會消耗大量CPU的原因。 他們確實確實在積極地瀏覽proc虛擬文件系統,而不是以事件的方式進行inotifyselect或填充。

編輯:

但是,有些事情可以幫助您:

1 /對於最新的內核(cgroup已重新設計):

看着:

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

我引用:

2-3。 [未]填充的通知

每個非根cgroup都有一個“ cgroup.events”文件,其中包含“填充”字段,該字段指示cgroup的子層次結構中是否有活動進程。 如果cgroup及其子代中沒有活動進程,則其值為0;否則,值為0。 否則,1.值更改時將觸發poll和[id] notify事件。 [...]

1 /對於較舊的內核:

您可能需要查看notify_on_releaserelease_agent 看一下:

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

  • notify_on_release標志:在出口運行發布代理?
  • release_agent:用於發布通知的路徑(此文件僅在頂級cgroup中存在)

還有“ 1.4 notify_on_release的作用是什么?”部分。 和“ 1.5 clone_children是做什么的?”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM