From: Michal Hocko <mhocko@suse.cz> To: <linux-mm@kvack.org> Cc: Andrew Morton <akpm@linux-foundation.org>, Tejun Heo <tj@kernel.org>, "\\\"Rafael J. Wysocki\\\"" <rjw@rjwysocki.net>, David Rientjes <rientjes@google.com>, Johannes Weiner <hannes@cmpxchg.org>, Oleg Nesterov <oleg@redhat.com>, Cong Wang <xiyou.wangcong@gmail.com>, LKML <linux-kernel@vger.kernel.org>, linux-pm@vger.kernel.org Subject: [PATCH -v2 2/5] OOM: thaw the OOM victim if it is frozen Date: Fri, 5 Dec 2014 17:41:44 +0100 [thread overview] Message-ID: <1417797707-31699-3-git-send-email-mhocko@suse.cz> (raw) In-Reply-To: <1417797707-31699-1-git-send-email-mhocko@suse.cz> oom_kill_process only sets TIF_MEMDIE flag and sends a signal to the victim. This is basically noop when the task is frozen though because the task sleeps in uninterruptible sleep. The victim is eventually thawed later when oom_scan_process_thread meets the task again in a later OOM invocation so the OOM killer doesn't live lock. But this is less than optimal. Let's add the frozen check and thaw the task right before we send SIGKILL to the victim. The check and thawing in oom_scan_process_thread has to stay because the task might got access to memory reserves even without an explicit SIGKILL from oom_kill_process (e.g. it already has fatal signal pending or it is exiting already). Signed-off-by: Michal Hocko <mhocko@suse.cz> --- mm/oom_kill.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index c75b37d59a32..8874058d62db 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -545,6 +545,8 @@ void oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order, rcu_read_unlock(); mark_tsk_oom_victim(victim); + if (frozen(victim)) + __thaw_task(victim); do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true); put_task_struct(victim); } -- 2.1.3
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@suse.cz> To: linux-mm@kvack.org Cc: Andrew Morton <akpm@linux-foundation.org>, Tejun Heo <tj@kernel.org>, "\\\"Rafael J. Wysocki\\\"" <rjw@rjwysocki.net>, David Rientjes <rientjes@google.com>, Johannes Weiner <hannes@cmpxchg.org>, Oleg Nesterov <oleg@redhat.com>, Cong Wang <xiyou.wangcong@gmail.com>, LKML <linux-kernel@vger.kernel.org>, linux-pm@vger.kernel.org Subject: [PATCH -v2 2/5] OOM: thaw the OOM victim if it is frozen Date: Fri, 5 Dec 2014 17:41:44 +0100 [thread overview] Message-ID: <1417797707-31699-3-git-send-email-mhocko@suse.cz> (raw) In-Reply-To: <1417797707-31699-1-git-send-email-mhocko@suse.cz> oom_kill_process only sets TIF_MEMDIE flag and sends a signal to the victim. This is basically noop when the task is frozen though because the task sleeps in uninterruptible sleep. The victim is eventually thawed later when oom_scan_process_thread meets the task again in a later OOM invocation so the OOM killer doesn't live lock. But this is less than optimal. Let's add the frozen check and thaw the task right before we send SIGKILL to the victim. The check and thawing in oom_scan_process_thread has to stay because the task might got access to memory reserves even without an explicit SIGKILL from oom_kill_process (e.g. it already has fatal signal pending or it is exiting already). Signed-off-by: Michal Hocko <mhocko@suse.cz> --- mm/oom_kill.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index c75b37d59a32..8874058d62db 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -545,6 +545,8 @@ void oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order, rcu_read_unlock(); mark_tsk_oom_victim(victim); + if (frozen(victim)) + __thaw_task(victim); do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true); put_task_struct(victim); } -- 2.1.3 -- 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>
next prev parent reply other threads:[~2014-12-05 16:42 UTC|newest] Thread overview: 190+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-10-21 7:27 [PATCH 0/4 -v2] OOM vs. freezer interaction fixes Michal Hocko 2014-10-21 7:27 ` Michal Hocko 2014-10-21 7:27 ` Michal Hocko 2014-10-21 7:27 ` [PATCH 1/4] freezer: Do not freeze tasks killed by OOM killer Michal Hocko 2014-10-21 7:27 ` Michal Hocko 2014-10-21 12:04 ` Rafael J. Wysocki 2014-10-21 12:04 ` Rafael J. Wysocki 2014-10-21 7:27 ` [PATCH 2/4] freezer: remove obsolete comments in __thaw_task() Michal Hocko 2014-10-21 7:27 ` Michal Hocko 2014-10-21 12:04 ` Rafael J. Wysocki 2014-10-21 12:04 ` Rafael J. Wysocki 2014-10-21 7:27 ` [PATCH 3/4] OOM, PM: OOM killed task shouldn't escape PM suspend Michal Hocko 2014-10-21 7:27 ` Michal Hocko 2014-10-21 12:09 ` Rafael J. Wysocki 2014-10-21 12:09 ` Rafael J. Wysocki 2014-10-21 13:14 ` Michal Hocko 2014-10-21 13:14 ` Michal Hocko 2014-10-21 13:42 ` Rafael J. Wysocki 2014-10-21 13:42 ` Rafael J. Wysocki 2014-10-21 14:11 ` Michal Hocko 2014-10-21 14:11 ` Michal Hocko 2014-10-21 14:41 ` Rafael J. Wysocki 2014-10-21 14:41 ` Rafael J. Wysocki 2014-10-21 14:29 ` Michal Hocko 2014-10-21 14:29 ` Michal Hocko 2014-10-22 14:39 ` Rafael J. Wysocki 2014-10-22 14:39 ` Rafael J. Wysocki 2014-10-22 14:22 ` Michal Hocko 2014-10-22 14:22 ` Michal Hocko 2014-10-22 21:18 ` Rafael J. Wysocki 2014-10-22 21:18 ` Rafael J. Wysocki 2014-10-26 18:49 ` Pavel Machek 2014-10-26 18:49 ` Pavel Machek 2014-11-04 19:27 ` Tejun Heo 2014-11-04 19:27 ` Tejun Heo 2014-11-05 12:46 ` Michal Hocko 2014-11-05 12:46 ` Michal Hocko 2014-11-05 13:02 ` Tejun Heo 2014-11-05 13:02 ` Tejun Heo 2014-11-05 13:31 ` Michal Hocko 2014-11-05 13:31 ` Michal Hocko 2014-11-05 13:42 ` Michal Hocko 2014-11-05 13:42 ` Michal Hocko 2014-11-05 14:14 ` Michal Hocko 2014-11-05 14:14 ` Michal Hocko 2014-11-05 14:14 ` Michal Hocko 2014-11-05 15:45 ` Michal Hocko 2014-11-05 15:45 ` Michal Hocko 2014-11-05 15:44 ` Tejun Heo 2014-11-05 15:44 ` Tejun Heo 2014-11-05 16:01 ` Michal Hocko 2014-11-05 16:01 ` Michal Hocko 2014-11-05 16:29 ` Tejun Heo 2014-11-05 16:29 ` Tejun Heo 2014-11-05 16:39 ` Michal Hocko 2014-11-05 16:39 ` Michal Hocko 2014-11-05 16:54 ` Tejun Heo 2014-11-05 16:54 ` Tejun Heo 2014-11-05 17:01 ` Tejun Heo 2014-11-05 17:01 ` Tejun Heo 2014-11-06 13:05 ` Michal Hocko 2014-11-06 13:05 ` Michal Hocko 2014-11-06 13:05 ` Michal Hocko 2014-11-06 15:09 ` Tejun Heo 2014-11-06 15:09 ` Tejun Heo 2014-11-06 16:01 ` Michal Hocko 2014-11-06 16:01 ` Michal Hocko 2014-11-06 16:12 ` Tejun Heo 2014-11-06 16:12 ` Tejun Heo 2014-11-06 16:31 ` Michal Hocko 2014-11-06 16:31 ` Michal Hocko 2014-11-06 16:33 ` Tejun Heo 2014-11-06 16:33 ` Tejun Heo 2014-11-06 16:58 ` Michal Hocko 2014-11-06 16:58 ` Michal Hocko 2014-11-05 17:46 ` Michal Hocko 2014-11-05 17:46 ` Michal Hocko 2014-11-05 17:55 ` Tejun Heo 2014-11-05 17:55 ` Tejun Heo 2014-11-06 12:49 ` Michal Hocko 2014-11-06 12:49 ` Michal Hocko 2014-11-06 15:01 ` Tejun Heo 2014-11-06 15:01 ` Tejun Heo 2014-11-06 16:02 ` Michal Hocko 2014-11-06 16:02 ` Michal Hocko 2014-11-06 16:02 ` Michal Hocko 2014-11-06 16:28 ` Tejun Heo 2014-11-06 16:28 ` Tejun Heo 2014-11-10 16:30 ` Michal Hocko 2014-11-10 16:30 ` Michal Hocko 2014-11-12 18:58 ` [RFC 0/4] OOM vs PM freezer fixes Michal Hocko 2014-11-12 18:58 ` Michal Hocko 2014-11-12 18:58 ` [RFC 1/4] OOM, PM: Do not miss OOM killed frozen tasks Michal Hocko 2014-11-12 18:58 ` Michal Hocko 2014-11-14 17:55 ` Tejun Heo 2014-11-14 17:55 ` Tejun Heo 2014-11-12 18:58 ` [RFC 2/4] OOM, PM: make OOM detection in the freezer path raceless Michal Hocko 2014-11-12 18:58 ` Michal Hocko 2014-11-12 18:58 ` [RFC 3/4] OOM, PM: handle pm freezer as an OOM victim correctly Michal Hocko 2014-11-12 18:58 ` Michal Hocko 2014-11-12 18:58 ` [RFC 4/4] OOM: thaw the OOM victim if it is frozen Michal Hocko 2014-11-12 18:58 ` Michal Hocko 2014-11-14 20:14 ` [RFC 0/4] OOM vs PM freezer fixes Tejun Heo 2014-11-14 20:14 ` Tejun Heo 2014-11-18 21:08 ` Michal Hocko 2014-11-18 21:08 ` Michal Hocko 2014-11-18 21:10 ` [RFC 1/2] oom: add helper for setting and clearing TIF_MEMDIE Michal Hocko 2014-11-18 21:10 ` Michal Hocko 2014-11-18 21:10 ` [RFC 2/2] OOM, PM: make OOM detection in the freezer path raceless Michal Hocko 2014-11-18 21:10 ` Michal Hocko 2014-11-27 0:47 ` Rafael J. Wysocki 2014-11-27 0:47 ` Rafael J. Wysocki 2014-12-02 22:08 ` Tejun Heo 2014-12-02 22:08 ` Tejun Heo 2014-12-04 14:16 ` Michal Hocko 2014-12-04 14:16 ` Michal Hocko 2014-12-04 14:44 ` Tejun Heo 2014-12-04 14:44 ` Tejun Heo 2014-12-04 16:56 ` Michal Hocko 2014-12-04 16:56 ` Michal Hocko 2014-12-04 17:18 ` Michal Hocko 2014-12-04 17:18 ` Michal Hocko 2014-12-05 16:41 ` [PATCH 0/4] OOM vs PM freezer fixes Michal Hocko 2014-12-05 16:41 ` Michal Hocko 2014-12-05 16:41 ` [PATCH -v2 1/5] oom: add helpers for setting and clearing TIF_MEMDIE Michal Hocko 2014-12-05 16:41 ` Michal Hocko 2014-12-06 12:56 ` Tejun Heo 2014-12-06 12:56 ` Tejun Heo 2014-12-07 10:13 ` Michal Hocko 2014-12-07 10:13 ` Michal Hocko 2015-01-07 17:57 ` Tejun Heo 2015-01-07 17:57 ` Tejun Heo 2015-01-07 18:23 ` Michal Hocko 2015-01-07 18:23 ` Michal Hocko 2014-12-05 16:41 ` Michal Hocko [this message] 2014-12-05 16:41 ` [PATCH -v2 2/5] OOM: thaw the OOM victim if it is frozen Michal Hocko 2014-12-06 13:06 ` Tejun Heo 2014-12-06 13:06 ` Tejun Heo 2014-12-07 10:24 ` Michal Hocko 2014-12-07 10:24 ` Michal Hocko 2014-12-07 10:45 ` Michal Hocko 2014-12-07 10:45 ` Michal Hocko 2014-12-07 13:59 ` Tejun Heo 2014-12-07 13:59 ` Tejun Heo 2014-12-07 18:55 ` Michal Hocko 2014-12-07 18:55 ` Michal Hocko 2014-12-05 16:41 ` [PATCH -v2 3/5] PM: convert printk to pr_* equivalent Michal Hocko 2014-12-05 16:41 ` Michal Hocko 2014-12-05 22:40 ` Rafael J. Wysocki 2014-12-05 22:40 ` Rafael J. Wysocki 2014-12-07 10:26 ` Michal Hocko 2014-12-07 10:26 ` Michal Hocko 2014-12-06 13:08 ` Tejun Heo 2014-12-06 13:08 ` Tejun Heo 2014-12-05 16:41 ` [PATCH -v2 4/5] sysrq: " Michal Hocko 2014-12-05 16:41 ` Michal Hocko 2014-12-06 13:09 ` Tejun Heo 2014-12-06 13:09 ` Tejun Heo 2014-12-05 16:41 ` [PATCH -v2 5/5] OOM, PM: make OOM detection in the freezer path raceless Michal Hocko 2014-12-05 16:41 ` Michal Hocko 2014-12-06 13:11 ` Tejun Heo 2014-12-06 13:11 ` Tejun Heo 2014-12-07 10:11 ` Michal Hocko 2014-12-07 10:11 ` Michal Hocko 2015-01-07 18:41 ` Tejun Heo 2015-01-07 18:41 ` Tejun Heo 2015-01-07 18:48 ` Michal Hocko 2015-01-07 18:48 ` Michal Hocko 2015-01-08 11:51 ` Michal Hocko 2015-01-08 11:51 ` Michal Hocko 2014-12-07 10:09 ` [PATCH 0/4] OOM vs PM freezer fixes Michal Hocko 2014-12-07 10:09 ` Michal Hocko 2014-12-07 13:55 ` Tejun Heo 2014-12-07 13:55 ` Tejun Heo 2014-12-07 19:00 ` Michal Hocko 2014-12-07 19:00 ` Michal Hocko 2014-12-18 16:27 ` Michal Hocko 2014-12-18 16:27 ` Michal Hocko 2014-11-05 14:55 ` [PATCH 3/4] OOM, PM: OOM killed task shouldn't escape PM suspend Michal Hocko 2014-11-05 14:55 ` Michal Hocko 2014-10-26 18:40 ` Pavel Machek 2014-10-26 18:40 ` Pavel Machek 2014-10-21 7:27 ` [PATCH 4/4] PM: convert do_each_thread to for_each_process_thread Michal Hocko 2014-10-21 7:27 ` Michal Hocko 2014-10-21 12:10 ` Rafael J. Wysocki 2014-10-21 12:10 ` Rafael J. Wysocki 2014-10-21 13:19 ` Michal Hocko 2014-10-21 13:19 ` Michal Hocko 2014-10-21 13:43 ` Rafael J. Wysocki 2014-10-21 13:43 ` Rafael J. Wysocki
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1417797707-31699-3-git-send-email-mhocko@suse.cz \ --to=mhocko@suse.cz \ --cc=akpm@linux-foundation.org \ --cc=hannes@cmpxchg.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-pm@vger.kernel.org \ --cc=oleg@redhat.com \ --cc=rientjes@google.com \ --cc=rjw@rjwysocki.net \ --cc=tj@kernel.org \ --cc=xiyou.wangcong@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.