On Tue, Jul 25, 2017 at 12:40:47PM +0100, Roman Gushchin wrote: > A removed memory cgroup with a defined low limit and some belonging > pagecache has very low chances to be freed. > > If a cgroup has been removed, there is likely no memory pressure inside > the cgroup, and the pagecache is protected from the external pressure > by the defined low limit. The cgroup will be freed only after > the reclaim of all belonging pages. And it will not happen until > there are any reclaimable memory in the system. That means, > there is a good chance, that a cold pagecache will reside > in the memory for an undefined amount of time, wasting > system resources. > > Fix this issue by zeroing memcg->low during memcg offlining. > > Signed-off-by: Roman Gushchin <[email protected]> > Cc: Tejun Heo <[email protected]> > Cc: Johannes Weiner <[email protected]> > Cc: Michal Hocko <[email protected]> > Cc: Vladimir Davydov <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > --- > mm/memcontrol.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index aed11b2d0251..2aa204b8f9fd 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -4300,6 +4300,8 @@ static void mem_cgroup_css_offline(struct > cgroup_subsys_state *css) > } > spin_unlock(&memcg->event_list_lock); > > + memcg->low = 0; > + > memcg_offline_kmem(memcg); > wb_memcg_offline(memcg); >
We already have that - see mem_cgroup_css_reset().

