Messages in this thread | | | Subject | Re: [PATCH 2/2] oom-clear-tif_memdie-after-oom_reaper-managed-to-unmap-the-address-space-fix | From | Tetsuo Handa <> | Date | Thu, 10 Mar 2016 07:21:58 +0900 |
| |
Andrew Morton wrote: > I found the below patch lying around but I didn't queue it properly. > Is it legit?
I think that patch wants patch description updated. Not testing pure noise, but causing possible livelock. http://lkml.kernel.org/r/20160217143917.GP29196@dhcp22.suse.cz
> > > From: Johannes Weiner <hannes@cmpxchg.org> > Subject: oom-clear-tif_memdie-after-oom_reaper-managed-to-unmap-the-address-space-fix > > When the OOM killer scans tasks and encounters a PF_EXITING one, it > force-selects that one regardless of the score. Is there a possibility > that the task might hang after it has set PF_EXITING? In that case the > OOM killer should be able to move on to the next task. > > Frankly, I don't even know why we check for exiting tasks in the OOM > killer. We've tried direct reclaim at least 15 times by the time we > decide the system is OOM, there was plenty of time to exit and free > memory; and a task might exit voluntarily right after we issue a kill. > This is testing pure noise. > > Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > Cc: Michal Hocko <mhocko@suse.com> > Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Cc: Mel Gorman <mgorman@suse.de> > Cc: David Rientjes <rientjes@google.com> > Cc: Oleg Nesterov <oleg@redhat.com> > Cc: Hugh Dickins <hughd@google.com> > Cc: Andrea Argangeli <andrea@kernel.org> > Cc: Rik van Riel <riel@redhat.com> > Cc: Sasha Levin <sasha.levin@oracle.com> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > --- > > mm/oom_kill.c | 3 --- > 1 file changed, 3 deletions(-) > > diff -puN mm/oom_kill.c~oom-clear-tif_memdie-after-oom_reaper-managed-to-unmap-the-address-space-fix mm/oom_kill.c > --- a/mm/oom_kill.c~oom-clear-tif_memdie-after-oom_reaper-managed-to-unmap-the-address-space-fix > +++ a/mm/oom_kill.c > @@ -292,9 +292,6 @@ enum oom_scan_t oom_scan_process_thread( > if (oom_task_origin(task)) > return OOM_SCAN_SELECT; > > - if (task_will_free_mem(task) && !is_sysrq_oom(oc)) > - return OOM_SCAN_ABORT; > - > return OOM_SCAN_OK; > } > > _ > >
| |