From: Hubertus Franke <frankeh@watson.ibm.com>
To: Rusty Russell <rusty@rustcorp.com.au>,
Linus Torvalds <torvalds@transmeta.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Futexes IV (Fast Lightweight Userspace Semaphores)
Date: Tue, 12 Mar 2002 09:56:42 -0500 [thread overview]
Message-ID: <20020312145542.2C8613FE06@smtp.linux.ibm.com> (raw)
In-Reply-To: <E16kgaz-0007ry-00@wagner.rustcorp.com.au>
In-Reply-To: <E16kgaz-0007ry-00@wagner.rustcorp.com.au>
On Tuesday 12 March 2002 02:20 am, Rusty Russell wrote:
> In message <Pine.LNX.4.33.0203111441120.17864-100000@penguin.transmeta.com>
> you
>
> write:
> > On Sat, 9 Mar 2002, Rusty Russell wrote:
> > > > So I would suggest making the size (and thus alignment check) of
> > > > locks at least 8 bytes (and preferably 16). That makes it slightly
> > > > harder to put locks on the stack, but gcc does support stack
> > > > alignment, even if the cod
>
> e
>
> > > > sucks right now.
> > >
> > > Actually, I disagree.
> > >
> > > 1) We've left wiggle room in the second arg to sys_futex() to add
> > > rwsems later if required.
> > > 2) Someone needs to implement them and prove they are superior to the
> > > pure userspace solution.
> >
> > You've convinced me.
>
> Damn. Because now I've been playing with a different approach.
>
> If we basically export "add_to_waitqueue", "del_from_waitqueue",
> "wait_for_waitqueue" and "wakeup_waitqueue" syscalls, we have a more
> powerful interface: the kernel need not touch userspace addresses at
> all (no kmap/kunmap, no worried about spinlocks vs. rwlocks).
>
> The problem is that this fundamentally requires at least two syscalls
> in the slow path (add_to_waitqueue, try for lock, wait_for_waitqueue).
> My tests here show it's about 6% slower than the solution you accepted
> for tdbtorture (which means the slow path is significantly slower). I
> can't imagine shaving that much more off it.
>
> There are variations on this: cookie could be replaces the page struct
> and the offset, ala futexes.
>
> Thoughts?
> Rusty.
>
> PS. Kudos: it was Ben LaHaise's idea to export waitqueues, but I
> didn't see how to do it until Paul M made a bad joke about two
> syscalls....
Rusty, aren't you now going back to the design that I implemented after Ben's
comments.
>From the get-go, I never touched the user address in the kernel, as I thought
it would require detailed knowledge of the user level locking strategy.
Could you explain, why you need add_to_waitqueue and wait_for_waitqueue as
separate calls ? Is it for resolving a race conditions ?
One comment with respect to multiple wait queues and rwsems:
Again it will allow you to do reader-pref and/or writer-pref, but not
something like FIFO, i.e. wake up a writer if first waiter or wake up all
readers if first ..... and so on.
I don't know whether the latter is terrible important ...
--
-- Hubertus Franke (frankeh@watson.ibm.com)
next prev parent reply other threads:[~2002-03-12 14:56 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-03-05 7:01 [PATCH] Futexes IV (Fast Lightweight Userspace Semaphores) Rusty Russell
2002-03-05 21:23 ` Futexes III : performance numbers Hubertus Franke
2002-03-06 2:08 ` Rusty Russell
2002-03-06 14:28 ` Hubertus Franke
2002-03-06 17:23 ` [Lse-tech] " george anzinger
2002-03-07 0:25 ` Hubertus Franke
2002-03-07 0:35 ` Hubertus Franke
2002-03-05 22:39 ` [PATCH] Futexes IV (Fast Lightweight Userspace Semaphores) Davide Libenzi
2002-03-05 23:16 ` Hubertus Franke
2002-03-05 23:26 ` Davide Libenzi
2002-03-05 23:37 ` Peter Svensson
2002-03-05 23:50 ` Davide Libenzi
2002-03-08 0:07 ` Richard Henderson
2002-03-06 1:46 ` Rusty Russell
2002-03-06 2:03 ` Davide Libenzi
2002-03-06 7:54 ` Futexes III : performance numbers Rusty Russell
2002-03-06 14:46 ` Hubertus Franke
2002-03-06 16:13 ` Hubertus Franke
2002-03-06 20:36 ` Futexes V : Hubertus Franke
2002-03-07 4:21 ` Rusty Russell
2002-03-08 18:07 ` [PATCH] Futexes IV (Fast Lightweight Userspace Semaphores) Linus Torvalds
2002-03-08 19:03 ` Hubertus Franke
2002-03-08 19:22 ` Linus Torvalds
2002-03-08 20:29 ` Hubertus Franke
2002-03-08 20:48 ` Matthew Kirkwood
2002-03-08 21:02 ` Linus Torvalds
2002-03-08 23:15 ` Hubertus Franke
2002-03-08 23:36 ` Alan Cox
2002-03-08 23:41 ` Linus Torvalds
2002-03-08 23:56 ` Hubertus Franke
2002-03-09 2:12 ` Linus Torvalds
2002-03-11 14:14 ` Hubertus Franke
2002-03-09 0:03 ` H. Peter Anvin
2002-03-09 1:15 ` Alan Cox
2002-03-10 19:41 ` Linus Torvalds
2002-03-11 20:49 ` Pavel Machek
2002-03-10 19:58 ` Martin J. Bligh
2002-03-10 20:40 ` Alan Cox
2002-03-10 20:28 ` Martin J. Bligh
2002-03-10 21:05 ` Alan Cox
2002-03-13 7:40 ` Rusty Russell
2002-03-13 16:37 ` Alan Cox
2002-03-12 9:35 ` Helge Hafting
2002-03-08 20:40 ` Alan Cox
2002-03-08 20:57 ` Linus Torvalds
2002-03-08 23:43 ` H. Peter Anvin
2002-03-08 22:55 ` Hubertus Franke
2002-03-08 23:38 ` Alan Cox
2002-03-08 23:44 ` H. Peter Anvin
2002-03-08 20:47 ` george anzinger
2002-03-08 23:02 ` Hubertus Franke
2002-03-08 23:47 ` george anzinger
2002-03-09 1:11 ` Alan Cox
2002-03-09 1:20 ` Linus Torvalds
2002-03-09 4:49 ` Rusty Russell
2002-03-11 22:45 ` Linus Torvalds
2002-03-11 23:12 ` Hubertus Franke
2002-03-12 7:20 ` Rusty Russell
2002-03-12 14:56 ` Hubertus Franke [this message]
2002-03-13 4:02 ` Rusty Russell
2002-03-12 17:17 ` Linus Torvalds
2002-03-13 2:57 ` Rusty Russell
2002-03-09 4:51 ` Rusty Russell
2002-03-13 9:12 Martin Wirth
2002-03-13 19:41 ` Bill Davidsen
2002-03-13 19:52 ` Dave McCracken
2002-03-13 22:17 ` Bill Davidsen
2002-03-13 20:06 ` Alan Cox
2002-03-15 7:31 ` Rusty Russell
2002-03-15 8:41 ` Martin Wirth
2002-03-15 15:29 ` Hubertus Franke
2002-03-15 16:23 ` Peter Wächtler
2002-03-16 0:12 ` Rusty Russell
2002-03-16 11:23 ` Martin Wirth
2002-03-18 0:52 ` Ulrich Drepper
2002-03-19 3:28 ` Rusty Russell
2002-03-19 4:05 ` Ulrich Drepper
2002-03-20 6:20 ` Rusty Russell
2002-03-20 10:42 ` Peter Wächtler
2002-03-20 17:20 ` Ulrich Drepper
2002-03-19 8:34 ` Martin Wirth
2002-03-20 6:45 ` Rusty Russell
2002-03-21 6:48 ` Martin Wirth
2002-03-24 18:25 ` Peter Wächtler
2002-03-25 2:28 ` Rusty Russell
2002-03-25 4:46 ` Rusty Russell
2002-03-25 11:56 ` Peter Wächtler
2002-03-26 1:02 ` Rusty Russell
2002-03-26 8:17 ` Martin Wirth
2002-03-26 23:10 ` Rusty Russell
2002-03-27 21:05 ` Hubertus Franke
2002-03-27 23:53 ` Rusty Russell
2002-03-25 9:47 ` Peter Wächtler
2002-03-16 19:48 ` Peter Wächtler
2002-03-17 6:50 ` Rusty Russell
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=20020312145542.2C8613FE06@smtp.linux.ibm.com \
--to=frankeh@watson.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=torvalds@transmeta.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).