Re: [PATCH 3/3] cgroup: Implement cgroup2 basic CPU usage accounting
From: Waiman Long <hidden>
Date: 2017-08-29 15:32:40
Also in:
lkml
On 08/29/2017 11:24 AM, Tejun Heo wrote:
Hello, Peter. On Tue, Aug 29, 2017 at 04:32:52PM +0200, Peter Zijlstra wrote:quoted
So I mostly like. On accounting it only adds to the immediate cgroup (if it has a parent, aka !root). On update it does a DFS of all sub-groups and propagates the deltas up to the requested group....quoted
What I don't get is why you need cgroup_cpu_stat_updated(). That is, I see you use it to keep the keep the DFS 'stack' up-to-date, but what I don't see is why you'd need that.That is to make reading stats O(number of descendants which have been active since last read) instad of O(number of all descendants) as there can be a lot of not-too-active cgroups in a system. Stat reading can be frequent, so the combination can get really bad. By keeping the updated list separate, increasing read frequency decreases the cost of each read. Also, please note that a system may end up with a lot of cgroups without the user intending to. memcg drains removed cgroups lazily and the number of draining cgroups can reach very high numbers if the system isn't under memory pressure. The plan is to add basic stats for other resources too and keeping it scalable w.r.t. idle cgroups allows using the same mechanism for all resources.
I think it will be good to put the rationale behind this function as a comment in the code. Cheers, Longman