[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+55aFyWu_chWLP_+VhgyCYmN2bYS=JFExpuOy6Et0MVFa7tXQ@mail.gmail.com>
Date: Fri, 4 Sep 2015 08:58:38 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Dave Chinner <david@...morbit.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Waiman Long <Waiman.Long@...com>,
Ingo Molnar <mingo@...nel.org>
Subject: Re: [4.2, Regression] Queued spinlocks cause major XFS performance regression
On Fri, Sep 4, 2015 at 8:30 AM, Peter Zijlstra <peterz@...radead.org> wrote:
>> 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?
My gut feel would be to try to match out old paravirt setup, which
similarly replaced the ticket locks with the test-and-set lock, and
try to match the situation where that happened?
Looking at 4.1, back then we very statically just based on
CONFIG_PARAVIRT_SPINLOCKS switched between the ticket lock behavior
and the test-and-set lock. I think we should aim for matching that for
now.
Which is not to say that we can't tune this if somebody comes up with
a better model. For example, the "test hypervisor bit" thing might
still be a good idea: even *if* you have CONFIG_PARAVIRT_SPINLOCKS,
maybe we can do the queued locks if we don't seem to be running under
a hypervisor? Our old model was entirely static, the new queued
spinlock slowpath could clearly be a *bit* more dynamic.
But as a first rough draft, I think "replace ticket locks with queued
locks, leave test-and-set lock condition the way it was" is the way to
go. Particularly since clearly the virtualized behavior had not gotten
enough testing..
Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists