From: ebiederm@xmission.com (Eric W. Biederman)
To: Dan Kegel <dank@kegel.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Gordon Oliver <gordo@pincoya.com>
Subject: Re: [PATCH] /dev/epoll update ...
Date: 24 Sep 2001 13:11:25 -0600 [thread overview]
Message-ID: <m1g09c76aq.fsf@frodo.biederman.org> (raw)
In-Reply-To: <3BAEB39B.DE7932CF@kegel.com>
In-Reply-To: <3BAEB39B.DE7932CF@kegel.com>
Dan Kegel <dank@kegel.com> writes:
> As Davide points out in his reply, /dev/epoll is an exact clone of
> the O_SETSIG/O_SETOWN/O_ASYNC realtime signal way of getting readiness
> change events, but using a memory-mapped buffer instead of signal delivery
> (and obeying an interest mask). Unlike /dev/poll, it only provides
> information about *changes* in readiness.
Right. But it does one additional thing that the rtsig method doesn't
it collapses multiple readiness *changes* into a single readiness change.
This allows the kernel to keep a fixed size buffer so you never need
to fallback to poll as you need to with the rtsig approach.
> I think there is still some confusion out there because of the name
> Davide chose; /dev/epoll is so close to /dev/poll that it lulls many
> people (myself included) into thinking it's a very similar thing. It ain't.
> (I really have to fix my c10k page to reflect that correctly...)
Hmm. /dev/epoll could and possibly should remove the readiness event
if the fd becomes unready before someone gets to reading the
/dev/epoll buffer. This is a natural extension of collapsing events.
But even with that it would still only give you the state as of the
last state change. And it you have the state already it expects user
space to remember the state and not the kernel. Which is both
different from /dev/poll and more efficient.
If the goal is to minimize system calls letting user space assume the
state is initially not ready. And forcing a state query when
the fd is added should help. I cannot think of a case where having
the kernel do the query would be necessary though.
If the goal is simply to provide a highly scalable event interface.
The current /dev/epoll sounds very good. Though I'm not at all
thrilled with the user space interface. As far as I can tell the case
of a fd becoming not ready is unlikely enough that it probably doesn't
need to be handled.
Eric
next prev parent reply other threads:[~2001-09-24 19:20 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-24 4:16 [PATCH] /dev/epoll update Dan Kegel
2001-09-24 19:11 ` Eric W. Biederman [this message]
2001-09-24 19:34 ` Jamie Lokier
2001-09-24 20:09 ` Davide Libenzi
2001-09-24 21:56 ` Jamie Lokier
2001-09-24 22:08 ` Davide Libenzi
2001-09-24 22:09 ` Jamie Lokier
2001-09-24 22:20 ` Davide Libenzi
2001-09-24 22:21 ` Jamie Lokier
2001-09-24 22:30 ` Davide Libenzi
2001-09-25 9:25 ` Dan Kegel
[not found] ` <3BAF83EF.C8018E45@distributopia.com>
2001-09-25 8:12 ` Dan Kegel
-- strict thread matches above, loose matches on Subject: below --
2002-03-20 3:49 [patch] " Davide Libenzi
[not found] <local.mail.linux-kernel/3BB03C6A.7D1DD7B3@kegel.com>
[not found] ` <local.mail.linux-kernel/3BAEB39B.DE7932CF@kegel.com>
[not found] ` <local.mail.linux-kernel/3BAF83EF.C8018E45@distributopia.com>
2001-09-25 17:36 ` [PATCH] " Jonathan Lemon
2001-09-25 18:34 ` Dan Kegel
2001-09-21 6:22 Dan Kegel
2001-09-21 18:45 ` Davide Libenzi
2001-09-19 2:20 Dan Kegel
2001-09-19 6:25 ` Dan Kegel
2001-09-19 7:04 ` Christopher K. St. John
2001-09-19 15:37 ` Dan Kegel
2001-09-19 15:59 ` Zach Brown
2001-09-19 17:12 ` Christopher K. St. John
2001-09-19 17:39 ` Davide Libenzi
2001-09-19 18:26 ` Alan Cox
2001-09-19 17:25 ` Davide Libenzi
2001-09-19 19:03 ` Christopher K. St. John
2001-09-19 19:30 ` Davide Libenzi
2001-09-19 21:49 ` Christopher K. St. John
2001-09-19 22:11 ` Davide Libenzi
2001-09-19 23:24 ` Christopher K. St. John
2001-09-19 23:52 ` Davide Libenzi
2001-09-20 2:13 ` Dan Kegel
2001-09-20 2:28 ` Davide Libenzi
2001-09-20 3:03 ` Dan Kegel
2001-09-20 16:58 ` Davide Libenzi
2001-09-20 4:32 ` Christopher K. St. John
2001-09-20 4:43 ` Christopher K. St. John
2001-09-20 5:05 ` Benjamin LaHaise
2001-09-20 18:25 ` Davide Libenzi
2001-09-20 19:33 ` Benjamin LaHaise
2001-09-20 19:58 ` Davide Libenzi
2001-09-20 17:18 ` Davide Libenzi
2001-09-24 0:11 ` Gordon Oliver
2001-09-24 0:33 ` Davide Libenzi
2001-09-24 19:23 ` Eric W. Biederman
2001-09-24 20:04 ` Davide Libenzi
2001-09-21 5:59 ` Ton Hospel
2001-09-21 16:48 ` Davide Libenzi
2001-09-19 17:21 ` Davide Libenzi
2001-09-07 19:27 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=m1g09c76aq.fsf@frodo.biederman.org \
--to=ebiederm@xmission.com \
--cc=dank@kegel.com \
--cc=gordo@pincoya.com \
--cc=linux-kernel@vger.kernel.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