Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1179774
| From | Michal Hocko <mhocko@suse.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/4] oom: Do not invoke oom notifiers on sysrq+f |
| Date | 2015-07-08 15:10 +0200 |
| Message-ID | <pJXgU-38d-71@gated-at.bofh.it> (permalink) |
| References | <pJXgR-38d-11@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Michal Hocko <mhocko@suse.cz>
A github user rfjakob has reported the following issue via IRC.
<rfjakob> Manually triggering the OOM killer does not work anymore in 4.0.5
<rfjakob> This is what it looks like: https://gist.github.com/rfjakob/346b7dc611fc3cdf4011
<rfjakob> Basically, what happens is that the GPU driver frees some memory, that satisfies the OOM killer
<rfjakob> But the memory is allocated immediately again, and in the, no processes are killed no matter how often you trigger the oom killer
<rfjakob> "in the end"
Quoting from the github:
"
[19291.202062] sysrq: SysRq : Manual OOM execution
[19291.208335] Purging GPU memory, 74399744 bytes freed, 8728576 bytes still pinned.
[19291.390767] sysrq: SysRq : Manual OOM execution
[19291.396792] Purging GPU memory, 74452992 bytes freed, 8728576 bytes still pinned.
[19291.560349] sysrq: SysRq : Manual OOM execution
[19291.566018] Purging GPU memory, 75489280 bytes freed, 8728576 bytes still pinned.
[19291.729944] sysrq: SysRq : Manual OOM execution
[19291.735686] Purging GPU memory, 74399744 bytes freed, 8728576 bytes still pinned.
[19291.918637] sysrq: SysRq : Manual OOM execution
[19291.924299] Purging GPU memory, 74403840 bytes freed, 8728576 bytes still pinned.
"
The issue is that sysrq+f (force_kill) gets confused by the regular OOM
heuristic which tries to prevent from OOM killer if some of the oom
notifier can relase a memory. The heuristic doesn't make much sense for
the sysrq+f path because this one is used by the administrator to kill
a memory hog.
Reported-by: Jakob Unterwurzacher <jakobunt@gmail.com>
Signed-off-by: Michal Hocko <mhocko@suse.cz>
---
mm/oom_kill.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index f2737d66f66a..0b1b0b25f928 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -661,10 +661,12 @@ bool out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask,
if (oom_killer_disabled)
return false;
- blocking_notifier_call_chain(&oom_notify_list, 0, &freed);
- if (freed > 0)
- /* Got some memory back in the last second. */
- goto out;
+ if (!force_kill) {
+ blocking_notifier_call_chain(&oom_notify_list, 0, &freed);
+ if (freed > 0)
+ /* Got some memory back in the last second. */
+ goto out;
+ }
/*
* If current has a pending SIGKILL or is exiting, then automatically
--
2.1.4
--
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/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/4] oom: sysrq+f fixes + cleanups Michal Hocko <mhocko@suse.com> - 2015-07-08 15:10 +0200
[PATCH 3/4] mm, oom: organize oom context into struct Michal Hocko <mhocko@suse.com> - 2015-07-08 15:10 +0200
Re: [PATCH 3/4] mm, oom: organize oom context into struct David Rientjes <rientjes@google.com> - 2015-07-09 01:40 +0200
Re: [PATCH 3/4] mm, oom: organize oom context into struct Michal Hocko <mhocko@kernel.org> - 2015-07-09 11:00 +0200
[PATCH 2/4] oom: Do not invoke oom notifiers on sysrq+f Michal Hocko <mhocko@suse.com> - 2015-07-08 15:10 +0200
Re: [PATCH 2/4] oom: Do not invoke oom notifiers on sysrq+f David Rientjes <rientjes@google.com> - 2015-07-09 01:40 +0200
Re: [PATCH 2/4] oom: Do not invoke oom notifiers on sysrq+f Michal Hocko <mhocko@kernel.org> - 2015-07-09 11:00 +0200
Re: [PATCH 2/4] oom: Do not invoke oom notifiers on sysrq+f Michal Hocko <mhocko@kernel.org> - 2015-07-15 11:50 +0200
csiph-web