On 2019/06/17 15:33, Michal Hocko wrote: > On Sat 15-06-19 09:11:37, Shakeel Butt wrote: >> On Sat, Jun 15, 2019 at 6:50 AM Michal Hocko <mhocko@xxxxxxxxxx> wrote: > [...] >>> diff --git a/mm/oom_kill.c b/mm/oom_kill.c >>> index 5a58778c91d4..43eb479a5dc7 100644 >>> --- a/mm/oom_kill.c >>> +++ b/mm/oom_kill.c >>> @@ -161,8 +161,8 @@ static bool oom_unkillable_task(struct task_struct *p, >>> return true; >>> >>> /* When mem_cgroup_out_of_memory() and p is not member of the group */ >>> - if (memcg && !task_in_mem_cgroup(p, memcg)) >>> - return true; >>> + if (memcg) >>> + return false; >> >> This will break the dump_tasks() usage of oom_unkillable_task(). We >> can change dump_tasks() to traverse processes like >> mem_cgroup_scan_tasks() for memcg OOMs. > > Right you are. Doing a similar trick to the oom victim selection is > indeed better. We should really strive to not doing a global process > iteration when we can do a targeted scan. Care to send a patch? I posted a patch that (as a side effect) avoids oom_unkillable_task() from dump_tasks() at https://lore.kernel.org/linux-mm/1558519686-16057-2-git-send-email-penguin-kernel@xxxxxxxxxxxxxxxxxxx/ . What do you think?