From: Vlastimil Babka <vbabka@suse.cz> To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>, mhocko@kernel.org Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, mgorman@suse.de, rientjes@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/2] mm, oom: do not enfore OOM killer for __GFP_NOFAIL automatically Date: Tue, 6 Dec 2016 12:03:02 +0100 [thread overview] Message-ID: <01a495b8-36f6-28f5-5a55-089f4860747d@suse.cz> (raw) In-Reply-To: <201612061938.DDD73970.QFHOFJStFOLVOM@I-love.SAKURA.ne.jp> On 12/06/2016 11:38 AM, Tetsuo Handa wrote: >> >> So we are somewhere in the middle between pre-mature and pointless >> system disruption (GFP_NOFS with a lots of metadata or lowmem request) >> where the OOM killer even might not help and potential lockup which is >> inevitable with the current design. Dunno about you but I would rather >> go with the first option. To be honest I really fail to understand your >> line of argumentation. We have this >> do { >> cond_resched(); >> } while (!(page = alloc_page(GFP_NOFS))); >> vs. >> page = alloc_page(GFP_NOFS | __GFP_NOFAIL); >> >> the first one doesn't invoke OOM killer while the later does. This >> discrepancy just cannot make any sense... The same is true for >> >> alloc_page(GFP_DMA) vs alloc_page(GFP_DMA|__GFP_NOFAIL) >> >> Now we can discuss whether it is a _good_ idea to not invoke OOM killer >> for those exceptions but whatever we do __GFP_NOFAIL is not a way to >> give such a subtle side effect. Or do you disagree even with that? > > "[PATCH 1/2] mm: consolidate GFP_NOFAIL checks in the allocator slowpath" > silently changes __GFP_NOFAIL vs. __GFP_NORETRY priority. I guess that wasn't intended? > Currently, __GFP_NORETRY is stronger than __GFP_NOFAIL; __GFP_NOFAIL > allocation requests fail without invoking the OOM killer when both > __GFP_NORETRY and __GFP_NOFAIL are given. > > With [PATCH 1/2], __GFP_NOFAIL becomes stronger than __GFP_NORETRY; > __GFP_NOFAIL allocation requests will loop forever without invoking > the OOM killer when both __GFP_NORETRY and __GFP_NOFAIL are given. Does such combination of flag make sense? Should we warn about it, or even silently remove __GFP_NORETRY in such case? > Those callers which prefer lockup over panic can specify both > __GFP_NORETRY and __GFP_NOFAIL. What lockup exactly, if __GFP_NORETRY did lead to fail?
WARNING: multiple messages have this Message-ID (diff)
From: Vlastimil Babka <vbabka@suse.cz> To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>, mhocko@kernel.org Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, mgorman@suse.de, rientjes@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/2] mm, oom: do not enfore OOM killer for __GFP_NOFAIL automatically Date: Tue, 6 Dec 2016 12:03:02 +0100 [thread overview] Message-ID: <01a495b8-36f6-28f5-5a55-089f4860747d@suse.cz> (raw) In-Reply-To: <201612061938.DDD73970.QFHOFJStFOLVOM@I-love.SAKURA.ne.jp> On 12/06/2016 11:38 AM, Tetsuo Handa wrote: >> >> So we are somewhere in the middle between pre-mature and pointless >> system disruption (GFP_NOFS with a lots of metadata or lowmem request) >> where the OOM killer even might not help and potential lockup which is >> inevitable with the current design. Dunno about you but I would rather >> go with the first option. To be honest I really fail to understand your >> line of argumentation. We have this >> do { >> cond_resched(); >> } while (!(page = alloc_page(GFP_NOFS))); >> vs. >> page = alloc_page(GFP_NOFS | __GFP_NOFAIL); >> >> the first one doesn't invoke OOM killer while the later does. This >> discrepancy just cannot make any sense... The same is true for >> >> alloc_page(GFP_DMA) vs alloc_page(GFP_DMA|__GFP_NOFAIL) >> >> Now we can discuss whether it is a _good_ idea to not invoke OOM killer >> for those exceptions but whatever we do __GFP_NOFAIL is not a way to >> give such a subtle side effect. Or do you disagree even with that? > > "[PATCH 1/2] mm: consolidate GFP_NOFAIL checks in the allocator slowpath" > silently changes __GFP_NOFAIL vs. __GFP_NORETRY priority. I guess that wasn't intended? > Currently, __GFP_NORETRY is stronger than __GFP_NOFAIL; __GFP_NOFAIL > allocation requests fail without invoking the OOM killer when both > __GFP_NORETRY and __GFP_NOFAIL are given. > > With [PATCH 1/2], __GFP_NOFAIL becomes stronger than __GFP_NORETRY; > __GFP_NOFAIL allocation requests will loop forever without invoking > the OOM killer when both __GFP_NORETRY and __GFP_NOFAIL are given. Does such combination of flag make sense? Should we warn about it, or even silently remove __GFP_NORETRY in such case? > Those callers which prefer lockup over panic can specify both > __GFP_NORETRY and __GFP_NOFAIL. What lockup exactly, if __GFP_NORETRY did lead to fail? -- 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:[~2016-12-06 11:03 UTC|newest] Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-12-01 15:25 [PATCH 0/2] GFP_NOFAIL cleanups Michal Hocko 2016-12-01 15:25 ` Michal Hocko 2016-12-01 15:25 ` [PATCH 1/2] mm: consolidate GFP_NOFAIL checks in the allocator slowpath Michal Hocko 2016-12-01 15:25 ` Michal Hocko 2016-12-01 15:25 ` [PATCH 2/2] mm, oom: do not enfore OOM killer for __GFP_NOFAIL automatically Michal Hocko 2016-12-01 15:25 ` Michal Hocko 2016-12-02 7:23 ` Vlastimil Babka 2016-12-02 7:23 ` Vlastimil Babka 2016-12-05 13:45 ` Tetsuo Handa 2016-12-05 13:45 ` Tetsuo Handa 2016-12-05 14:10 ` Michal Hocko 2016-12-05 14:10 ` Michal Hocko 2016-12-06 8:27 ` Michal Hocko 2016-12-06 8:27 ` Michal Hocko 2016-12-06 10:38 ` Tetsuo Handa 2016-12-06 10:38 ` Tetsuo Handa 2016-12-06 11:03 ` Vlastimil Babka [this message] 2016-12-06 11:03 ` Vlastimil Babka 2016-12-06 19:25 ` Michal Hocko 2016-12-06 19:25 ` Michal Hocko 2016-12-06 19:22 ` Michal Hocko 2016-12-06 19:22 ` Michal Hocko 2016-12-08 12:53 ` Tetsuo Handa 2016-12-08 12:53 ` Tetsuo Handa 2016-12-08 13:47 ` Michal Hocko 2016-12-08 13:47 ` Michal Hocko 2016-12-11 11:23 ` Tetsuo Handa 2016-12-11 11:23 ` Tetsuo Handa 2016-12-11 13:53 ` Tetsuo Handa 2016-12-11 13:53 ` Tetsuo Handa 2016-12-12 8:52 ` Michal Hocko 2016-12-12 8:52 ` Michal Hocko 2016-12-12 8:48 ` Michal Hocko 2016-12-12 8:48 ` Michal Hocko 2016-12-14 10:34 ` Michal Hocko 2016-12-14 10:34 ` Michal Hocko 2016-12-16 7:39 OOM: Better, but still there on 4.9 Michal Hocko 2016-12-16 15:58 ` OOM: Better, but still there on Michal Hocko 2016-12-16 15:58 ` [PATCH 2/2] mm, oom: do not enfore OOM killer for __GFP_NOFAIL automatically Michal Hocko 2016-12-16 15:58 ` Michal Hocko 2016-12-16 17:31 ` Johannes Weiner 2016-12-16 17:31 ` Johannes Weiner 2016-12-16 22:12 ` Michal Hocko 2016-12-16 22:12 ` Michal Hocko 2016-12-17 11:17 ` Tetsuo Handa 2016-12-17 11:17 ` Tetsuo Handa 2016-12-18 16:37 ` Michal Hocko 2016-12-18 16:37 ` 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=01a495b8-36f6-28f5-5a55-089f4860747d@suse.cz \ --to=vbabka@suse.cz \ --cc=akpm@linux-foundation.org \ --cc=hannes@cmpxchg.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@suse.de \ --cc=mhocko@kernel.org \ --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.