From: Davide Libenzi <davidel@xmailserver.org>
To: "Christopher K. St. John" <cks@distributopia.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] /dev/epoll update ...
Date: Thu, 20 Sep 2001 10:18:21 -0700 (PDT) [thread overview]
Message-ID: <XFMail.20010920101821.davidel@xmailserver.org> (raw)
In-Reply-To: <3BA97155.4D2D53AC@distributopia.com>
On 20-Sep-2001 Christopher K. St. John wrote:
> Davide Libenzi wrote:
>>
>> Here are examples basic functions when used with
>> coroutines.
>>
>
> I think all might be made clear if you did a quick
> test harness that didn't use coroutines. I'm guessing
> the vast majority of potential users will not be using
> a coroutine library.
>
> On "nio-improve" page, you've got:
>
> for (;;) {
> evp.ep_timeout = STD_SCHED_TIMEOUT;
> evp.ep_resoff = 0;
> nfds = ioctl(kdpfd, EP_POLL, &evp);
> pfds = (struct pollfd *) (map + evp.ep_resoff);
> for (ii = 0; ii < nfds; ii++, pfds++) {
> ...
> }
> }
Coroutines or not, this does not change the picture.
All multiplexed servers have an IO driven scheduler that calls
code sections based on the fd.
Obviously if you've a one-thread-per-socket model, epoll is not your answer.
> Assume your server is so overloaded that you need
> to avoid any unproductive calls to read() or write()
> or accept(). Assume that instead of many very fast
> connections coming in at a furious rate, you get a
> large steady current of very slow connections.
>>>> Sorry, bad editing, that should be:
>> Assume a large but bursty current of low bandwidth
>> high latency connections instead of a continuous steady
>> flood of high bandwidth low latency connections.
> If you try to flesh out the above template with those
> goals in mind, I think you'll quickly see what I've
> been trying to get at with regard to the awkwardness
> of not getting back some indication of the initial
> state of the fd.
>
> The current situation isn't fatal, just awkward. And
> fixable. For the low low price of a tiny bit of
> idealogical purity...
Again, no.
If you need to request the current status of a socket you've to f_ops->poll the fd.
The cost of the extra read, done only for fds that are not "ready", is nothing
compared to the cost of a linear scan with HUGE numbers of fds.
You could implement a solution where the low level io functions goes directly to write
inside the mmapped fd set where the data buffer is empty or the out buffer is full.
This would be a way more intrusive patch whose perf gain won't match the cost.
- Davide
next prev parent reply other threads:[~2001-09-20 17:14 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-19 2:20 [PATCH] /dev/epoll update 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 [this message]
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
-- 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-24 4:16 Dan Kegel
2001-09-24 19:11 ` Eric W. Biederman
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
2001-09-21 6:22 Dan Kegel
2001-09-21 18:45 ` 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=XFMail.20010920101821.davidel@xmailserver.org \
--to=davidel@xmailserver.org \
--cc=cks@distributopia.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