From: "Charles 'Buck' Krasic" <krasic@acm.org>
To: Mark Mielke <mark@mark.mielke.cc>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
linux-aio <linux-aio@kvack.org>
Subject: Re: epoll (was Re: [PATCH] async poll for 2.5)
Date: 22 Oct 2002 11:42:17 -0700 [thread overview]
Message-ID: <xu48z0ql3hy.fsf@brittany.cse.ogi.edu> (raw)
In-Reply-To: <20021022172244.GA1314@mark.mielke.cc>
I don't think the big picture is that complicated.
epoll is useful for programs that use the old nonblocking socket API.
It improves performance significantly for a case where poll() and
select() are deficient (large numbers of slow or idle connections).
There are a number of people, including myself, who already use epoll.
At least some of us don't think it is too complicated. I claim most
of the complication is in the nonblocking socket API, in which case
the complexity falls under the category of "the devil you know...".
The old nonblocking socket API (and hence epoll) does nothing for file
IO, and it just doesn't make sense relative to file IO. (EAGAIN,
POLLIN, POLLOUT, etc. aren't terribly useful signals from a disk
device).
So, its a great thing that the new AIO API is forthcoming.
So maybe epoll's moment of utility is only transient. It should have
been in the kernel a long time ago. Is it too late now that AIO is
imminent?
-- Buck
Mark Mielke <mark@mark.mielke.cc> writes:
> On Sat, Oct 19, 2002 at 09:10:52AM -0700, Charles 'Buck' Krasic wrote:
> > Mark Mielke <mark@mark.mielke.cc> writes:
> > > They still represent an excessive complicated model that attempts to
> > > implement /dev/epoll the same way that one would implement poll()/select().
> > epoll is about fixing one aspect of an otherwise well established api.
> > That is, fixing the scalability of poll()/select() for applications
> > based on non-blocking sockets.
>
> epoll is not a poll()/select() enhancement (unless it is used in
> conjuction with poll()/select()). It is a poll()/select()
> replacement.
>
> Meaning... purposefully creating an API that is designed the way one
> would design a poll()/select() loop is purposefully limiting the benefits
> of /dev/epoll.
>
> It's like inventing a power drill to replace the common screw driver,
> but rather than plugging the power drill in, manually turning the
> drill as if it was a socket wrench for the drill bit.
>
> I find it an excercise in self defeat... except that /dev/epoll used the
> same way one would use poll()/select() happens to perform better even
> when it is crippled.
>
> mark
>
> --
> mark@mielke.cc/markm@ncf.ca/markm@nortelnetworks.com __________________________
> . . _ ._ . . .__ . . ._. .__ . . . .__ | Neighbourhood Coder
> |\/| |_| |_| |/ |_ |\/| | |_ | |/ |_ |
> | | | | | \ | \ |__ . | | .|. |__ |__ | \ |__ | Ottawa, Ontario, Canada
>
> One ring to rule them all, one ring to find them, one ring to bring them all
> and in the darkness bind them...
>
> http://mark.mielke.cc/
next prev parent reply other threads:[~2002-10-22 18:36 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-14 22:36 [PATCH] async poll for 2.5 Shailabh Nagar
2002-10-14 22:54 ` John Myers
2002-10-15 15:05 ` Benjamin LaHaise
2002-10-15 17:06 ` Dan Kegel
2002-10-15 17:03 ` Benjamin LaHaise
2002-10-15 17:18 ` Dan Kegel
2002-10-16 2:11 ` Lincoln Dale
2002-10-15 18:09 ` Shailabh Nagar
2002-10-15 18:53 ` Dan Kegel
2002-10-15 18:57 ` Benjamin LaHaise
2002-10-15 20:25 ` John Gardiner Myers
2002-10-15 21:09 ` Dan Kegel
2002-10-15 21:50 ` John Myers
2002-10-15 22:33 ` Davide Libenzi
2002-10-15 22:56 ` John Gardiner Myers
2002-10-15 23:23 ` Davide Libenzi
2002-10-16 19:16 ` John Myers
2002-10-15 21:11 ` Davide Libenzi
2002-10-15 22:01 ` John Gardiner Myers
2002-10-15 22:27 ` Davide Libenzi
2002-10-15 22:36 ` John Gardiner Myers
2002-10-15 22:41 ` Benjamin LaHaise
2002-10-15 23:26 ` John Gardiner Myers
2002-10-15 23:05 ` Davide Libenzi
2002-10-15 23:33 ` John Gardiner Myers
2002-10-16 0:05 ` Davide Libenzi
2002-10-16 0:15 ` John Myers
2002-10-16 14:25 ` Davide Libenzi
2002-10-16 18:15 ` John Gardiner Myers
2002-10-16 19:20 ` Davide Libenzi
2002-10-16 23:31 ` epoll (was Re: [PATCH] async poll for 2.5) John Gardiner Myers
2002-10-16 23:51 ` Davide Libenzi
2002-10-17 18:06 ` John Gardiner Myers
2002-10-17 18:33 ` Davide Libenzi
2002-10-18 19:02 ` John Gardiner Myers
2002-10-18 19:52 ` Davide Libenzi
2002-10-19 0:55 ` John Myers
2002-10-19 5:40 ` Davide Libenzi
2002-10-19 6:59 ` Mark Mielke
2002-10-19 17:26 ` Davide Libenzi
2002-10-19 17:48 ` Dan Kegel
2002-10-19 18:52 ` Charles 'Buck' Krasic
2002-10-19 20:18 ` Charles 'Buck' Krasic
2002-10-19 21:08 ` Dan Kegel
2002-10-22 19:35 ` John Gardiner Myers
2002-10-22 20:06 ` Davide Libenzi
2002-10-22 21:54 ` Erich Nahum
2002-10-22 22:17 ` Dan Kegel
2002-10-22 22:25 ` Davide Libenzi
2002-10-18 21:01 ` Charles 'Buck' Krasic
2002-10-18 21:33 ` Davide Libenzi
2002-10-19 1:05 ` John Myers
2002-10-19 1:27 ` Tervel Atanassov
2002-10-19 18:52 ` John G. Myers
2002-10-19 4:07 ` Charles 'Buck' Krasic
2002-10-16 20:06 ` [PATCH] async poll for 2.5 Mark Mielke
2002-10-16 23:48 ` epoll (was Re: [PATCH] async poll for 2.5) John Gardiner Myers
2002-10-17 0:23 ` Davide Libenzi
2002-10-17 17:45 ` John Myers
2002-10-16 2:45 ` [PATCH] async poll for 2.5 Charles 'Buck' Krasic
2002-10-16 14:28 ` Davide Libenzi
2002-10-17 18:47 ` Charles 'Buck' Krasic
2002-10-17 19:20 ` Davide Libenzi
2002-10-18 3:30 ` Dan Kegel
2002-10-16 18:29 ` John Gardiner Myers
2002-10-16 20:39 ` Charles 'Buck' Krasic
2002-10-17 17:59 ` epoll (was Re: [PATCH] async poll for 2.5) John Gardiner Myers
2002-10-21 16:58 ` [PATCH] async poll for 2.5 Alan Cox
2002-10-21 16:50 ` Benjamin LaHaise
2002-10-16 19:59 ` Dan Kegel
2002-10-16 20:03 ` Dan Kegel
2002-10-17 17:43 ` epoll (was Re: [PATCH] async poll for 2.5) John Myers
2002-10-18 17:00 ` Mark Mielke
2002-10-18 17:28 ` Dan Kegel
2002-10-18 17:41 ` Davide Libenzi
2002-10-18 18:55 ` Mark Mielke
2002-10-18 19:16 ` Davide Libenzi
2002-10-19 6:56 ` Mark Mielke
2002-10-19 16:10 ` Charles 'Buck' Krasic
2002-10-22 17:22 ` Mark Mielke
2002-10-22 17:46 ` Dan Kegel
2002-10-22 17:47 ` Davide Libenzi
2002-10-22 18:13 ` Alan Cox
2002-10-22 18:18 ` Davide Libenzi
2002-10-22 18:37 ` Benjamin LaHaise
2002-10-22 19:22 ` John Gardiner Myers
2002-10-22 19:28 ` Benjamin LaHaise
2002-10-22 19:50 ` John Gardiner Myers
2002-10-22 20:00 ` Benjamin LaHaise
2002-10-22 20:23 ` async poll John Myers
2002-10-23 11:10 ` Latest aio code (was Re: [PATCH] async poll for 2.5) Suparna Bhattacharya
2002-10-22 19:49 ` epoll " Davide Libenzi
2002-10-22 18:42 ` Charles 'Buck' Krasic [this message]
2002-10-22 19:35 ` Davide Libenzi
2002-10-23 16:49 ` Dan Kegel
2002-10-23 17:39 ` Benjamin LaHaise
2002-10-23 18:47 ` Davide Libenzi
2002-10-23 21:18 ` Benjamin LaHaise
2002-10-23 21:35 ` Davide Libenzi
2002-10-23 21:39 ` John Gardiner Myers
2002-10-23 21:54 ` Davide Libenzi
2002-10-23 17:49 ` Charles 'Buck' Krasic
2002-10-23 18:14 ` Davide Libenzi
2002-10-23 18:32 ` Charles 'Buck' Krasic
2002-10-23 20:36 ` async poll John Myers
2002-10-23 20:57 ` Dan Kegel
2002-10-23 21:23 ` John Gardiner Myers
2002-10-23 21:51 ` Davide Libenzi
2002-10-23 21:51 ` bert hubert
2002-10-23 22:10 ` Davide Libenzi
2002-10-23 21:54 ` John Gardiner Myers
2002-10-23 22:22 ` Davide Libenzi
2002-10-23 22:29 ` John Gardiner Myers
2002-10-23 22:50 ` Davide Libenzi
2002-10-24 7:32 ` Eduardo Pérez
2002-10-24 15:05 ` Charles 'Buck' Krasic
2002-10-23 22:24 ` Dan Kegel
2002-10-23 22:30 ` Davide Libenzi
2002-10-23 22:53 ` Davide Libenzi
2002-10-23 21:13 ` Charles 'Buck' Krasic
2002-10-19 17:19 ` epoll (was Re: [PATCH] async poll for 2.5) Davide Libenzi
2002-10-18 18:55 ` Chris Friesen
2002-10-18 19:00 ` Mark Mielke
2002-10-15 17:38 ` [PATCH] async poll for 2.5 Shailabh Nagar
2002-10-15 17:50 ` Benjamin LaHaise
2002-10-15 18:16 ` Davide Libenzi
2002-10-15 18:18 ` Shailabh Nagar
2002-10-15 19:00 ` Davide Libenzi
2002-10-15 19:02 ` Benjamin LaHaise
2002-10-15 18:59 ` Shailabh Nagar
2002-10-15 19:16 ` Davide Libenzi
2002-10-15 19:12 ` Benjamin LaHaise
2002-10-15 19:31 ` Davide Libenzi
2002-10-15 19:38 ` Dan Kegel
2002-10-15 19:55 ` Davide Libenzi
2002-10-15 20:36 ` John Gardiner Myers
2002-10-15 20:39 ` Benjamin LaHaise
2002-10-15 19:02 ` Davide Libenzi
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=xu48z0ql3hy.fsf@brittany.cse.ogi.edu \
--to=krasic@acm.org \
--cc=linux-aio@kvack.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark@mark.mielke.cc \
/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®