All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: linux-ia64@vger.kernel.org
Subject: Re: [git pull] ia64 changes
Date: Wed, 30 Sep 2009 01:24:29 +0000	[thread overview]
Message-ID: <alpine.LFD.2.01.0909291808410.6996@localhost.localdomain> (raw)
In-Reply-To: <1FE6DD409037234FAB833C420AA843EC0122AEB1@orsmsx424.amr.corp.intel.com>



On Tue, 29 Sep 2009, Robin Holt wrote:
> 
> Any idea how difficult it will be to re-enable interrupts inside the
> contended lock case?  Without thinking about it, it feels like it
> will be impossible.

With a ticket lock, taking an interrupt while waiting ends up being 
exactly the same as taking an interrupt while holding it, so yeah, if you 
have an interrupt-safe lock, you can't re-enable interrupts while waiting 
for the lock. You're basically holding on to your place in the line even 
before you've actually gotten permission to proceed.

That's obviously where the fairness comes from, but it is also what makes 
it impossible to let interrupts come in - because even when you're just 
spinning on the previous user, you've already marked the spinlock as being 
busy for the next one.

Of course, even if you were able to re-enable interrupts while spinning, 
if an interrupt actually happens and then needs the lock, that interrupt 
will have high latency _anyway_. So re-enabling interrupts doesn't help in 
any fundamental way, although it can make it much less likely that you'll 
hit the bad case.

That may sound like ticket locks are nasty, but there are some upsides. In 
particular, the fairness of the ticket locks means that latencies are be 
bounded. And just for that simple reason there is often much less reason 
to worry about having to re-enable interrupts: the bounded upper case is 
not true of traditional locks.

Whether the bounds are sufficient for your situation is obviously an issue 
and depends on your load, but even in the presense of extreme contention 
it then boils down to: don't protect costly operations with interrupt-safe 
spinlocks, so that the bound (nr_cpus*cost) doesn't grow too large. And we 
generally don't.

