From: "David Schwartz" <davids@webmaster.com>
To: "Davide Libenzi" <davidel@xmailserver.org>
Cc: <linux-kernel@vger.kernel.org>
Subject: RE: Why use threads ( was: Alan Cox quote?)
Date: Wed, 20 Jun 2001 19:43:09 -0700 [thread overview]
Message-ID: <NCBBLIEPOCNJOAEKBEAKCEPBPPAA.davids@webmaster.com> (raw)
In-Reply-To: <XFMail.20010620192245.davidel@xmailserver.org>
> Just to summarize :
> 1) You said to handle 16000 sessions with 10 threads
> 2) I said: "Humm, you've to select() about 1600 fds ..."
> 3) You said : "Who said anything about 'select'?"
You can use any I/O model you want. I've suggested several.
> The stuff above looks like select() to me.
I'm not sure what that has to do with anything.
> About the scale factor of select()/poll() my agreement is only partial.
> Have You ecer observed that Your processes tend to become a bit
> CPU bound when
> stocking a lot of fds inside a poll ?
Okay, let's compare two servers.
Server one is handling 10 file descriptors. The cost of a single call to
poll is 3 microseconds. Assume that the server is coded to get back to
'poll' as quickly as it can, but due to load the code manages to call 'poll'
every 100 microseconds, so the overhead of poll is 3% of the available CPU.
Now server two, with identical hardware and software, is handling 10,000
file descriptors. The cost of a single call to poll is now 3,000
microseconds (assuming 'poll' scales linearly, it actually scales slightly
better than linearly). Since this code is 1,000 times busier, assume it gets
around to calling 'poll' every 100,000 microseconds. Note that, percentage
wise, the overhead of poll is the same, 3%.
It is actually even better than this. For one thing, in the second case,
the less-frequent calls to poll mean that you do more I/O per poll call per
connection, because there is more time in between calls to 'recv' for data
to go into the buffers. This also means more 'full reads' and fewer 'partial
reads' which improves your buffer handling signifantly. Same is true for
your 'write' calls, the less often you call 'write' the more often
(percentage wise) you'll write all you tried to write.
Now this assumes no clever tricks to improve poll's scalability. This
doesn't even consider the fact that calling 'poll' less often means that a
higher percentage of sockets will be discovered per call to poll.
Again, the problems with select/poll are not about scalability, they're
about performance (in terms of absolute CPU consumption) at low load levels
with large numbers of file descriptors.
In contrast, if you had 1,600 execution vehicles instead of 10, you would
suffer more context switches, more memory overhead for stacks, and you would
incur one kernel/user transition for each socket discovered instead of far
fewer. In addition, a much higher percentage of your I/O operations would
block, and blocking operations are more expensive than those that don't
result in a block.
DS
next prev parent reply other threads:[~2001-06-21 2:43 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-06-19 14:53 accounting for threads Dan Kegel
2001-06-19 14:57 ` J . A . Magallon
2001-06-19 15:44 ` ognen
2001-06-19 15:58 ` Alan Cox quote? (was: Re: accounting for threads) Dan Kegel
2001-06-19 16:02 ` David S. Miller
2001-06-19 16:12 ` Padraig Brady
2001-06-19 19:10 ` bert hubert
2001-06-19 19:18 ` Alan Cox
2001-06-19 19:32 ` bert hubert
2001-06-19 19:43 ` Alexander Viro
2001-06-20 15:22 ` Jes Sorensen
2001-06-20 15:33 ` Alexander Viro
2001-06-20 15:59 ` Threads are processes that share more bert hubert
2001-06-20 16:15 ` Alexander Viro
2001-06-20 18:48 ` Martin Devera
2001-06-20 19:19 ` Unknown PCI Net Device Greg Ingram
2001-06-20 22:53 ` Andreas Dilger
2001-06-20 22:56 ` Jeff Garzik
2001-06-20 23:00 ` Alan Cox
2001-06-20 22:08 ` Threads are processes that share more Stephen Satchell
2001-06-20 22:14 ` ognen
2001-06-20 23:10 ` J . A . Magallon
2001-06-24 23:47 ` Larry McVoy
2001-06-25 2:23 ` David S. Miller
2001-06-20 16:39 ` Alan Cox quote? (was: Re: accounting for threads) george anzinger
2001-06-20 18:35 ` Alexander Viro
2001-06-21 4:11 ` Rusty Russell
2001-06-21 23:37 ` Alexander Viro
2001-06-21 23:55 ` Alexander Viro
2001-06-22 14:53 ` Richard Gooch
2001-06-20 16:40 ` Jes Sorensen
2001-06-20 20:09 ` Rob Landley
2001-06-20 19:05 ` Victor Yodaiken
2001-06-20 14:35 ` Mike Porter
2001-06-20 11:56 ` Rob Landley
2001-06-19 16:02 ` Ben Pfaff
2001-06-19 16:09 ` Larry McVoy
2001-06-19 16:26 ` Matthew Kirkwood
2001-06-19 16:52 ` Larry McVoy
2001-06-19 18:18 ` Rob Landley
2001-06-19 23:31 ` Timur Tabi
2001-06-20 11:52 ` Rob Landley
2001-06-20 21:20 ` Albert D. Cahalan
2001-06-20 18:12 ` Rob Landley
2001-06-20 23:28 ` Dan Podeanu
2001-06-21 0:42 ` D. Stimits
2001-06-20 20:18 ` Rob Landley
2001-06-21 1:57 ` D. Stimits
2001-06-21 14:46 ` Idea: Patches-from-linus mailing list? (Was Re: Alan Cox quote? (was: Re: accounting for threads)) Rob Landley
2001-06-21 14:02 ` Alan Cox quote? (was: Re: accounting for threads) Jesse Pollard
2001-06-21 14:18 ` Rob Landley
2001-06-22 14:46 ` Mikulas Patocka
2001-06-22 13:29 ` Rob Landley
2001-06-24 21:41 ` J . A . Magallon
2001-06-24 16:55 ` Rob Landley
2001-06-24 22:30 ` J . A . Magallon
2001-06-24 18:21 ` Rob Landley
2001-06-25 13:48 ` J . A . Magallon
2001-06-24 22:39 ` Steven Walter
2001-06-24 23:50 ` Larry McVoy
2001-06-24 20:24 ` Rob Landley
2001-06-25 0:05 ` J . A . Magallon
2001-06-25 0:32 ` Gerhard Mack
2001-06-25 0:59 ` Davide Libenzi
2001-06-25 2:18 ` Galen Hancock
2001-06-20 14:59 ` Matthias Urlichs
2001-06-20 19:14 ` Victor Yodaiken
2001-06-20 21:01 ` RE:Why use threads ( was: Alan Cox quote?) David Schwartz
2001-06-20 21:26 ` Why " Victor Yodaiken
2001-06-20 22:18 ` David Schwartz
2001-06-20 22:41 ` Davide Libenzi
2001-06-20 22:47 ` [OT] " Jeff Garzik
2001-06-21 0:21 ` David Schwartz
2001-06-21 0:56 ` Davide Libenzi
2001-06-21 1:32 ` David Schwartz
2001-06-21 2:22 ` Davide Libenzi
2001-06-21 2:43 ` David Schwartz [this message]
2001-06-21 16:10 ` Davide Libenzi
2001-06-21 19:55 ` Marco Colombo
2001-06-20 22:43 ` Mike Castle
2001-06-21 1:43 ` David Schwartz
2001-06-19 17:10 ` Alan Cox quote? (was: Re: accounting for threads) Matti Aarnio
2001-06-19 17:20 ` Mike Castle
2001-06-19 17:37 ` Larry McVoy
2001-06-19 17:45 ` Mike Castle
2001-06-19 18:08 ` Georg Nikodym
2001-06-19 19:38 ` Georg Nikodym
2001-06-19 19:56 ` Michael Meissner
2001-06-19 17:53 ` Steve Underwood
2001-06-19 19:01 ` Alan Cox
2001-06-20 2:57 ` Michael Rothwell
2001-06-20 3:04 ` Larry McVoy
2001-06-20 3:38 ` John R Lenton
2001-06-20 10:21 ` john slee
2001-06-20 18:08 ` Larry McVoy
2001-06-20 16:21 ` Davide Libenzi
2001-06-20 9:14 ` Alan Cox
2001-06-22 2:36 ` Michael Rothwell
2001-06-19 17:36 ` Jonathan Lundell
2001-06-19 17:41 ` Larry McVoy
2001-06-19 20:57 ` David S. Miller
2001-06-19 21:11 ` Jonathan Lundell
2001-06-19 21:15 ` David S. Miller
2001-06-19 23:56 ` Jonathan Lundell
2001-06-20 0:19 ` Mike Castle
2001-06-20 0:28 ` Larry McVoy
2001-06-20 1:30 ` Ben Greear
2001-06-20 2:14 ` Mike Castle
2001-06-20 9:00 ` Henning P. Schmiedehausen
2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann
2001-06-20 11:25 ` Rob Landley
2001-06-20 17:36 ` Martin Dalecki
2001-06-20 19:27 ` Mike Harrold
2001-06-20 17:46 ` Rob Landley
2001-06-20 19:53 ` Martin Dalecki
2001-06-20 17:53 ` Rob Landley
2001-06-21 7:45 ` Albert D. Cahalan
[not found] ` <mailman.993067219.29993.linux-kernel2news@redhat.com>
2001-06-20 20:16 ` Pete Zaitcev
2001-06-20 22:05 ` Alan Cox
[not found] ` <20010621000725.A24672@werewolf.able.es>
2001-06-20 19:15 ` Rob Landley
2001-06-21 9:40 ` Jonathan Morton
[not found] ` <mailman.993083762.1429.linux-kernel2news@redhat.com>
2001-06-21 3:13 ` Pete Zaitcev
2001-06-21 13:59 ` Rob Landley
2001-06-21 16:48 ` Adam Sampson
2001-06-20 15:12 ` Ben Greear
2001-06-20 15:44 ` Russell Leighton
2001-06-20 16:32 ` Davide Libenzi
2001-06-20 16:54 ` Russell Leighton
2001-06-20 17:03 ` Tony Hoyle
2001-06-20 15:10 ` Rob Landley
2001-06-20 20:23 ` Tony Hoyle
2001-06-21 8:12 ` Henning P. Schmiedehausen
2001-06-20 20:40 ` Richard B. Johnson
2001-06-20 20:48 ` Tony Hoyle
2001-06-20 21:00 ` Daniel Phillips
2001-06-20 21:06 ` Richard B. Johnson
2001-06-20 18:14 ` Henning P. Schmiedehausen
2001-06-20 16:53 ` Larry McVoy
2001-06-20 12:36 ` Rob Landley
2001-06-20 21:14 ` Aaron Lehmann
2001-06-20 18:09 ` Henning P. Schmiedehausen
2001-06-20 19:05 ` William T Wilson
2001-06-20 0:04 ` Alan Cox quote? (was: Re: accounting for threads) Chris Ricker
2001-06-20 0:59 ` Robert Love
2001-06-19 18:01 ` Alan Cox quote? Kai Henningsen
2001-06-19 18:49 ` Larry McVoy
2001-06-19 21:12 ` Richard Gooch
2001-06-19 22:50 ` Henning P. Schmiedehausen
2001-06-19 20:12 ` Henning P. Schmiedehausen
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=NCBBLIEPOCNJOAEKBEAKCEPBPPAA.davids@webmaster.com \
--to=davids@webmaster.com \
--cc=davidel@xmailserver.org \
--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