public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tim Wright <timw@splhi.com>
To: Andrew Morton <andrewm@uow.edu.au>
Cc: nigel@nrg.org, "David S. Miller" <davem@redhat.com>,
	linux-kernel@vger.kernel.org,
	linux-audio-dev@ginette.musique.umontreal.ca
Subject: Re: [linux-audio-dev] low-latency scheduling patch for 2.4.0
Date: Fri, 12 Jan 2001 07:11:50 -0800	[thread overview]
Message-ID: <20010112071150.A1653@scutter.internal.splhi.com> (raw)
In-Reply-To: <200101110519.VAA02784@pizda.ninka.net> <Pine.LNX.4.05.10101111233241.5936-100000@cosmic.nrg.org> <3A5F0706.6A8A8141@uow.edu.au>
In-Reply-To: <3A5F0706.6A8A8141@uow.edu.au>; from andrewm@uow.edu.au on Sat, Jan 13, 2001 at 12:30:46AM +1100

On Sat, Jan 13, 2001 at 12:30:46AM +1100, Andrew Morton wrote:
> what worries me about this is the Apache-flock-serialisation saga.
> 
> Back in -test8, kumon@fujitsu demonstrated that changing this:
> 
> 	lock_kernel()
> 	down(sem)
> 	<stuff>
> 	up(sem)
> 	unlock_kernel()
> 
> into this:
> 
> 	down(sem)
> 	<stuff>
> 	up(sem)
> 
> had the effect of *decreasing* Apache's maximum connection rate
> on an 8-way from ~5,000 connections/sec to ~2,000 conn/sec.
> 
> That's downright scary.
> 
> Obviously, <stuff> was very quick, and the CPUs were passing through
> this section at a great rate.
> 
> How can we be sure that converting spinlocks to semaphores
> won't do the same thing?  Perhaps for workloads which we
> aren't testing?
> 
> So this needs to be done with caution.
> 

Hmmm...
if <stuff> is very quick, and is guaranteed not to sleep, then a semaphore
is the wrong way to protect it. A spinlock is the correct choice. If it's
always slow, and can sleep, then a semaphore makes more sense, although if
it's highly contented, you're going to serialize and throughput will die.
At that point, you need to redesign :-)
If it's mostly quick but occasionally needs to sleep, I don't know what the
correct idiom would be in Linux. DYNIX/ptx has the concept of atomically
releasing a spinlock and going to sleep on a semaphore, and that would be
the solution there e.g.

p_lock(lock);
retry:
...
if (condition where we need to sleep) {
    p_sema_v_lock(sema, lock);
    /* we got woken up */
    p_lock(lock);
    goto retry;
}
...

I'm stating the obvious here, and re-iterating what you said, and that is that
we need to carefully pick the correct primitive for the job. Unless there's
something very unusual in the Linux implementation that I've missed, a
spinlock is a "cheaper" method of protecting a short critical section, and
should be chosen.

I know the BKL is a semantically a little unusual (the automatic release on
sleep stuff), but even so, isn't

 	lock_kernel()
 	down(sem)
 	<stuff>
 	up(sem)
 	unlock_kernel()

actually equivalent to

	lock_kernel()
	<stuff>
	unlock_kernel()

If so, it's no great surprise that performance dropped given that we replaced
a spinlock (albeit one guarding somewhat more than the critical section) with
a semaphore.

Tim

--
Tim Wright - timw@splhi.com or timw@aracnet.com or twright@us.ibm.com
IBM Linux Technology Center, Beaverton, Oregon
"Nobody ever said I was charming, they said "Rimmer, you're a git!"" RD VI
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

  reply	other threads:[~2001-01-12 15:12 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-01-07  2:53 low-latency scheduling patch for 2.4.0 Andrew Morton
2001-01-11  3:12 ` [linux-audio-dev] " Jay Ts
2001-01-11  3:22   ` Cort Dougan
2001-01-11 12:38     ` Alan Cox
2001-01-11 11:30   ` Andrew Morton
2001-01-11  5:19     ` David S. Miller
2001-01-11 13:57       ` Daniel Phillips
2001-01-11 20:55       ` Nigel Gamble
2001-01-11 21:31         ` David S. Miller
2001-01-15  5:27           ` george anzinger
2001-01-12 13:30         ` Andrew Morton
2001-01-12 15:11           ` Tim Wright [this message]
2001-01-12 22:30             ` Nigel Gamble
2001-01-13  1:01             ` Andrew Morton
2001-01-15 19:46               ` Tim Wright
2001-01-12 22:46           ` Nigel Gamble
2001-01-12 23:08           ` george anzinger
2001-01-21  0:05           ` yodaiken
2001-01-22  0:54             ` Nigel Gamble
2001-01-22  1:49               ` Paul Barton-Davis
2001-01-22  2:21                 ` Nigel Gamble
2001-01-22  3:31                   ` J Sloan
2001-01-28 13:14                   ` yodaiken
2001-01-28 14:07                     ` Bill Huey
2001-01-28 14:26                       ` Andrew Morton
2001-01-29  5:02                       ` yodaiken
2001-01-28 14:19                     ` Andrew Morton
2001-01-28 16:17                       ` Joe deBlaquiere
2001-01-29 15:44                         ` yodaiken
2001-01-29 17:23                           ` Joe deBlaquiere
2001-01-29 17:38                             ` yodaiken
2001-01-29 18:03                               ` Joe deBlaquiere
2001-01-30 15:08                           ` David Woodhouse
2001-01-30 15:44                             ` Joe deBlaquiere
2001-01-30 16:29                               ` Paul Davis
2001-01-30 16:35                                 ` David Woodhouse
2001-01-31  7:55                               ` george anzinger
2001-01-30 16:19                             ` David Woodhouse
2001-02-01 12:40                               ` Pavel Machek
2001-02-01 22:33                                 ` David Woodhouse
2001-02-02  4:17                                   ` Joe deBlaquiere
2001-01-30 20:51                             ` yodaiken
2001-01-30 21:00                               ` David Woodhouse
2001-01-29 22:08                         ` Pavel Machek
2001-01-29 22:31                         ` Roger Larsson
2001-01-29 23:46                           ` Joe deBlaquiere
2001-01-30 15:08                       ` David Woodhouse
2001-01-12 13:21       ` Andrew Morton
2001-01-13  2:45     ` Jay Ts
2001-01-21  0:10       ` yodaiken
2001-01-26  9:14         ` Pavel Machek
2001-01-13 18:11     ` video drivers hog pci bus ? [was:[linux-audio-dev] low-latency scheduling patch for 2.4.0] Jörn Nettingsmeier
2001-01-14 11:35 ` low-latency scheduling patch for 2.4.0 Andrew Morton
2001-01-14 14:38   ` Gregory Maxwell
2001-01-15 10:59     ` Andrew Morton

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=20010112071150.A1653@scutter.internal.splhi.com \
    --to=timw@splhi.com \
    --cc=andrewm@uow.edu.au \
    --cc=davem@redhat.com \
    --cc=linux-audio-dev@ginette.musique.umontreal.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nigel@nrg.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox