Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755573Ab3I3RKt (ORCPT ); Mon, 30 Sep 2013 13:10:49 -0400 Received: from mga02.intel.com ([134.134.136.20]:54943 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755236Ab3I3RKs (ORCPT ); Mon, 30 Sep 2013 13:10:48 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.90,1009,1371106800"; d="scan'208";a="385810698" Subject: Re: [PATCH, v2] anon_vmas: Convert the rwsem to an rwlock_t From: Tim Chen To: Ingo Molnar Cc: Linus Torvalds , Waiman Long , Ingo Molnar , Andrew Morton , Linux Kernel Mailing List , Rik van Riel , Peter Hurley , Davidlohr Bueso , Alex Shi , Peter Zijlstra , Andrea Arcangeli , Matthew R Wilcox , Dave Hansen , Michel Lespinasse , Andi Kleen , "Chandramouleeswaran, Aswin" , "Norton, Scott J" In-Reply-To: <20130928195207.GA31245@gmail.com> References: <1380308424-31011-1-git-send-email-Waiman.Long@hp.com> <20130928074144.GA17773@gmail.com> <20130928192123.GA8228@gmail.com> <20130928193739.GA8642@gmail.com> <20130928195207.GA31245@gmail.com> Content-Type: text/plain; charset="UTF-8" Date: Mon, 30 Sep 2013 10:10:27 -0700 Message-ID: <1380561027.3467.196.camel@schen9-DESK> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2152 Lines: 70 On Sat, 2013-09-28 at 21:52 +0200, Ingo Molnar wrote: > * Linus Torvalds wrote: > > > On Sat, Sep 28, 2013 at 12:37 PM, Ingo Molnar wrote: > > > > > > - down_write_nest_lock(&anon_vma->root->rwsem, &mm->mmap_sem); > > > + down_write_nest_lock(&anon_vma->root->rwlock, &mm->mmap_sem); > > > > That's just completely bogus, and cannot work. > > > > Maybe just a "write_lock(&anon_vma->root->rwlock)" (which is just > > anon_vma_unlock_write(anon_vma)). But I think we might have a lockdep > > issue. I'm not quite sure what's up with the nesting there. > > > > > - if (rwsem_is_locked(&anon_vma->root->rwsem)) { > > > + if (write_can_lock(&anon_vma->root->rwlock)) { > > > anon_vma_lock_write(anon_vma); > > > anon_vma_unlock_write(anon_vma); > > > } > > > > That's the wrong way around. It should be > > > > if (!write_can_lock(&anon_vma->root->rwlock)) { > > > > so some more testing definitely needed. > > Yeah, that silly API asymmetry has bitten me before as well :-/ > > The attached version booted up fine under 16-way KVM: > > sh-4.2# uptime > 19:50:08 up 0 min, 0 users, load average: 0.00, 0.00, 0.00 > > That's all the testing it will get this evening though. Patch should be > good enough for Tim to try? Here's the exim workload data: rwsem improvment: Waimain's patch: +2.0% Alex+Tim's patchset: +4.8% Waiman+Alex+Tim: +5.3% convert rwsem to rwlock_t for root anon_vma lock Ingo's patch +11.7% Yes, changing the anon-vma root lock to rwlock_t gives the most boost. However, I think that Waiman's patches, Alex's patches and my patches can still be combined together to improve scalability of rwsem, even if we should decide to convert this particular rwsem to rwlock_t. Thanks. Tim > > Thanks, > > Ingo > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/