All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm,oom_reaper: Use try_oom_reaper() for reapability test.
@ 2016-04-14 10:56 Tetsuo Handa
  2016-04-14 10:56 ` [PATCH] mm,oom: Clarify reason to kill other threads sharing the vitctim's memory Tetsuo Handa
  2016-04-14 11:21 ` [PATCH] mm,oom_reaper: Use try_oom_reaper() for reapability test Michal Hocko
  0 siblings, 2 replies; 13+ messages in thread
From: Tetsuo Handa @ 2016-04-14 10:56 UTC (permalink / raw)
  To: Michal Hocko, Andrew Morton
  Cc: Oleg Nesterov, David Rientjes, linux-mm, Tetsuo Handa

Assuming that try_oom_reaper() is correctly implemented, we should use
try_oom_reaper() for testing "whether the OOM reaper is allowed to reap
the OOM victim's memory" rather than "whether the OOM killer is allowed
to send SIGKILL to thread groups sharing the OOM victim's memory",
for the OOM reaper is allowed to reap the OOM victim's memory even if
that memory is shared by OOM_SCORE_ADJ_MIN but already-killed-or-exiting
thread groups.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
 mm/oom_kill.c | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 7098104..e78818d 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -648,10 +648,6 @@ subsys_initcall(oom_init)
 static void try_oom_reaper(struct task_struct *tsk)
 {
 }
-
-static void wake_oom_reaper(struct task_struct *tsk)
-{
-}
 #endif
 
 /**
@@ -741,7 +737,6 @@ void oom_kill_process(struct oom_control *oc, struct task_struct *p,
 	unsigned int victim_points = 0;
 	static DEFINE_RATELIMIT_STATE(oom_rs, DEFAULT_RATELIMIT_INTERVAL,
 					      DEFAULT_RATELIMIT_BURST);
-	bool can_oom_reap = true;
 
 	/*
 	 * If the task is already exiting, don't alarm the sysadmin or kill
@@ -833,22 +828,18 @@ void oom_kill_process(struct oom_control *oc, struct task_struct *p,
 			continue;
 		if (same_thread_group(p, victim))
 			continue;
-		if (unlikely(p->flags & PF_KTHREAD) || is_global_init(p) ||
-		    p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) {
-			/*
-			 * We cannot use oom_reaper for the mm shared by this
-			 * process because it wouldn't get killed and so the
-			 * memory might be still used.
-			 */
-			can_oom_reap = false;
+		if (unlikely(p->flags & PF_KTHREAD))
 			continue;
-		}
+		if (is_global_init(p))
+			continue;
+		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
+			continue;
+
 		do_send_sig_info(SIGKILL, SEND_SIG_FORCED, p, true);
 	}
 	rcu_read_unlock();
 
-	if (can_oom_reap)
-		wake_oom_reaper(victim);
+	try_oom_reaper(victim);
 
 	mmdrop(mm);
 	put_task_struct(victim);
-- 
1.8.3.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-04-15 12:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-14 10:56 [PATCH] mm,oom_reaper: Use try_oom_reaper() for reapability test Tetsuo Handa
2016-04-14 10:56 ` [PATCH] mm,oom: Clarify reason to kill other threads sharing the vitctim's memory Tetsuo Handa
2016-04-14 11:31   ` Michal Hocko
2016-04-14 15:03     ` [PATCH] mm,oom: Clarify reason to kill other threads sharing thevitctim's memory Tetsuo Handa
2016-04-14 15:18       ` Michal Hocko
2016-04-14 21:59         ` [PATCH] mm,oom: Clarify reason to kill other threads sharing the vitctim's memory Tetsuo Handa
2016-04-14 11:21 ` [PATCH] mm,oom_reaper: Use try_oom_reaper() for reapability test Michal Hocko
2016-04-14 11:34   ` Tetsuo Handa
2016-04-14 12:01     ` Michal Hocko
2016-04-14 12:34       ` Michal Hocko
2016-04-14 14:01         ` Tetsuo Handa
2016-04-14 14:30           ` Michal Hocko
2016-04-15 12:11   ` Tetsuo Handa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.