• Hao Jia's avatar
    cgroup/rstat: Record the cumulative per-cpu time of cgroup and its descendants · 0437719c
    Hao Jia authored
    The member variable bstat of the structure cgroup_rstat_cpu
    records the per-cpu time of the cgroup itself, but does not
    include the per-cpu time of its descendants. The per-cpu time
    including descendants is very useful for calculating the
    per-cpu usage of cgroups.
    
    Although we can indirectly obtain the total per-cpu time
    of the cgroup and its descendants by accumulating the per-cpu
    bstat of each descendant of the cgroup. But after a child cgroup
    is removed, we will lose its bstat information. This will cause
    the cumulative value to be non-monotonic, thus affecting
    the accuracy of cgroup per-cpu usage.
    
    So we add the subtree_bstat variable to record the total
    per-cpu time of this cgroup and its descendants, which is
    similar to "cpuacct.usage*" in cgroup v1. And this is
    also helpful for the migration from cgroup v1 to cgroup v2.
    After adding this variable, we can obtain the per-cpu time of
    cgroup and its descendants in user mode through eBPF/drgn, etc.
    And we are still trying to determine how to expose it in the
    cgroupfs interface.
    Suggested-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarHao Jia <jiahao.os@bytedance.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    0437719c
rstat.c 14.8 KB