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

Reply via email to