From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from psmtp.com (na3sys010amx195.postini.com [74.125.245.195]) by kanga.kvack.org (Postfix) with SMTP id CF0366B0081 for ; Tue, 11 Sep 2012 19:43:31 -0400 (EDT) Date: Tue, 11 Sep 2012 16:43:30 -0700 From: Andrew Morton Subject: Re: [patch 2/2 v2]compaction: check lock contention first before taking lock Message-Id: <20120911164330.4fffee4f.akpm@linux-foundation.org> In-Reply-To: <20120910011850.GD3715@kernel.org> References: <20120910011850.GD3715@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Shaohua Li Cc: linux-mm@kvack.org, mgorman@suse.de, aarcange@redhat.com On Mon, 10 Sep 2012 09:18:50 +0800 Shaohua Li wrote: > isolate_migratepages_range will take zone->lru_lock first and check if the lock > is contented, if yes, it will release the lock. This isn't efficient. If the > lock is truly contented, a lock/unlock pair will increase the lock contention. > We'd better check if the lock is contended first. compact_trylock_irqsave > perfectly meets the requirement. > > V2: > leave cond_resched() pointed out by Mel. > > Signed-off-by: Shaohua Li > --- > mm/compaction.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > Index: linux/mm/compaction.c > =================================================================== > --- linux.orig/mm/compaction.c 2012-09-10 08:49:40.377869710 +0800 > +++ linux/mm/compaction.c 2012-09-10 08:53:10.295230575 +0800 > @@ -295,8 +295,9 @@ isolate_migratepages_range(struct zone * > > /* Time to isolate some pages for migration */ > cond_resched(); > - spin_lock_irqsave(&zone->lru_lock, flags); > - locked = true; > + locked = compact_trylock_irqsave(&zone->lru_lock, &flags, cc); > + if (!locked) > + return 0; > for (; low_pfn < end_pfn; low_pfn++) { > struct page *page; Geeze that compact_checklock_irqsave stuff is naaaasty. What happens if a process has need_resched set? It cannot perform compaction? There is no relationship between the concepts "user pressed ^C" and "this device driver or subsystem wants a high-order allocation". -- 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: email@kvack.org