On Sun 20-01-19 15:15:51, Shakeel Butt wrote: > On Wed, Jan 16, 2019 at 9:07 PM Yang Shi <shy828301@xxxxxxxxx> wrote: > ... > > > > You mean it solves the problem by retrying more times? Actually, I'm > > > > not sure if you have swap setup in your test, but force_empty does do > > > > swap if swap is on. This may cause it can't reclaim all the page cache > > > > in 5 retries. I have a patch within that series to skip swap. > > > > > > Basically yes, retrying solves the problem. But compared to immediate retries, a scheduled retry in a few seconds is much more effective. > > > > This may suggest doing force_empty in a worker is more effective in > > fact. Not sure if this is good enough to convince Johannes or not. > > > > >From what I understand what we actually want is to force_empty an > offlined memcg. How about we change the semantics of force_empty on > root_mem_cgroup? Currently force_empty on root_mem_cgroup returns > -EINVAL. Rather than that, let's do force_empty on all offlined memcgs > if user does force_empty on root_mem_cgroup. Something like following. No, I do not thing we want to make root memcg somehow special here. I do recognize two things here 1) people seem to want to have a control over when a specific cgroup gets reclaimed (basically force_empty) 2) people would like the above to happen when a memcg is offlined The first part is not present in v2 and we should discuss whether we want to expose it because it hasn't been added due to lack of usecases. The later is discussed [1] already so let's continue there. [1] http://lkml.kernel.org/r/1547061285-100329-1-git-send-email-yang.shi@xxxxxxxxxxxxxxxxx -- Michal Hocko SUSE Labs