Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755262Ab3GAU2R (ORCPT ); Mon, 1 Jul 2013 16:28:17 -0400 Received: from mga09.intel.com ([134.134.136.24]:27721 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755203Ab3GAU2Q (ORCPT ); Mon, 1 Jul 2013 16:28:16 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.87,975,1363158000"; d="scan'208";a="363046263" Subject: Re: Performance regression from switching lock to rw-sem for anon-vma tree From: Tim Chen To: Ingo Molnar Cc: Ingo Molnar , Andrea Arcangeli , Mel Gorman , "Shi, Alex" , Andi Kleen , Andrew Morton , Michel Lespinasse , Davidlohr Bueso , "Wilcox, Matthew R" , Dave Hansen , Peter Zijlstra , Rik van Riel , linux-kernel@vger.kernel.org, linux-mm In-Reply-To: <20130629071245.GA5084@gmail.com> References: <1371660831.27102.663.camel@schen9-DESK> <1372205996.22432.119.camel@schen9-DESK> <20130626095108.GB29181@gmail.com> <1372282560.22432.139.camel@schen9-DESK> <1372292701.22432.152.camel@schen9-DESK> <20130627083651.GA3730@gmail.com> <1372366385.22432.185.camel@schen9-DESK> <1372375873.22432.200.camel@schen9-DESK> <20130628093809.GB29205@gmail.com> <1372453461.22432.216.camel@schen9-DESK> <20130629071245.GA5084@gmail.com> Content-Type: text/plain; charset="UTF-8" Date: Mon, 01 Jul 2013 13:28:17 -0700 Message-ID: <1372710497.22432.224.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: 2997 Lines: 73 On Sat, 2013-06-29 at 09:12 +0200, Ingo Molnar wrote: > * Tim Chen wrote: > > > > If my analysis is correct so far then it might be useful to add two > > > more stats: did rwsem_spin_on_owner() fail because lock->owner == NULL > > > [owner released the rwsem], or because owner_running() failed [owner > > > went to sleep]? > > > > Ingo, > > > > I tabulated the cases where rwsem_spin_on_owner returns false and causes > > us to stop spinning. > > > > 97.12% was due to lock's owner switching to another writer > > 0.01% was due to the owner of the lock sleeping > > 2.87% was due to need_resched() > > > > I made a change to allow us to continue to spin even when lock's owner > > switch to another writer. I did get the lock to be acquired now mostly > > (98%) via optimistic spin and lock stealing, but my benchmark's > > throughput actually got reduced by 30% (too many cycles spent on useless > > spinning?). > > Hm, I'm running out of quick ideas :-/ The writer-ends-spinning sequence > is pretty similar in the rwsem and in the mutex case. I'd have a look at > one more detail: is the wakeup of another writer in the rwsem case > singular, is only a single writer woken? I suspect the answer is yes ... Ingo, we can only wake one writer, right? In __rwsem_do_wake, that is indeed the case. Or you are talking about something else? > > A quick glance suggests that the ordering of wakeups of waiters is the > same for mutexes and rwsems: FIFO, single waiter woken on slowpath-unlock. > So that shouldn't make a big difference. > If all last-ditch efforts to analyze it via counters fail then the way I'd > approach it next is brute-force instrumentation: > > - First I'd create a workload 'steady state' that can be traced and > examined without worrying that that it ends or switches to some other > workload. > > - Then I'd create a relatively lightweight trace (maybe trace_printk() is > lightweight enough), and capture key mutex and rwsem events. > > - I'd capture a 1-10 seconds trace in steady state, both with rwsems and > mutexes. I'd have a good look at which tasks take locks and schedule > how and why. I'd try to eliminate any assymetries in behavior, i.e. > make rwsems behave like mutexes. You mean adding trace points to record the events? If you can be more specific on what data to capture, that will be helpful. It will be holidays here in US so I may get around to this the following week. Thanks! Tim > > The risk and difficulty is that tracing can easily skew locking patterns, > so I'd first check whether with such new tracepoints enabled the assymetry > in behavior and regression is still present. > > 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/