From: Michal Hocko <mhocko@kernel.org> To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc: linux-mm@kvack.org, rientjes@google.com, oleg@redhat.com, andrea@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH] mm, oom: allow oom reaper to race with exit_mmap Date: Tue, 27 Jun 2017 15:55:55 +0200 [thread overview] Message-ID: <20170627135555.GN28072@dhcp22.suse.cz> (raw) In-Reply-To: <201706272231.ABH00025.FMOFOJSVLOQHFt@I-love.SAKURA.ne.jp> On Tue 27-06-17 22:31:58, Tetsuo Handa wrote: > Michal Hocko wrote: > > On Tue 27-06-17 20:39:28, Tetsuo Handa wrote: > > > Michal Hocko wrote: > > > > > I wonder why you prefer timeout based approach. Your patch will after all > > > > > set MMF_OOM_SKIP if operations between down_write() and up_write() took > > > > > more than one second. > > > > > > > > if we reach down_write then we have unmapped the address space in > > > > exit_mmap and oom reaper cannot do much more. > > > > > > So, by the time down_write() is called, majority of memory is already released, isn't it? > > > > In most cases yes. To be put it in other words. By the time exit_mmap > > takes down_write there is nothing more oom reaper could reclaim. > > > Then, aren't there two exceptions which your patch cannot guarantee; > down_write(&mm->mmap_sem) in __ksm_exit() and __khugepaged_exit() ? yes it cannot. Those would be quite rare situations. Somebody holding the mmap sem would have to block those to wait for too long (that too long might be for ever actually if we are livelocked). We cannot rule that out of course and I would argue that it would be more appropriate to simply go after another task in those rare cases. There is not much we can really do. At some point the oom reaper has to give up and move on otherwise we are back to square one when OOM could deadlock... Maybe we can actually get rid of this down_write but I would go that way only when it proves to be a real issue. > Since for some reason exit_mmap() cannot be brought to before > ksm_exit(mm)/khugepaged_exit(mm) calls, 9ba692948008 ("ksm: fix oom deadlock") would tell you more about the ordering and the motivation. > > ksm_exit(mm); > khugepaged_exit(mm); /* must run before exit_mmap */ > exit_mmap(mm); > > shouldn't we try __oom_reap_task_mm() before calling these down_write() > if mm is OOM victim's? This is what we try. We simply try to get mmap_sem for read and do our work as soon as possible with the proposed patch. This is already an improvement, no? -- Michal Hocko SUSE Labs
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org> To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc: linux-mm@kvack.org, rientjes@google.com, oleg@redhat.com, andrea@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH] mm, oom: allow oom reaper to race with exit_mmap Date: Tue, 27 Jun 2017 15:55:55 +0200 [thread overview] Message-ID: <20170627135555.GN28072@dhcp22.suse.cz> (raw) In-Reply-To: <201706272231.ABH00025.FMOFOJSVLOQHFt@I-love.SAKURA.ne.jp> On Tue 27-06-17 22:31:58, Tetsuo Handa wrote: > Michal Hocko wrote: > > On Tue 27-06-17 20:39:28, Tetsuo Handa wrote: > > > Michal Hocko wrote: > > > > > I wonder why you prefer timeout based approach. Your patch will after all > > > > > set MMF_OOM_SKIP if operations between down_write() and up_write() took > > > > > more than one second. > > > > > > > > if we reach down_write then we have unmapped the address space in > > > > exit_mmap and oom reaper cannot do much more. > > > > > > So, by the time down_write() is called, majority of memory is already released, isn't it? > > > > In most cases yes. To be put it in other words. By the time exit_mmap > > takes down_write there is nothing more oom reaper could reclaim. > > > Then, aren't there two exceptions which your patch cannot guarantee; > down_write(&mm->mmap_sem) in __ksm_exit() and __khugepaged_exit() ? yes it cannot. Those would be quite rare situations. Somebody holding the mmap sem would have to block those to wait for too long (that too long might be for ever actually if we are livelocked). We cannot rule that out of course and I would argue that it would be more appropriate to simply go after another task in those rare cases. There is not much we can really do. At some point the oom reaper has to give up and move on otherwise we are back to square one when OOM could deadlock... Maybe we can actually get rid of this down_write but I would go that way only when it proves to be a real issue. > Since for some reason exit_mmap() cannot be brought to before > ksm_exit(mm)/khugepaged_exit(mm) calls, 9ba692948008 ("ksm: fix oom deadlock") would tell you more about the ordering and the motivation. > > ksm_exit(mm); > khugepaged_exit(mm); /* must run before exit_mmap */ > exit_mmap(mm); > > shouldn't we try __oom_reap_task_mm() before calling these down_write() > if mm is OOM victim's? This is what we try. We simply try to get mmap_sem for read and do our work as soon as possible with the proposed patch. This is already an improvement, no? -- Michal Hocko SUSE Labs -- 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:[~2017-06-27 13:56 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-06-26 13:03 [RFC PATCH] mm, oom: allow oom reaper to race with exit_mmap Michal Hocko 2017-06-26 13:03 ` Michal Hocko 2017-06-27 10:52 ` Tetsuo Handa 2017-06-27 10:52 ` Tetsuo Handa 2017-06-27 11:26 ` Michal Hocko 2017-06-27 11:26 ` Michal Hocko 2017-06-27 11:39 ` Tetsuo Handa 2017-06-27 11:39 ` Tetsuo Handa 2017-06-27 12:03 ` Michal Hocko 2017-06-27 12:03 ` Michal Hocko 2017-06-27 13:31 ` Tetsuo Handa 2017-06-27 13:31 ` Tetsuo Handa 2017-06-27 13:55 ` Michal Hocko [this message] 2017-06-27 13:55 ` Michal Hocko 2017-06-27 14:26 ` Tetsuo Handa 2017-06-27 14:26 ` Tetsuo Handa 2017-06-27 14:41 ` Michal Hocko 2017-06-27 14:41 ` Michal Hocko 2017-07-11 0:01 ` David Rientjes 2017-07-11 0:01 ` David Rientjes 2017-06-29 8:46 ` Michal Hocko 2017-06-29 8:46 ` Michal Hocko 2017-07-19 5:55 ` Michal Hocko 2017-07-19 5:55 ` Michal Hocko 2017-07-20 1:18 ` Hugh Dickins 2017-07-20 1:18 ` Hugh Dickins 2017-07-20 13:05 ` Michal Hocko 2017-07-20 13:05 ` Michal Hocko 2017-07-24 6:39 ` Hugh Dickins 2017-07-24 6:39 ` Hugh Dickins 2017-07-10 23:55 ` David Rientjes 2017-07-10 23:55 ` David Rientjes 2017-07-11 6:58 ` Michal Hocko 2017-07-11 6:58 ` Michal Hocko 2017-07-11 20:40 ` David Rientjes 2017-07-11 20:40 ` David Rientjes 2017-07-12 7:12 ` Michal Hocko 2017-07-12 7:12 ` Michal Hocko
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=20170627135555.GN28072@dhcp22.suse.cz \ --to=mhocko@kernel.org \ --cc=akpm@linux-foundation.org \ --cc=andrea@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=oleg@redhat.com \ --cc=penguin-kernel@I-love.SAKURA.ne.jp \ --cc=rientjes@google.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.