Hello, Michal Koutný <mkoutny@xxxxxxxx> writes: > On Fri, Oct 16, 2020 at 10:53:08AM -0400, Johannes Weiner <hannes@xxxxxxxxxxx> wrote: >> The central try_charge() function charges recursively all the way up >> to and including the root. > Except for use_hiearchy=0 (which is the case here as Richard > wrote). The reparenting is hence somewhat incompatible with > new_parent.use_hiearchy=0 :-/ > Yes and it also seems new_parent.use_hierarch=0 -> new_child.use_hierarchy=0 and new_parent.use_hierarch=0 -> new_child.use_hierarchy=1 are considered valid on cgroupsV1. The kernel will also allow more descendants on new_child.use_hierarchy=0, but sets broken_hierarchy=1. However this will not stop the stack trace occuring (AFAICT) when the reparenting happens between two descendants. >> We should clean this up one way or another: either charge the root or >> don't, but do it consistently. > I agree this'd be good to unify. One upside of excluding root memcg from > charging is that users are spared from the charging overhead when memcg > tree is not created. (Actually, I thought that was the reason for this > exception.) > > Michal -- Thank you, Richard.