Re: [patch v3 6/6] mm, compaction: terminate async compaction when rescheduling

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

 



On 05/07/2014 04:22 AM, David Rientjes wrote:
Async compaction terminates prematurely when need_resched(), see
compact_checklock_irqsave().  This can never trigger, however, if the
cond_resched() in isolate_migratepages_range() always takes care of the
scheduling.

If the cond_resched() actually triggers, then terminate this pageblock scan for
async compaction as well.

Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx>

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

---
  mm/compaction.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/mm/compaction.c b/mm/compaction.c
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -500,8 +500,13 @@ isolate_migratepages_range(struct zone *zone, struct compact_control *cc,
  			return 0;
  	}

+	if (cond_resched()) {
+		/* Async terminates prematurely on need_resched() */
+		if (cc->mode == MIGRATE_ASYNC)
+			return 0;
+	}
+
  	/* Time to isolate some pages for migration */
-	cond_resched();
  	for (; low_pfn < end_pfn; low_pfn++) {
  		/* give a chance to irqs before checking need_resched() */
  		if (locked && !(low_pfn % SWAP_CLUSTER_MAX)) {


--
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]