Re: [PATCH memcg v3] memcg: prohibit unconditional exceeding the limit of dying tasks

From: Michal Hocko
Date: Tue Oct 05 2021 - 10:55:19 EST


On Tue 05-10-21 16:52:31, Vasily Averin wrote:
> v3: no functional changes, just improved patch description

You haven't addressed my review feedback regarding the oom invocation.
Let me paste it here again:
: > @@ -1607,7 +1607,7 @@ static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
: > * A few threads which were not waiting at mutex_lock_killable() can
: > * fail to bail out. Therefore, check again after holding oom_lock.
: > */
: > - ret = should_force_charge() || out_of_memory(&oc);
: > + ret = task_is_dying() || out_of_memory(&oc);
:
: task_is_dying check will prevent the oom killer for dying tasks. There
: is an additional bail out at out_of_memory layer. These checks are now
: leading to a completely different behavior. Currently we simply use
: "unlimited" reserves and therefore we do not have to kill any task. Now
: the charge fails without using all reclaim measures. So I believe we
: should drop those checks for memcg oom paths. I have to think about this
: some more because I might be missing some other side effects.
--
Michal Hocko
SUSE Labs