Hi,
have you considered adding the multi-accept capability to the
server?
This would significantly elevate the performance in the case
of a restarting server where thousands of connections arrive
in a short time interval.
The lack of multi-accept became apparent when running tests
with 25000 local clients. Because ircd does only one accept
per poll/select, the number of accepted new connections
degrades at an exponential rate (the server has to
poll/select before accepting a new connection and the cost of
poll/select grows exponentially). The first graph exhibits
that behaviour:
http://schumann.cx/ircg-3.5-login-graph.png
After adding two lines for multi-accept, the graph changed
to:
http://schumann.cx/multi-accept2.png
Comparing the graphs yields the following insights:
(1) The speed at which the total number of logins grows is
almost linear (not an e-function anymore).
(2) The number of new connections per three seconds is much
more stable and stays constantly high (no visible
exponential degression).
(3) 25000 connections are handled in <140 time units,
instead of >500.
And all that with a two-line change.
Please ignore this email, if multi-accept was already added
to the CVS version. At the time of writing,
coder-com.undernet.org is unfortunately not accessible.
Thanks for your attention.
- Sascha Experience IRCG
http://schumann.cx/ http://schumann.cx/ircg