[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [leafnode-list] Can fetchnews un-buffer stdout?

Stefan Wiens <s.wi@xxxxxxx> writes:

> Matthias Andree <ma@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> writes:
> > You mean: that's why stdio is not really suited for network
> > applications? That's what it boils down to.
> I built a line-buffered leafnode.
> On a P200 Box with Linux 2.2.17, the full-buffered version transmits
> 5.6 MB/s after LIST ACTIVE, the line-buffered one 2.6 MB/s.
> In either case, CPU power limits the data rate:
> Both cause 99% CPU load; I think stdio isn't the only reason.

There's something awry, leafnode (the nntpd) should not be able to load
a Pentium 200.

> Most interesting, line buffered mode actually results in larger
> average packet size. There seems to be some additional buffering in
> the kernel. ;-)

Yes. man tcp(7): "TCP does not preserve record boundaries."

If you want to push (in TCP/IP terms) the packets, you need TCP_NODELAY.

> > Systems that support it (Linux, FreeBSD) should use sendfile anyways to
> > reduce copying things around.
> Leafnode's no FTP server. ;-)

No, but look closely:
sendfile (2)         - transfer data between file descriptors
sendfile(2) - send a file to a socket

If the articles are stored in the proper format, you can just have the
kernel care for the entire sending; if you know the header/body sizes,
you can use sendfile for HEAD or BODY as well, not only for ARTICLE.

Matthias Andree

leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx -- mailing list for leafnode
To unsubscribe, send mail with "unsubscribe" in the subject to the list