Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1303715 > unrolled thread

Re: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.

Started byJohannes Weiner <hannes@cmpxchg.org>
First post2016-01-07 17:30 +0100
Last post2016-01-08 14:50 +0100
Articles 4 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates. Johannes Weiner <hannes@cmpxchg.org> - 2016-01-07 17:30 +0100
    Re: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates. Michal Hocko <mhocko@kernel.org> - 2016-01-08 13:40 +0100
      Re: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates. Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> - 2016-01-08 14:20 +0100
        Re: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates. Michal Hocko <mhocko@kernel.org> - 2016-01-08 14:50 +0100

#1303715 — Re: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.

FromJohannes Weiner <hannes@cmpxchg.org>
Date2016-01-07 17:30 +0100
SubjectRe: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.
Message-ID<qOlBL-29Y-1@gated-at.bofh.it>
On Tue, Dec 29, 2015 at 10:58:22PM +0900, Tetsuo Handa wrote:
> >From 8bb9e36891a803e82c589ef78077838026ce0f7d Mon Sep 17 00:00:00 2001
> From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Date: Tue, 29 Dec 2015 22:20:58 +0900
> Subject: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.
> 
> The OOM reaper kernel thread can reclaim OOM victim's memory before the victim
> terminates. But since oom_kill_process() tries to kill children of the memory
> hog process first, the OOM reaper can not reclaim enough memory for terminating
> the victim if the victim is consuming little memory. The result is OOM livelock
> as usual, for timeout based next OOM victim selection is not implemented.

What we should be doing is have the OOM reaper clear TIF_MEMDIE after
it's done. There is no reason to wait for and prioritize the exit of a
task that doesn't even have memory anymore. Once a task's memory has
been reaped, subsequent OOM invocations should evaluate anew the most
desirable OOM victim.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1304494

FromMichal Hocko <mhocko@kernel.org>
Date2016-01-08 13:40 +0100
Message-ID<qOEuL-6IK-29@gated-at.bofh.it>
In reply to#1303715
On Thu 07-01-16 11:28:15, Johannes Weiner wrote:
> On Tue, Dec 29, 2015 at 10:58:22PM +0900, Tetsuo Handa wrote:
> > >From 8bb9e36891a803e82c589ef78077838026ce0f7d Mon Sep 17 00:00:00 2001
> > From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> > Date: Tue, 29 Dec 2015 22:20:58 +0900
> > Subject: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.
> > 
> > The OOM reaper kernel thread can reclaim OOM victim's memory before the victim
> > terminates. But since oom_kill_process() tries to kill children of the memory
> > hog process first, the OOM reaper can not reclaim enough memory for terminating
> > the victim if the victim is consuming little memory. The result is OOM livelock
> > as usual, for timeout based next OOM victim selection is not implemented.
> 
> What we should be doing is have the OOM reaper clear TIF_MEMDIE after
> it's done. There is no reason to wait for and prioritize the exit of a
> task that doesn't even have memory anymore. Once a task's memory has
> been reaped, subsequent OOM invocations should evaluate anew the most
> desirable OOM victim.

This is an interesting idea. It definitely sounds better than timeout
based solutions. I will cook up a patch for this. The API between oom
killer and the reaper has to change slightly but that shouldn't be a big
deal.

Thanks!
-- 
Michal Hocko
SUSE Labs

[toc] | [prev] | [next] | [standalone]


#1304520

FromTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date2016-01-08 14:20 +0100
Message-ID<qOF7r-7eQ-5@gated-at.bofh.it>
In reply to#1304494
Michal Hocko wrote:
> On Thu 07-01-16 11:28:15, Johannes Weiner wrote:
> > On Tue, Dec 29, 2015 at 10:58:22PM +0900, Tetsuo Handa wrote:
> > > >From 8bb9e36891a803e82c589ef78077838026ce0f7d Mon Sep 17 00:00:00 2001
> > > From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> > > Date: Tue, 29 Dec 2015 22:20:58 +0900
> > > Subject: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.
> > > 
> > > The OOM reaper kernel thread can reclaim OOM victim's memory before the victim
> > > terminates. But since oom_kill_process() tries to kill children of the memory
> > > hog process first, the OOM reaper can not reclaim enough memory for terminating
> > > the victim if the victim is consuming little memory. The result is OOM livelock
> > > as usual, for timeout based next OOM victim selection is not implemented.
> > 
> > What we should be doing is have the OOM reaper clear TIF_MEMDIE after
> > it's done. There is no reason to wait for and prioritize the exit of a
> > task that doesn't even have memory anymore. Once a task's memory has
> > been reaped, subsequent OOM invocations should evaluate anew the most
> > desirable OOM victim.
> 
> This is an interesting idea. It definitely sounds better than timeout
> based solutions. I will cook up a patch for this. The API between oom
> killer and the reaper has to change slightly but that shouldn't be a big
> deal.

That is part of what I suggested at
http://lkml.kernel.org/r/201512052133.IAE00551.LSOQFtMFFVOHOJ@I-love.SAKURA.ne.jp .
| What about marking current OOM victim unkillable by updating
| victim->signal->oom_score_adj to OOM_SCORE_ADJ_MIN and clearing victim's
| TIF_MEMDIE flag when the victim is still alive for a second after
| oom_reap_vmas() completed?

Can we update victim's oom_score_adj as well? Otherwise, the OOM killer
might choose the same victim if victim's oom_score_adj was set to 1000.

[toc] | [prev] | [next] | [standalone]


#1304549

FromMichal Hocko <mhocko@kernel.org>
Date2016-01-08 14:50 +0100
Message-ID<qOFAu-7qR-7@gated-at.bofh.it>
In reply to#1304520
On Fri 08-01-16 22:14:54, Tetsuo Handa wrote:
> Michal Hocko wrote:
> > On Thu 07-01-16 11:28:15, Johannes Weiner wrote:
> > > On Tue, Dec 29, 2015 at 10:58:22PM +0900, Tetsuo Handa wrote:
> > > > >From 8bb9e36891a803e82c589ef78077838026ce0f7d Mon Sep 17 00:00:00 2001
> > > > From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> > > > Date: Tue, 29 Dec 2015 22:20:58 +0900
> > > > Subject: [PATCH] mm,oom: Exclude TIF_MEMDIE processes from candidates.
> > > > 
> > > > The OOM reaper kernel thread can reclaim OOM victim's memory before the victim
> > > > terminates. But since oom_kill_process() tries to kill children of the memory
> > > > hog process first, the OOM reaper can not reclaim enough memory for terminating
> > > > the victim if the victim is consuming little memory. The result is OOM livelock
> > > > as usual, for timeout based next OOM victim selection is not implemented.
> > > 
> > > What we should be doing is have the OOM reaper clear TIF_MEMDIE after
> > > it's done. There is no reason to wait for and prioritize the exit of a
> > > task that doesn't even have memory anymore. Once a task's memory has
> > > been reaped, subsequent OOM invocations should evaluate anew the most
> > > desirable OOM victim.
> > 
> > This is an interesting idea. It definitely sounds better than timeout
> > based solutions. I will cook up a patch for this. The API between oom
> > killer and the reaper has to change slightly but that shouldn't be a big
> > deal.
> 
> That is part of what I suggested at
> http://lkml.kernel.org/r/201512052133.IAE00551.LSOQFtMFFVOHOJ@I-love.SAKURA.ne.jp .
> | What about marking current OOM victim unkillable by updating
> | victim->signal->oom_score_adj to OOM_SCORE_ADJ_MIN and clearing victim's
> | TIF_MEMDIE flag when the victim is still alive for a second after
> | oom_reap_vmas() completed?

Sorry, I must have missed this part. I have added your Suggested-by to the
patch description.

> Can we update victim's oom_score_adj as well? Otherwise, the OOM killer
> might choose the same victim if victim's oom_score_adj was set to 1000.

Yes I've done that in the patch I am testing ATM.

-- 
Michal Hocko
SUSE Labs

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web