Of course, in extreme situations you might want the RT kernel and then 
generally not ever actually disable the _real_ interrupts.

			Linus

  parent reply	other threads:[~2009-09-30  1:24 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-18 16:34 [git pull] ia64 changes Luck, Tony
2008-04-22 23:36 ` Luck, Tony
2008-04-29 23:36 ` Luck, Tony
2008-05-01 22:57 ` Luck, Tony
2008-05-15 20:46 ` Luck, Tony
2008-05-28 19:52 ` Luck, Tony
2008-06-16 17:28 ` Luck, Tony
2008-06-24 21:49 ` Luck, Tony
2008-06-30 23:52 ` Luck, Tony
2008-07-17 20:31 ` Luck, Tony
2008-07-25 20:30 ` Luck, Tony
2008-08-06 18:32 ` Luck, Tony
2008-08-12 21:55 ` Luck, Tony
2008-08-18 23:46 ` Luck, Tony
2008-08-26 16:59 ` Luck, Tony
2008-09-10 21:17 ` Luck, Tony
2008-09-23 16:59 ` Luck, Tony
2008-09-30 16:18 ` Luck, Tony
2008-10-21 18:01 ` Luck, Tony
2008-11-05  0:43 ` Luck, Tony
2008-11-07 18:00 ` Luck, Tony
2008-11-20 22:47 ` Luck, Tony
2008-12-09 22:28 ` Luck, Tony
2009-01-15 19:45 ` Luck, Tony
2009-02-19 21:02 ` Luck, Tony
2009-02-25 22:44 ` Luck, Tony
2009-03-06 22:17 ` Luck, Tony
2009-03-27 17:46 ` Luck, Tony
2009-04-01 20:20 ` Luck, Tony
2009-04-08 22:33 ` Luck, Tony
2009-04-20 17:32 ` Luck, Tony
2009-05-05 22:42 ` Luck, Tony
2009-06-15 17:20 ` Luck, Tony
2009-07-17 18:11 ` Fenghua Yu
2009-08-11 23:40 ` Fenghua Yu
2009-09-02 17:28 ` Luck, Tony
2009-09-17 17:11 ` Luck, Tony
2009-09-26 19:57 ` Luck, Tony
2009-09-26 20:39 ` Linus Torvalds
2009-09-26 23:16 ` Matthew Wilcox
2009-09-27  0:00 ` Linus Torvalds
2009-09-27  0:08 ` Linus Torvalds
2009-09-27  4:54 ` Luck, Tony
2009-09-27  5:18 ` Linus Torvalds
2009-09-27  5:20 ` Luck, Tony
2009-09-28 19:02 ` Boehm, Hans
2009-09-28 22:35 ` Luck, Tony
2009-09-28 22:54 ` Linus Torvalds
2009-09-28 23:01 ` Linus Torvalds
2009-09-28 23:01 ` Luck, Tony
2009-09-29  0:03 ` Rick Jones
2009-09-29  0:14 ` Linus Torvalds
2009-09-29 17:53 ` Luck, Tony
2009-09-29 18:07 ` Linus Torvalds
2009-09-30  0:54 ` Robin Holt
2009-09-30  1:24 ` Linus Torvalds [this message]
2009-09-30  1:30 ` Linus Torvalds
2009-09-30  2:46 ` Robin Holt
2009-09-30  2:56 ` Linus Torvalds
2009-09-30 18:00 ` Rick Jones
2009-11-02 18:07 ` Luck, Tony
2009-12-15 22:33 ` Luck, Tony
2010-01-08 17:20 ` Luck, Tony
2010-01-08 17:35 ` Linus Torvalds
2010-01-08 17:49 ` Luck, Tony
2010-01-08 19:24 ` Luck, Tony
2010-02-16 19:43 ` Luck, Tony
2010-02-24 17:32 ` Luck, Tony
2010-03-01 18:11 ` Luck, Tony
2010-05-18 17:11 ` Luck, Tony
2010-05-18 20:43 ` Robin Holt
2010-05-18 22:04 ` Luck, Tony
2010-07-01 15:22 ` Luck, Tony
2010-08-04 16:09 ` Luck, Tony
2010-08-14  4:04 ` Luck, Tony
2010-08-18 20:06 ` Luck, Tony
2010-09-13 18:33 ` Luck, Tony
2010-09-14  6:06 ` Petr Tesarik
2010-09-14  7:02 ` Petr Tesarik
2010-09-14 17:37 ` Luck, Tony
2010-09-14 20:38 ` Petr Tesarik
2010-09-14 20:57 ` Tony Luck
2010-09-16 15:57 ` Luck, Tony
2010-10-21 16:00 ` Luck, Tony
2010-10-21 21:33 ` Linus Torvalds
2011-01-10 18:01 ` Luck, Tony
2011-01-13 18:08 ` Luck, Tony
2011-01-13 23:10 ` Luck, Tony
2011-01-14 19:33 ` Luck, Tony
2011-03-30 19:09 ` Luck, Tony
2011-05-31 20:20 ` Luck, Tony
2011-08-01 16:57 ` Luck, Tony
2011-11-02 21:06 ` Luck, Tony
2012-01-05 17:42 ` Luck, Tony
2012-03-23 17:23 ` [GIT PULL] " Luck, Tony
2008-04-24 23:51 [git pull] " Luck, Tony
2008-04-24 23:51 ` Luck, Tony
2008-04-25  0:16 ` Adrian Bunk
2008-04-25  0:16   ` Adrian Bunk
2008-04-25  0:25   ` Luck, Tony
2008-04-25  0:25     ` Luck, Tony
2008-04-25  0:41     ` [2.6 patch] ia64: let NUMA select SMP Adrian Bunk
2008-04-25  0:41       ` Adrian Bunk
2008-04-25  1:01       ` Luck, Tony
2008-04-25  1:01         ` Luck, Tony
2008-04-25 12:50       ` Mike Travis
2008-04-25 12:50         ` Mike Travis
2010-07-21 16:40 [git pull] ia64 changes Luck, Tony
2011-03-24 16:29 Luck, Tony
2011-03-24 16:29 ` Luck, Tony

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=alpine.LFD.2.01.0909291808410.6996@localhost.localdomain \
    --to=torvalds@linux-foundation.org \
    --cc=linux-ia64@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.