Re: [patch] mm, compaction: periodically schedule when freeing pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]