mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Davide Libenzi <davidel@xmailserver.org>
To: Ulrich Drepper <drepper@gmail.com>
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: Thu, 3 May 2007 15:14:48 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0705031433470.6502@alien.or.mcafeemobile.com> (raw)
In-Reply-To: <a36005b50705031203w14df6f1fp26e186056b0fdef7@mail.gmail.com>

On Thu, 3 May 2007, Ulrich Drepper wrote:

> On 5/3/07, Davide Libenzi <davidel@xmailserver.org> wrote:
> > 
> > I thought you were talking about the poll/epoll interface in general, and
> > the approach on how to extend it for the very few cases that ppl asks for.
> > but I see we're focusing on futexes ...
> 
> Futexes must be part of the whole approach.  If they cannot sanely be
> integrated the whole approach is more than questionable IMO.

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.



> > I'm not sure if futexes are the best approach to do that, but a way for
> > the user to signal an event into a main event loop is needed.
> 
> I haven't necessarily seen much of this demand and, as you pointed out
> yourself, there is already a completely valid and POSIX compliant way
> to achieve that.  The situation would be very different if you
> couldn't reliably implement this.

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.
The 1024 file cap is a bogus problem. If you decided to leave the POSIX 
compatibility (poll/select) for your code, to use something like epoll, it 
means already that your application is handling quite a huge amount of 
files and the 1024 cap must be out of the way. And here the cost 
associated with each file is already pretty big (inode, dentry, file, and 
buffers - for each one of them). We cannot change that cost. 



> I don't suggest this as a long term solution, it's neither nice nor
> fast.  But it is a way to achieve the goal until a real soution comes
> along.  Signals cannot serve as a justification for introducing these
> new concepts.

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. 
Monolitic and interface-centric solutions, or better, solutions in search 
of a problem, do not fit the "nice" category IMO.
So, let's leave hand-waving and ugly/nice BS out of the picture, and let's 
see what is currently missing.
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.
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? The AIO API is 
already defined, and all you need is a way to signal the main loop that 
AIO events will be ready to be spilled out from the AIO context. And at 
that point you use the *already existing* AIO API for it. Why do you want 
to add another layer on top? What you end up doing, is pushing userspace 
code into the kernel.
The 20 lines AIO patch I posted, simply signals to an eventfd when the 
AIO context has something to be fetched.
Then we have signals and timers, covered in the other two patches. And all 
this works without being bound to an interface. Your application can just 
use poll if it does not have scalability problems.




- Davide



  reply	other threads:[~2007-05-03 22:14 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 [this message]
2007-05-04 15:28                               ` Ulrich Drepper
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=Pine.LNX.4.64.0705031433470.6502@alien.or.mcafeemobile.com \
    --to=davidel@xmailserver.org \
    --cc=akpm@linux-foundation.org \
    --cc=dada1@cosmosbay.com \
    --cc=davi@haxent.com.br \
    --cc=drepper@gmail.com \
    --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®