控制組資料統計

控制組資料統計的靈感來源於 https://lore.kernel.org/r/461CF883.2030308@sw.ru 的討論,並實現了 Andrew Morton 在 https://lore.kernel.org/r/20070411114927.1277d7c9.akpm@linux-foundation.org 中建議的每個 cgroup 統計功能。

每個 cgroup 統計的基礎設施複用了 taskstats 介面的程式碼。一組新的 cgroup 操作以 cgroup 特定的命令和屬性進行註冊。透過向 cgroupstats 結構體新增成員,擴充套件每個 cgroup 的統計功能應該會非常容易。

cgroupstats 當前的模型是拉取式,新增推送式模型(用於在有趣事件上釋出統計資料)應該會非常容易。目前,使用者空間透過傳遞 cgroup 路徑來請求統計資料。關於 cgroup 中所有任務狀態的統計資料會被返回給使用者空間。

注意:我們目前依賴延遲記賬來提取關於阻塞在 I/O 上的任務資訊。如果 CONFIG_TASK_DELAY_ACCT 被停用,此資訊將不可用。

為了提取 cgroup 統計資料,已開發了一個與 getdelays.c 非常相似的實用程式,該實用程式的示例輸出如下所示

~/balbir/cgroupstats # ./getdelays  -C "/sys/fs/cgroup/a"
sleeping 1, blocked 0, running 1, stopped 0, uninterruptible 0
~/balbir/cgroupstats # ./getdelays  -C "/sys/fs/cgroup"
sleeping 155, blocked 0, running 1, stopped 0, uninterruptible 2