nnrpd and TCP nagle

Russ Allbery eagle at eyrie.org
Wed Mar 23 17:17:10 UTC 2016


christian mock <cm at tahina.priv.at> writes:

> I've been debugging a slow reader issue with a friend and we've found
> that when his tin does a "listgroup", each and every article number is
> going over the wire in its own packet. That, of course, is pretty
> inefficient.

> I've found the following in nnrpd.c (line 614):

>     /* Setting TCP_NODELAY to nnrpd fixes a problem of slow downloading
>      * of overviews and slow answers on some architectures (like BSD/OS). */
>     setsockopt(STDIN_FILENO, IPPROTO_TCP, TCP_NODELAY, &nodelay, sizeof(nodelay));

> Which, when removed, makes for way better performance, about an order
> of magnitude down in number of packets and time for the group we've
> been testing with.

> The last time I ran INN on BSD/OS was 20 years ago, and BSD/OS has
> been discontinued in 2003, which indicates this line is somewhat
> historic. And for NNTP TCP_NODELAY makes no sense in the first place.

> So I suggest removing this.

Yup, I agree.  It's almost never a good idea to tweak stuff like that with
a modern networking stack.  The kernel is probably going to be smarter
about aggregation than we're going to be.

-- 
Russ Allbery (eagle at eyrie.org)              <http://www.eyrie.org/~eagle/>

    Please send questions to the list rather than mailing me directly.
     <http://www.eyrie.org/~eagle/faqs/questions.html> explains why.


More information about the inn-workers mailing list