public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Kev <klmitch@MIT.EDU>
To: Dan Kegel <dank@kegel.com>
Cc: Vincent Sweeney <v.sweeney@barrysworld.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"coder-com@undernet.org" <coder-com@undernet.org>,
	"Kevin L. Mitchell" <klmitch@MIT.EDU>
Subject: Re: PROBLEM: high system usage / poor SMP network performance
Date: Sun, 03 Feb 2002 14:22:28 -0500	[thread overview]
Message-ID: <200202031922.OAA17250@multics.mit.edu> (raw)
In-Reply-To: Your message of "Sun, 03 Feb 2002 00:03:57 PST." <3C5CEEED.E98D35B7@kegel.com>

> Hmm.  Have a look at
> http://www.mail-archive.com/coder-com@undernet.org/msg00060.html
> It looks like the mainline Undernet ircd was rewritten around May 2001
> to support high efficiency techniques like /dev/poll and kqueue.
> The source you pointed to is way behind Undernet's current sources.

This code is still in beta testing, by the way.  It's certainly not the
prettiest way of doing it, though, and I've started working on a new
implementation of the basic idea in a library, which I will then use in
a future version of Undernet's ircd.

> Undernet's ircd has engine_{select,poll,devpoll,kqueue}.c, 
> but not yet an engine_rtsig.c, as far as I know.
> If you want ircd to handle zillions of simultaneous connections
> on a stock 2.4 Linux kernel, rtsignals are the way to go at the
> moment.  What's needed is to write ircd's engine_rtsig.c, and 
> modify ircd's os_linux.c to notice EWOULDBLOCK
> return values and feed them to engine_rtsig.c (that's the icky
> part about the way linux currently does this kind of event 
> notification - signals are used for 'I'm ready now', but return
> values from I/O functions are where you learn 'I'm no longer ready').

I haven't examined the usage of the realtime signals stuff, but I did
originally choose not to bother with it.  It may be possible to set up
an engine that uses it, and if anyone gets it working, I sure wouldn't
mind seeing the patches.  Still, I'd say that the best bet is probably
to either use the /dev/poll patch for linux, or grab the /dev/epoll patch
and implement a new engine to use it.  (I should note that I haven't tried
either of these patches, yet, so YMMV.)

> So I dunno if I'm going to go ahead and do that myself, but at least I've
> scoped out the situation.  Before I did any work, I'd measure CPU
> usage under a simulated load of 2000 clients, just to verify that
> poll() was indeed a bottleneck (ok, can't imagine it not being a
> bottleneck, but it's nice to have a baseline to compare the improved
> version against).

I'm very certain that poll() is a bottle-neck in any piece of software like
ircd.  I have some preliminary data which suggests that not only does the
/dev/poll engine reduce the load averages, but that it scales much better:
Load averages on that beta test server dropped from about 1.30 to about
0.30 for the same number of clients, and adding more clients increases the
load much less than under the previous version using poll().  Of course,
I haven't compared loads under the same server version with two different
engines--it's possible other changes we made have resulted in much of that
load difference.

I should probably note that the beta test server I am refering to is running
Solaris; I have not tried to use the Linux /dev/poll patch as of yet...
-- 
Kevin L. Mitchell <klmitch@mit.edu>


  parent reply	other threads:[~2002-02-03 19:22 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-29 18:00 PROBLEM: high system usage / poor SMP network performance Dan Kegel
2002-01-29 20:09 ` Vincent Sweeney
2002-01-31  5:24   ` Dan Kegel
     [not found]     ` <001d01c1aa8e$2e067e60$0201010a@frodo>
2002-02-03  8:03       ` Dan Kegel
2002-02-03  8:36         ` Andrew Morton
2002-02-04 14:57           ` [Coder-Com] " Darren Smith
2002-02-04 17:41             ` Aaron Sethman
2002-02-04 18:11               ` Darren Smith
2002-02-04 18:30                 ` Aaron Sethman
2002-02-04 18:48                   ` Kev
2002-02-04 18:59                     ` Aaron Sethman
2002-02-04 18:53                   ` Doug McNaught
2002-02-08 22:11                 ` James Antill
2002-02-12 18:48           ` Vincent Sweeney
2002-02-03 19:22         ` Kev [this message]
     [not found]       ` <5.1.0.14.2.20020203173247.02c946e8@pop.euronet.nl>
2002-02-03 19:16         ` [Coder-Com] Re: PROBLEM: high system usage / poor SMPnetwork performance Dan Kegel
2002-02-04  0:07           ` Kev
2002-02-04  0:37             ` Dan Kegel
2002-02-04  0:59               ` Aaron Sethman
2002-02-04  1:16                 ` Dan Kegel
2002-02-04  1:30                   ` Aaron Sethman
2002-02-04  1:38                     ` Dan Kegel
2002-02-04  4:38                       ` Aaron Sethman
2002-02-04  5:35                         ` Dan Kegel
2002-02-04  5:43                           ` Aaron Sethman
2002-02-04  6:11                 ` Daniel Phillips
2002-02-04  6:26                   ` Aaron Sethman
2002-02-04  6:29                     ` Daniel Phillips
2002-02-04  6:39                       ` Aaron Sethman
2002-02-04  2:55               ` Kev
2002-02-04  3:25                 ` Dan Kegel
2002-02-04  4:47                   ` Aaron Sethman
2002-02-04  5:10                   ` Kev
  -- strict thread matches above, loose matches on Subject: below --
2002-01-27 22:23 PROBLEM: high system usage / poor SMP network performance Vincent Sweeney
2002-01-27 22:42 ` Andrew Morton
2002-01-27 22:54 ` Alan Cox
2002-01-27 22:52   ` arjan
2002-01-27 23:08   ` Vincent Sweeney
2002-01-28 19:34   ` Vincent Sweeney
2002-01-28 19:40     ` Rik van Riel
2002-01-29 16:32       ` Vincent Sweeney

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=200202031922.OAA17250@multics.mit.edu \
    --to=klmitch@mit.edu \
    --cc=coder-com@undernet.org \
    --cc=dank@kegel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=v.sweeney@barrysworld.com \
    /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