From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759782AbbIDPal (ORCPT ); Fri, 4 Sep 2015 11:30:41 -0400 Received: from casper.infradead.org ([85.118.1.10]:36190 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759426AbbIDPak (ORCPT ); Fri, 4 Sep 2015 11:30:40 -0400 Date: Fri, 4 Sep 2015 17:30:35 +0200 From: Peter Zijlstra To: Linus Torvalds Cc: Dave Chinner , Linux Kernel Mailing List , Waiman Long , Ingo Molnar Subject: Re: [4.2, Regression] Queued spinlocks cause major XFS performance regression Message-ID: <20150904153035.GH18489@twins.programming.kicks-ass.net> References: <20150904054820.GY3902@dastard> <20150904071143.GZ3902@dastard> <20150904082954.GB3902@dastard> <20150904151427.GG18489@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 04, 2015 at 08:21:28AM -0700, Linus Torvalds wrote: > On Fri, Sep 4, 2015 at 8:14 AM, Peter Zijlstra wrote: > > > > The reason we chose to revert to a test-and-set is because regular fair > > locks, like the ticket and the queue thing, have horrible behaviour > > under vcpu preemption. > > Right. However, with our old ticket locks, that's what we got when you > didn't ask for paravirt support. No? Indeed. > And even ignoring the "implementation was crap" issue, some people may > well want their kernels to be "bare hardware" kernels even under a > hypervisor. It may be a slim hypervisor that gives you all the cpus, > or it may just be a system that is just sufficiently overprovisioned, > so you don't get vcpu preemption in practice. Fair enough; I had not considered the slim hypervisor case. Should I place the virt_spin_lock() thing under CONFIG_PARAVIRT (maybe even _SPINLOCKS) such that only paravirt enabled kernels when ran on a hypervisor that does not support paravirt patching (HyperV, VMware, etc..) revert to the test-and-set? > But it would be interesting to hear if just fixing the busy-looping to > not pound the lock with a constant stream of cmpxchg's is already > sufficient to fix the big picture problem. Dave replaced the cpu_relax() with a __delay(1) to match what spinlock-debug does and that fixed things for him. Of course, it would be good if he can try the proposed patch too.