On Tue, Jan 8, 2019 at 6:59 AM Michal Hocko <mhocko@xxxxxxxxxx> wrote: > > On Wed 02-01-19 17:56:38, Shakeel Butt wrote: > > If a memcg is over high limit, memory reclaim is scheduled to run on > > return-to-userland. However it is assumed that the memcg is the current > > process's memcg. With remote memcg charging for kmem or swapping in a > > page charged to remote memcg, current process can trigger reclaim on > > remote memcg. So, schduling reclaim on return-to-userland for remote > > memcgs will ignore the high reclaim altogether. So, punt the high > > reclaim of remote memcgs to high_work. > > Have you seen this happening in real life workloads? No, just during code review. > And is this offloading what we really want to do? That's the question I am brainstorming nowadays. More generally how memcg-oom-kill should work in the remote memcg charging case. > I mean it is clearly the current > task that has triggered the remote charge so why should we offload that > work to a system? Is there any reason we cannot reclaim on the remote > memcg from the return-to-userland path? > The only reason I did this was the code was much simpler but I see that the current is charging the given memcg and maybe even reclaiming, so, why not do the high reclaim as well. I will update the patch. thanks, Shakeel