On Wed, Sep 04, 2013 at 04:25:59PM -0700, David Rientjes wrote: >We've been getting warnings about an excessive amount of time spent >allocating pages for migration during memory compaction without >scheduling. isolate_freepages_block() already periodically checks for >contended locks or the need to schedule, but isolate_freepages() never >does. > >When a zone is massively long and no suitable targets can be found, this >iteration can be quite expensive without ever doing cond_resched(). > >Check periodically for the need to reschedule while the compaction free >scanner iterates. > Reviewed-by: Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx> >Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx> >--- > mm/compaction.c | 7 +++++++ > 1 file changed, 7 insertions(+) > >diff --git a/mm/compaction.c b/mm/compaction.c >--- a/mm/compaction.c >+++ b/mm/compaction.c >@@ -677,6 +677,13 @@ static void isolate_freepages(struct zone *zone, > pfn -= pageblock_nr_pages) { > unsigned long isolated; > >+ /* >+ * This can iterate a massively long zone without finding any >+ * suitable migration targets, so periodically check if we need >+ * to schedule. >+ */ >+ cond_resched(); >+ > if (!pfn_valid(pfn)) > continue; > > >-- >To unsubscribe, send a message with 'unsubscribe linux-mm' in >the body to majordomo@xxxxxxxxx. For more info on Linux MM, >see: http://www.linux-mm.org/ . >Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>