From: Rik van Riel <riel@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
aquini@redhat.com, Andrew Morton <akpm@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
Michel Lespinasse <walken@google.com>,
linux-tip-commits@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>,
"Vinod, Chegu" <chegu_vinod@hp.com>,
"Low, Jason" <jason.low2@hp.com>
Subject: Re: [tip:core/locking] x86/smp: Move waiting on contended ticket lock out of line
Date: Wed, 27 Feb 2013 16:55:47 -0500 [thread overview]
Message-ID: <512E80E3.7060800@redhat.com> (raw)
In-Reply-To: <CA+55aFwHxv9RH75BoXYcwdKeHx+otOOpg9494TTdFwQe3biOhw@mail.gmail.com>
On 02/27/2013 03:18 PM, Linus Torvalds wrote:
> On Wed, Feb 27, 2013 at 11:53 AM, Rik van Riel <riel@redhat.com> wrote:
>>
>> If we have two classes of spinlocks, I suspect we would be better
>> off making those high-demand spinlocks MCS or LCH locks, which have
>> the property that having N+1 CPUs contend on the lock will never
>> result in slower aggregate throughput than having N CPUs contend.
>
> I doubt that.
>
> The fancy "no slowdown" locks almost never work in practice. They
> scale well by performing really badly for the normal case, either
> needing separate allocations or having memory ordering problems
> requiring multiple locked cycles.
The relative costs of atomic operations, cache line acquisition, and
other things has shifted over time. On the very latest systems, the
cost of cache line acquisition appears to dominate over the cost of
atomic operations.
Michel's results from last month show that MCS has essentially the same
performance for the single thread (uncontended) situation, on some
systems a degradation for 2 and 3 thread performance, in a tight micro
test, and improved performance when the contention involves 3 or more
CPUs.
http://thread.gmane.org/gmane.linux.kernel/1427417
> A spinlock basically needs to have a fast-case that is a single locked
> instruction, and all the clever ones tend to fail that simple test.
With the cost of a cache line acquisition outweighing the cost of an
atomic operation, for how much longer will this remain true?
Michel's results suggest that on Sandybridge this no longer seems
to hold. The cost of the atomic operation on unlock appears to have
more than paid for itself by avoiding extraneous cache line bouncing,
and the cost of cache line acquisition. Even with only two CPUs
contending on the lock...
>> I can certainly take profiles of various workloads, but there is
>> absolutely no guarantee that I will see the same bottlenecks that
>> eg. the people at HP have seen. The largest test system I currently
>> have access to has 40 cores, vs. the 80 cores in the (much more
>> interesting) HP results I pasted.
>>
>> Would you also be interested in performance numbers (and profiles)
>> of a kernel that has bottleneck spinlocks replaced with MCS locks?
>
> MCS locks don't even work, last time I saw. They need that extra lock
> holder allocation, which forces people to have different calling
> conventions, and is just a pain. Or am I confusing them with something
> else?
Nope, those are the MCS locks alright.
> They might work for the special cases like the sleeping locks, which
> have one or two places that take and release the lock, but not for the
> generic spinlock.
I am certainly not advocating that all spinlocks be replaced with
harder to use locks. On the other hand, we have to realize that
Linux users do not have the luxury to upgrade their kernel to the
latest upstream on whenever they run into a performance issue, so
it would be good to make Linux more robust against scalability
issues.
> So before even trying anything fancy, just basic profiles would be
> good to see which lock it is. Many of the really bad slowdowns are
> actually about the timing details of the sleeping locks (do *not*
> enable lock debugging etc for profiling, you want the mutex spinning
> code to be active, for example).
No argument there, but that does in no way negate the need for
some performance robustness.
--
All rights reversed
next prev parent reply other threads:[~2013-02-27 21:56 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-06 20:03 [PATCH -v5 0/5] x86,smp: make ticket spinlock proportional backoff w/ auto tuning Rik van Riel
2013-02-06 20:04 ` [PATCH -v5 1/5] x86,smp: move waiting on contended ticket lock out of line Rik van Riel
2013-02-13 12:06 ` [tip:core/locking] x86/smp: Move " tip-bot for Rik van Riel
2013-02-13 16:20 ` Linus Torvalds
2013-02-13 18:30 ` Linus Torvalds
2013-02-14 0:54 ` H. Peter Anvin
2013-02-14 1:31 ` Linus Torvalds
2013-02-14 1:56 ` H. Peter Anvin
2013-02-14 10:50 ` Ingo Molnar
2013-02-14 16:10 ` Linus Torvalds
2013-02-15 15:57 ` Ingo Molnar
2013-02-15 6:48 ` Benjamin Herrenschmidt
2013-02-13 19:08 ` Rik van Riel
2013-02-13 19:36 ` Linus Torvalds
2013-02-13 22:21 ` Rik van Riel
2013-02-13 22:40 ` Linus Torvalds
2013-02-13 23:41 ` Rik van Riel
2013-02-14 1:21 ` Linus Torvalds
2013-02-14 1:46 ` Linus Torvalds
2013-02-14 10:43 ` Ingo Molnar
2013-02-27 16:42 ` Rik van Riel
2013-02-27 17:10 ` Linus Torvalds
2013-02-27 19:53 ` Rik van Riel
2013-02-27 20:18 ` Linus Torvalds
2013-02-27 21:55 ` Rik van Riel [this message]
[not found] ` <CA+55aFwa0EjGG2NUDYVLVBmXJa2k81YiuNO2yggk=GLRQxhhUQ@mail.gmail.com>
2013-02-28 2:58 ` Rik van Riel
2013-02-28 3:19 ` Linus Torvalds
2013-02-28 4:06 ` Davidlohr Bueso
2013-02-28 4:49 ` Linus Torvalds
2013-02-28 15:13 ` Rik van Riel
2013-02-28 18:22 ` Linus Torvalds
2013-02-28 20:26 ` Linus Torvalds
2013-02-28 21:14 ` Rik van Riel
2013-02-28 21:58 ` Linus Torvalds
2013-02-28 22:38 ` Rik van Riel
2013-02-28 23:09 ` Linus Torvalds
2013-03-01 6:42 ` Rik van Riel
2013-03-01 18:18 ` Davidlohr Bueso
2013-03-01 18:50 ` Rik van Riel
2013-03-01 18:52 ` Linus Torvalds
2013-02-06 20:04 ` [PATCH -v5 2/5] x86,smp: proportional backoff for ticket spinlocks Rik van Riel
2013-02-13 12:07 ` [tip:core/locking] x86/smp: Implement " tip-bot for Rik van Riel
2013-02-06 20:05 ` [PATCH -v5 3/5] x86,smp: auto tune spinlock backoff delay factor Rik van Riel
2013-02-13 12:08 ` [tip:core/locking] x86/smp: Auto " tip-bot for Rik van Riel
2013-02-06 20:06 ` [PATCH -v5 4/5] x86,smp: keep spinlock delay values per hashed spinlock address Rik van Riel
2013-02-13 12:09 ` [tip:core/locking] x86/smp: Keep " tip-bot for Eric Dumazet
2013-02-06 20:07 ` [PATCH -v5 5/5] x86,smp: limit spinlock delay on virtual machines Rik van Riel
2013-02-07 11:11 ` Ingo Molnar
2013-02-07 21:24 ` [PATCH fix " Rik van Riel
2013-02-13 12:10 ` [tip:core/locking] x86/smp: Limit " tip-bot for Rik van Riel
2013-02-07 11:25 ` [PATCH -v5 5/5] x86,smp: limit " Stefano Stabellini
2013-02-07 11:59 ` Raghavendra K T
2013-02-07 13:28 ` Rik van Riel
2013-02-06 20:08 ` [PATCH -v5 6/5] x86,smp: add debugging code to track spinlock delay value Rik van Riel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=512E80E3.7060800@redhat.com \
--to=riel@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=aquini@redhat.com \
--cc=chegu_vinod@hp.com \
--cc=hpa@zytor.com \
--cc=jason.low2@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=walken@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).