On Thu, Apr 23, 2020 at 04:10:09PM -0700, Andrew Morton wrote: > From: Shakeel Butt <shakeelb@xxxxxxxxxx> > Subject: mm/memcg: optimize memory.numa_stat like memory.stat > > Currently reading memory.numa_stat traverses the underlying memcg tree > multiple times to accumulate the stats to present the hierarchical view of > the memcg tree. However the kernel already maintains the hierarchical > view of the stats and use it in memory.stat. Just use the same mechanism > in memory.numa_stat as well. > > I ran a simple benchmark which reads root_mem_cgroup's memory.numa_stat > file in the presense of 10000 memcgs. The results are: > > Without the patch: > $ time cat /dev/cgroup/memory/memory.numa_stat > /dev/null > > real 0m0.700s > user 0m0.001s > sys 0m0.697s > > With the patch: > $ time cat /dev/cgroup/memory/memory.numa_stat > /dev/null > > real 0m0.001s > user 0m0.001s > sys 0m0.000s > > [akpm@xxxxxxxxxxxxxxxxxxxx: avoid forcing out-of-line code generation] > Link: http://lkml.kernel.org/r/20200304022058.248270-1-shakeelb@xxxxxxxxxx > Signed-off-by: Shakeel Butt <shakeelb@xxxxxxxxxx> > Reviewed-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > Cc: Roman Gushchin <guro@xxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Ouch, yes. That makes sense. Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>