Re: [PATCH] mm: memcontrol: protect the memory in cgroup from being oom killed

Michal Hocko
2022-12-01T13:08:38Z

On Thu 01-12-22 13:44:58, Michal Hocko wrote:
> On Thu 01-12-22 10:52:35, 程垲涛 Chengkaitao Cheng wrote:
> > At 2022-12-01 16:49:27, "Michal Hocko" <mhocko@suse.com> wrote:
[...]
> > >Why cannot you simply discount the protection from all processes
> > >equally? I do not follow why the task_usage has to play any role in
> > >that.
> >
> > If all processes are protected equally, the oom protection of cgroup is
> > meaningless. For example, if there are more processes in the cgroup,
> > the cgroup can protect more mems, it is unfair to cgroups with fewer
> > processes. So we need to keep the total amount of memory that all
> > processes in the cgroup need to protect consistent with the value of
> > eoom.protect.
>
> You are mixing two different concepts together I am afraid. The per
> memcg protection should protect the cgroup (i.e. all processes in that
> cgroup) while you want it to be also process aware. This results in a
> very unclear runtime behavior when a process from a more protected memcg
> is selected based on its individual memory usage.

Let me be more specific here. Although it is primarily processes which
are the primary source of memcg charges the memory accounted for the oom
badness purposes is not really comparable to the overal memcg charged
memory. Kernel memory, non-mapped memory all that can generate rather
interesting cornercases.
--
Michal Hocko
SUSE Labs