From: "Ulrich Drepper" <drepper@gmail.com>
To: "Davide Libenzi" <davidel@xmailserver.org>
Cc: "Davi Arnaut" <davi@haxent.com.br>,
"Eric Dumazet" <dada1@cosmosbay.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: Re: [patch 14/22] pollfs: pollable futex
Date: Fri, 4 May 2007 08:28:43 -0700 [thread overview]
Message-ID: <a36005b50705040828l28f1d039oe58224ff18286ecd@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0705031433470.6502@alien.or.mcafeemobile.com>
On 5/3/07, Davide Libenzi <davidel@xmailserver.org> wrote:
> Why is that futexes *must* be part of the "whole solution"? Ppl needs
> solutions to specific problems, not an bloated interface that, like a
> giant blob, includes everything just because it exists.
Sync objects are essential parts of many programs today and most
programs tomorrow. Currently you cannot efficiently implement working
on multiple independent areas which are protected through some sync
object (mutex, condvar, ...). You have to create a separate thread
for each. Looping with the nonlocking mutex, for instance, is no
possibility. This is solved by being able to get events for the
availability of the sync object.
And before you start and claim that this is no common cases take a
look at the waitformultipleobjects (with studdly caps somewhere) for
windows' API. The actual interface is horrible, but the concept is
sound (it comes from VMS). This is the basis of many programs on that
platform. Basically, the central loop contains such a call.
Currently programs would have to be completely redesigned when ported
to Linux if they use any object which cannot be waited on.
There is much more. As I tried to point out in last year's OLS paper,
central loops around such a call are the perfect scalability mechanism
and this is what is needed for the processors from today and tomorrow.
> Before you try to bash a solution becuase it's costly, then you bounce
> back from another angle, and say that a solution (pipes) that uses 2
> descriptors, one file, one inode, one dentry and 4KB of kernel memory for
> each instance, is a perfectly legal solution.
Stop. I call the proposed code costly in terms of the code added to
the kernel which must be maintained and kept in mind when writing the
real next-gen event mechanism. Not having this code in the kernel
certainly would make a difference.
> Fast, I think we have that pretty much covered with Ingo poiting out a few
> flaws in the numbers posted previously. Nice, I'll leave that out.
You again miss the context. I was talking about the pipe-based
solution using a signal handler.
> Epoll scales and already covers a large amount of things you may be
> interested in receiving events from. Basically everything that have a
> working f_op->poll.
epoll doesn't scale if every thread needs its own epoll set. Beside
the overhead this also has huge program design problems: how do you
atomically remove a file descriptor from a collection of epoll sets?
> The other big piece is AIO. Now you can have *another* layer on top of
> AIO, that is included in your blob interface, but why?
I don't know how you arrive at AIO now. kevent itself is independent
of the AIO code which was done at the same time by the same person.
It was just one kernel service which uses the event functionality.
The two must be judged independently.
next prev parent reply other threads:[~2007-05-04 15:28 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-02 5:22 [patch 00/22] pollfs: filesystem abstraction for pollable objects Davi Arnaut
2007-05-02 5:22 ` [patch 01/22] pollfs: kernel-side API header Davi Arnaut
2007-05-02 5:22 ` [patch 02/22] pollfs: file system operations Davi Arnaut
2007-05-02 5:22 ` [patch 03/22] pollfs: asynchronously wait for a signal Davi Arnaut
2007-05-02 5:22 ` [patch 04/22] pollfs: pollable signal Davi Arnaut
2007-05-02 5:22 ` [patch 05/22] pollfs: pollable signal compat code Davi Arnaut
2007-05-02 5:22 ` [patch 06/22] pollfs: export the plsignal system call Davi Arnaut
2007-05-02 5:22 ` [patch 07/22] pollfs: x86, wire up " Davi Arnaut
2007-05-02 5:22 ` [patch 08/22] pollfs: x86_64, " Davi Arnaut
2007-05-02 5:22 ` [patch 09/22] pollfs: pollable hrtimers Davi Arnaut
2007-05-02 21:16 ` Thomas Gleixner
2007-05-02 23:00 ` Davi Arnaut
2007-05-02 5:22 ` [patch 10/22] pollfs: export the pltimer system call Davi Arnaut
2007-05-02 5:22 ` [patch 11/22] pollfs: x86, wire up " Davi Arnaut
2007-05-02 5:22 ` [patch 12/22] pollfs: x86_64, " Davi Arnaut
2007-05-02 5:22 ` [patch 13/22] pollfs: asynchronous futex wait Davi Arnaut
2007-05-02 5:22 ` [patch 14/22] pollfs: pollable futex Davi Arnaut
2007-05-02 5:54 ` Eric Dumazet
2007-05-02 6:16 ` Davi Arnaut
2007-05-02 6:39 ` Eric Dumazet
2007-05-02 6:54 ` Davi Arnaut
2007-05-02 7:11 ` Davi Arnaut
2007-05-02 7:40 ` Ulrich Drepper
2007-05-02 7:55 ` Eric Dumazet
2007-05-02 8:08 ` Ulrich Drepper
2007-05-02 8:49 ` Eric Dumazet
2007-05-02 16:39 ` Ulrich Drepper
2007-05-02 16:59 ` Davi Arnaut
2007-05-02 17:10 ` Ulrich Drepper
2007-05-02 17:29 ` Davide Libenzi
2007-05-02 17:53 ` Ulrich Drepper
2007-05-02 18:21 ` Davide Libenzi
2007-05-03 13:46 ` Ulrich Drepper
2007-05-03 18:24 ` Davide Libenzi
2007-05-03 19:03 ` Ulrich Drepper
2007-05-03 22:14 ` Davide Libenzi
2007-05-04 15:28 ` Ulrich Drepper [this message]
2007-05-04 19:15 ` Davide Libenzi
2007-05-04 19:20 ` 2.6.20.4 / 2.6.21.1 AT91SAM9260-EK oops Ryan Ordway
2007-05-04 23:38 ` [patch 14/22] pollfs: pollable futex Ulrich Drepper
2007-05-05 18:54 ` Davide Libenzi
2007-05-06 7:50 ` Ulrich Drepper
2007-05-06 19:47 ` Davide Libenzi
2007-05-06 19:54 ` Andrew Morton
2007-05-06 20:18 ` Davide Libenzi
2007-05-06 21:57 ` Davi Arnaut
2007-05-07 5:33 ` Ulrich Drepper
2007-05-07 5:46 ` Ulrich Drepper
2007-05-02 17:37 ` Davi Arnaut
2007-05-02 17:49 ` Ulrich Drepper
2007-05-02 18:05 ` Davi Arnaut
2007-05-03 13:40 ` Ulrich Drepper
2007-05-02 12:20 ` Davi Arnaut
2007-05-02 12:39 ` Davi Arnaut
2007-05-02 16:46 ` Ulrich Drepper
2007-05-02 17:05 ` Davi Arnaut
2007-05-02 5:22 ` [patch 15/22] pollfs: export the plfutex system call Davi Arnaut
2007-05-02 5:22 ` [patch 16/22] pollfs: x86, wire up " Davi Arnaut
2007-05-02 5:22 ` [patch 17/22] pollfs: x86_64, " Davi Arnaut
2007-05-02 5:22 ` [patch 18/22] pollfs: check if a AIO event ring is empty Davi Arnaut
2007-05-02 5:22 ` [patch 19/22] pollfs: pollable aio Davi Arnaut
2007-05-02 5:22 ` [patch 20/22] pollfs: export the plaio system call Davi Arnaut
2007-05-02 5:22 ` [patch 21/22] pollfs: x86, wire up " Davi Arnaut
2007-05-02 5:22 ` [patch 22/22] pollfs: x86_64, " Davi Arnaut
2007-05-02 6:05 ` [patch 00/22] pollfs: filesystem abstraction for pollable objects Andrew Morton
2007-05-02 17:28 ` Davide Libenzi
2007-05-02 17:47 ` Davi Arnaut
2007-05-02 18:23 ` Davide Libenzi
2007-05-02 18:50 ` Davi Arnaut
2007-05-02 19:42 ` Davide Libenzi
2007-05-02 20:11 ` Davi Arnaut
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=a36005b50705040828l28f1d039oe58224ff18286ecd@mail.gmail.com \
--to=drepper@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=dada1@cosmosbay.com \
--cc=davi@haxent.com.br \
--cc=davidel@xmailserver.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.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
all inboxes | Powered by JetHome®