From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754148AbbDPKwR (ORCPT ); Thu, 16 Apr 2015 06:52:17 -0400 Received: from cantor2.suse.de ([195.135.220.15]:49738 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751787AbbDPKwH (ORCPT ); Thu, 16 Apr 2015 06:52:07 -0400 Date: Thu, 16 Apr 2015 11:51:57 +0100 From: Mel Gorman To: Linux-MM Cc: Rik van Riel , Hugh Dickins , Minchan Kim , Dave Hansen , Andi Kleen , LKML Subject: Re: [PATCH 4/4] mm: migrate: Batch TLB flushing when unmapping pages for migration Message-ID: <20150416105157.GO14842@suse.de> References: <1429179766-26711-1-git-send-email-mgorman@suse.de> <1429179766-26711-5-git-send-email-mgorman@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1429179766-26711-5-git-send-email-mgorman@suse.de> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 16, 2015 at 11:22:46AM +0100, Mel Gorman wrote: > Page reclaim batches multiple TLB flushes into one IPI and this patch teaches > page migration to also batch any necessary flushes. MMtests has a THP scale > microbenchmark that deliberately fragments memory and then allocates THPs > to stress compaction. It's not a page reclaim benchmark and recent kernels > avoid excessive compaction but this patch reduced system CPU usage > > 4.0.0 4.0.0 > baseline batchmigrate-v1 > User 970.70 1012.24 > System 2067.48 1840.00 > Elapsed 1520.63 1529.66 > > Note that this particular workload was not TLB flush intensive with peaks > in interrupts during the compaction phase. The 4.0 kernel peaked at 345K > interrupts/second, the kernel that batches reclaim TLB entries peaked at > 13K interrupts/second and this patch peaked at 10K interrupts/second. > > Signed-off-by: Mel Gorman The following is needed on !x86 although it's pointless to test on !x86 at the moment. diff --git a/mm/vmscan.c b/mm/vmscan.c index 361bf59e0594..548c94834112 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2784,10 +2784,6 @@ void alloc_tlb_ubc(void) cpumask_clear(¤t->tlb_ubc->cpumask); current->tlb_ubc->nr_pages = 0; } -#else -static inline void alloc_tlb_ubc(void) -{ -} #endif /* CONFIG_ARCH_SUPPORTS_LOCAL_TLB_PFN_FLUSH */ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,