Re: [PATCH 2/2] mm: oom: deduplicate victim selection code for memcg and global oom

From: Michal Hocko
Date: Fri May 27 2016 - 10:26:34 EST


On Fri 27-05-16 17:17:42, Vladimir Davydov wrote:
> When selecting an oom victim, we use the same heuristic for both memory
> cgroup and global oom. The only difference is the scope of tasks to
> select the victim from. So we could just export an iterator over all
> memcg tasks and keep all oom related logic in oom_kill.c, but instead we
> duplicate pieces of it in memcontrol.c reusing some initially private
> functions of oom_kill.c in order to not duplicate all of it. That looks
> ugly and error prone, because any modification of select_bad_process
> should also be propagated to mem_cgroup_out_of_memory.
>
> Let's rework this as follows: keep all oom heuristic related code
> private to oom_kill.c and make oom_kill.c use exported memcg functions
> when it's really necessary (like in case of iterating over memcg tasks).

I am doing quite large changes in this area and this would cause many
conflicts. Do you think you can postpone this after my patchset [1] gets
sorted out please?

I haven't looked at the patch carefully so I cannot tell much about it
right now but just wanted to give a heads up for the conflicts.

[1] http://lkml.kernel.org/r/1464266415-15558-1-git-send-email-mhocko@xxxxxxxxxx

Thanks!

>
> Signed-off-by: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx>
> ---
> include/linux/memcontrol.h | 15 ++++
> include/linux/oom.h | 51 -------------
> mm/memcontrol.c | 112 ++++++++++-----------------
> mm/oom_kill.c | 183 +++++++++++++++++++++++++++++----------------
> 4 files changed, 176 insertions(+), 185 deletions(-)
--
Michal Hocko
SUSE Labs