diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 087e0c1b2fdf..aaa360a50dfd 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -1165,6 +1165,10 @@ void pagefault_out_of_memory(void) void add_to_oom_reaper(struct task_struct *p) { + static DEFINE_RATELIMIT_STATE(reaper_rs, DEFAULT_RATELIMIT_INTERVAL, + DEFAULT_RATELIMIT_BURST); + struct oom_control oc = {}; + if (!sysctl_reap_mem_on_sigkill) return; @@ -1178,5 +1182,13 @@ void add_to_oom_reaper(struct task_struct *p) wake_oom_reaper(p); } task_unlock(p); + + if (__ratelimit(&reaper_rs) && p->signal->oom_score_adj == 0) { + show_mem(SHOW_MEM_FILTER_NODES, NULL); + show_mem_call_notifiers(); + if (sysctl_oom_dump_tasks) + dump_tasks(&oc); + } + put_task_struct(p); }