From: Michal Hocko <mhocko@kernel.org> To: Vlastimil Babka <vbabka@suse.cz> Cc: Hillf Danton <hillf.zj@alibaba-inc.com>, "'Andrew Morton'" <akpm@linux-foundation.org>, "'Arkadiusz Miskiewicz'" <a.miskiewicz@gmail.com>, "'Ralf-Peter Rohbeck'" <Ralf-Peter.Rohbeck@quantum.com>, "'Olaf Hering'" <olaf@aepfle.de>, linux-kernel@vger.kernel.org, "'Linus Torvalds'" <torvalds@linux-foundation.org>, linux-mm@kvack.org, "'Mel Gorman'" <mgorman@techsingularity.net>, "'Joonsoo Kim'" <iamjoonsoo.kim@lge.com>, "'David Rientjes'" <rientjes@google.com>, "'Rik van Riel'" <riel@redhat.com> Subject: Re: [PATCH 2/4] mm, compaction: more reliably increase direct compaction priority Date: Fri, 23 Sep 2016 10:23:12 +0200 [thread overview] Message-ID: <20160923082312.GD4478@dhcp22.suse.cz> (raw) In-Reply-To: <98b0c783-28dc-62c4-5a94-74c9e27bebe0@suse.cz> On Fri 23-09-16 08:55:33, Vlastimil Babka wrote: [...] > >From 1623d5bd441160569ffad3808aeeec852048e558 Mon Sep 17 00:00:00 2001 > From: Vlastimil Babka <vbabka@suse.cz> > Date: Thu, 22 Sep 2016 17:02:37 +0200 > Subject: [PATCH] mm, page_alloc: pull no_progress_loops update to > should_reclaim_retry() > > The should_reclaim_retry() makes decisions based on no_progress_loops, so it > makes sense to also update the counter there. It will be also consistent with > should_compact_retry() and compaction_retries. No functional change. > > [hillf.zj@alibaba-inc.com: fix missing pointer dereferences] > Signed-off-by: Vlastimil Babka <vbabka@suse.cz> > Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com> OK, this looks reasonable to me. Could you post both patches in a separate thread please? They shouldn't be really needed to mitigate the pre-mature oom killer issues. Feel free to add Acked-by: Michal Hocko <mhocko@suse.com> Thanks! > --- > mm/page_alloc.c | 28 ++++++++++++++-------------- > 1 file changed, 14 insertions(+), 14 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 582820080601..6039ff40452c 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3401,16 +3401,26 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask) > static inline bool > should_reclaim_retry(gfp_t gfp_mask, unsigned order, > struct alloc_context *ac, int alloc_flags, > - bool did_some_progress, int no_progress_loops) > + bool did_some_progress, int *no_progress_loops) > { > struct zone *zone; > struct zoneref *z; > > /* > + * Costly allocations might have made a progress but this doesn't mean > + * their order will become available due to high fragmentation so > + * always increment the no progress counter for them > + */ > + if (did_some_progress && order <= PAGE_ALLOC_COSTLY_ORDER) > + *no_progress_loops = 0; > + else > + (*no_progress_loops)++; > + > + /* > * Make sure we converge to OOM if we cannot make any progress > * several times in the row. > */ > - if (no_progress_loops > MAX_RECLAIM_RETRIES) > + if (*no_progress_loops > MAX_RECLAIM_RETRIES) > return false; > > /* > @@ -3425,7 +3435,7 @@ should_reclaim_retry(gfp_t gfp_mask, unsigned order, > unsigned long reclaimable; > > available = reclaimable = zone_reclaimable_pages(zone); > - available -= DIV_ROUND_UP(no_progress_loops * available, > + available -= DIV_ROUND_UP((*no_progress_loops) * available, > MAX_RECLAIM_RETRIES); > available += zone_page_state_snapshot(zone, NR_FREE_PAGES); > > @@ -3641,18 +3651,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, > if (order > PAGE_ALLOC_COSTLY_ORDER && !(gfp_mask & __GFP_REPEAT)) > goto nopage; > > - /* > - * Costly allocations might have made a progress but this doesn't mean > - * their order will become available due to high fragmentation so > - * always increment the no progress counter for them > - */ > - if (did_some_progress && order <= PAGE_ALLOC_COSTLY_ORDER) > - no_progress_loops = 0; > - else > - no_progress_loops++; > - > if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags, > - did_some_progress > 0, no_progress_loops)) > + did_some_progress > 0, &no_progress_loops)) > goto retry; > > /* > -- > 2.10.0 > > > -- > 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> -- Michal Hocko SUSE Labs
WARNING: multiple messages have this Message-ID
From: Michal Hocko <mhocko@kernel.org> To: Vlastimil Babka <vbabka@suse.cz> Cc: Hillf Danton <hillf.zj@alibaba-inc.com>, 'Andrew Morton' <akpm@linux-foundation.org>, 'Arkadiusz Miskiewicz' <a.miskiewicz@gmail.com>, 'Ralf-Peter Rohbeck' <Ralf-Peter.Rohbeck@quantum.com>, 'Olaf Hering' <olaf@aepfle.de>, linux-kernel@vger.kernel.org, 'Linus Torvalds' <torvalds@linux-foundation.org>, linux-mm@kvack.org, 'Mel Gorman' <mgorman@techsingularity.net>, 'Joonsoo Kim' <iamjoonsoo.kim@lge.com>, 'David Rientjes' <rientjes@google.com>, 'Rik van Riel' <riel@redhat.com> Subject: Re: [PATCH 2/4] mm, compaction: more reliably increase direct compaction priority Date: Fri, 23 Sep 2016 10:23:12 +0200 [thread overview] Message-ID: <20160923082312.GD4478@dhcp22.suse.cz> (raw) In-Reply-To: <98b0c783-28dc-62c4-5a94-74c9e27bebe0@suse.cz> On Fri 23-09-16 08:55:33, Vlastimil Babka wrote: [...] > >From 1623d5bd441160569ffad3808aeeec852048e558 Mon Sep 17 00:00:00 2001 > From: Vlastimil Babka <vbabka@suse.cz> > Date: Thu, 22 Sep 2016 17:02:37 +0200 > Subject: [PATCH] mm, page_alloc: pull no_progress_loops update to > should_reclaim_retry() > > The should_reclaim_retry() makes decisions based on no_progress_loops, so it > makes sense to also update the counter there. It will be also consistent with > should_compact_retry() and compaction_retries. No functional change. > > [hillf.zj@alibaba-inc.com: fix missing pointer dereferences] > Signed-off-by: Vlastimil Babka <vbabka@suse.cz> > Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com> OK, this looks reasonable to me. Could you post both patches in a separate thread please? They shouldn't be really needed to mitigate the pre-mature oom killer issues. Feel free to add Acked-by: Michal Hocko <mhocko@suse.com> Thanks! > --- > mm/page_alloc.c | 28 ++++++++++++++-------------- > 1 file changed, 14 insertions(+), 14 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 582820080601..6039ff40452c 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3401,16 +3401,26 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask) > static inline bool > should_reclaim_retry(gfp_t gfp_mask, unsigned order, > struct alloc_context *ac, int alloc_flags, > - bool did_some_progress, int no_progress_loops) > + bool did_some_progress, int *no_progress_loops) > { > struct zone *zone; > struct zoneref *z; > > /* > + * Costly allocations might have made a progress but this doesn't mean > + * their order will become available due to high fragmentation so > + * always increment the no progress counter for them > + */ > + if (did_some_progress && order <= PAGE_ALLOC_COSTLY_ORDER) > + *no_progress_loops = 0; > + else > + (*no_progress_loops)++; > + > + /* > * Make sure we converge to OOM if we cannot make any progress > * several times in the row. > */ > - if (no_progress_loops > MAX_RECLAIM_RETRIES) > + if (*no_progress_loops > MAX_RECLAIM_RETRIES) > return false; > > /* > @@ -3425,7 +3435,7 @@ should_reclaim_retry(gfp_t gfp_mask, unsigned order, > unsigned long reclaimable; > > available = reclaimable = zone_reclaimable_pages(zone); > - available -= DIV_ROUND_UP(no_progress_loops * available, > + available -= DIV_ROUND_UP((*no_progress_loops) * available, > MAX_RECLAIM_RETRIES); > available += zone_page_state_snapshot(zone, NR_FREE_PAGES); > > @@ -3641,18 +3651,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, > if (order > PAGE_ALLOC_COSTLY_ORDER && !(gfp_mask & __GFP_REPEAT)) > goto nopage; > > - /* > - * Costly allocations might have made a progress but this doesn't mean > - * their order will become available due to high fragmentation so > - * always increment the no progress counter for them > - */ > - if (did_some_progress && order <= PAGE_ALLOC_COSTLY_ORDER) > - no_progress_loops = 0; > - else > - no_progress_loops++; > - > if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags, > - did_some_progress > 0, no_progress_loops)) > + did_some_progress > 0, &no_progress_loops)) > goto retry; > > /* > -- > 2.10.0 > > > -- > 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> -- 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:[~2016-09-23 8:23 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-09-06 13:52 [PATCH 0/4] reintroduce compaction feedback for OOM decisions Vlastimil Babka 2016-09-06 13:52 ` Vlastimil Babka 2016-09-06 13:52 ` [PATCH 1/4] Revert "mm, oom: prevent premature OOM killer invocation for high order request" Vlastimil Babka 2016-09-06 13:52 ` Vlastimil Babka 2016-09-21 17:04 ` Michal Hocko 2016-09-21 17:04 ` Michal Hocko 2016-09-06 13:52 ` [PATCH 2/4] mm, compaction: more reliably increase direct compaction priority Vlastimil Babka 2016-09-06 13:52 ` Vlastimil Babka 2016-09-21 17:13 ` Michal Hocko 2016-09-21 17:13 ` Michal Hocko 2016-09-22 12:51 ` Vlastimil Babka 2016-09-22 12:51 ` Vlastimil Babka 2016-09-22 14:08 ` Michal Hocko 2016-09-22 14:08 ` Michal Hocko 2016-09-22 14:52 ` Michal Hocko 2016-09-22 14:52 ` Michal Hocko 2016-09-22 14:59 ` Vlastimil Babka 2016-09-22 14:59 ` Vlastimil Babka 2016-09-22 15:06 ` Vlastimil Babka 2016-09-22 15:06 ` Vlastimil Babka 2016-09-23 4:04 ` Hillf Danton 2016-09-23 4:04 ` Hillf Danton 2016-09-23 6:55 ` Vlastimil Babka 2016-09-23 6:55 ` Vlastimil Babka 2016-09-23 8:23 ` Michal Hocko [this message] 2016-09-23 8:23 ` Michal Hocko 2016-09-23 10:47 ` Vlastimil Babka 2016-09-23 10:47 ` Vlastimil Babka 2016-09-23 12:06 ` Michal Hocko 2016-09-23 12:06 ` Michal Hocko 2016-09-06 13:52 ` [PATCH 3/4] mm, compaction: restrict full priority to non-costly orders Vlastimil Babka 2016-09-06 13:52 ` Vlastimil Babka 2016-09-21 17:15 ` Michal Hocko 2016-09-21 17:15 ` Michal Hocko 2016-09-06 13:52 ` [PATCH 4/4] mm, compaction: make full priority ignore pageblock suitability Vlastimil Babka 2016-09-06 13:52 ` Vlastimil Babka 2016-09-15 18:51 ` [PATCH 0/4] reintroduce compaction feedback for OOM decisions Arkadiusz Miskiewicz 2016-09-15 18:51 ` Arkadiusz Miskiewicz 2016-09-21 17:18 ` Michal Hocko 2016-09-21 17:18 ` Michal Hocko 2016-09-22 15:18 ` Vlastimil Babka 2016-09-22 15:18 ` Vlastimil Babka 2016-09-23 8:26 ` Michal Hocko 2016-09-23 8:26 ` Michal Hocko 2016-09-23 10:55 ` Vlastimil Babka 2016-09-23 10:55 ` Vlastimil Babka 2016-09-23 12:09 ` Michal Hocko 2016-09-23 12:09 ` 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=20160923082312.GD4478@dhcp22.suse.cz \ --to=mhocko@kernel.org \ --cc=Ralf-Peter.Rohbeck@quantum.com \ --cc=a.miskiewicz@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=hillf.zj@alibaba-inc.com \ --cc=iamjoonsoo.kim@lge.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@techsingularity.net \ --cc=olaf@aepfle.de \ --cc=riel@redhat.com \ --cc=rientjes@google.com \ --cc=torvalds@linux-foundation.org \ --cc=vbabka@suse.cz \ --subject='Re: [PATCH 2/4] mm, compaction: more reliably increase direct compaction priority' \ /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: link
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.