Michal Hocko <mhocko@xxxxxxxx> 于2022年8月30日周二 15:12写道: > > On Tue 30-08-22 15:06:57, Kairui Song wrote: > > Michal Hocko <mhocko@xxxxxxxx> 于2022年8月30日周二 14:45写道: > > > > > > On Tue 30-08-22 13:59:48, Kairui Song wrote: > > > > From: Kairui Song <kasong@xxxxxxxxxxx> > > > > > > > > There are currently two helpers for checking if cgroup kmem > > > > accounting is enabled: > > > > > > > > - mem_cgroup_kmem_disabled > > > > - memcg_kmem_enabled > > > > > > Yes, this is a bit confusing indeed! > > > > > > > mem_cgroup_kmem_disabled is a simple helper that returns true if > > > > cgroup.memory=nokmem is specified, otherwise returns false. > > > > > > > > memcg_kmem_enabled is a bit different, it returns true if > > > > cgroup.memory=nokmem is not specified and there is at least one > > > > non-root cgroup ever created. And once there is any non-root memcg > > > > created, it won't go back to return false again. > > > > > > > > This may help improve performance for some corner use cases where > > > > the user enables memory cgroup and kmem accounting globally but never > > > > create any cgroup. > > > > > > > > Considering that corner case is rare, especially nowadays cgroup is > > > > widely used as a standard way to organize services. > > > > > > Is it really that rare? Most configurations would use a default setup, so > > > both MEMCG enabled and without nokmem on cmd line yet the memory > > > controller is not enabled in their setups. > > > > Actually I don't have too much confidence saying that as well... but > > AFAIK, almost all distros will create a few sub cgroup on boot by the > > init (eg. openrc, finit, systemd). > > Yeah, but do they enable the memory controller as well? Unless I am > missing something this will require at least one memcg enabled cgroup to > be created. Systemd enable memory controller by default since ver 238 from 2018, but I'm not sure about the others. Now I think I was wrong about the assumption, will be sure to do more homework next time. And thanks for the review!