Some timing info on populating mailboxes
Wesley Craig
wes at umich.edu
Sun Dec 17 20:10:12 EST 2006
On 17 Dec 2006, at 14:12, Ross Boylan wrote:
> Is it enough to set this on the listening IMAP socket, or does it need
> to be set on the sockets that get opened up as the dialogue
> progresses? Put differently, can I write a little independent program
> to set the socket options, or do I need to modify the cyrus sources
> (or perhaps those of mailutils?)?
You need to insert it into both the client and server, it needs to
happen within the program that uses the socket in question. The
option is socket specific, it has no effect on the rest of the
system. Ideally, you'd do it just after the connect() on the client
or accept() on the server. I see that stock Cyrus doesn't have Nagel
disabled. I can't think of what use enabling Nagel would have for
Cyrus, and disabling Nagel would certainly tend to improve performance.
The problem as I understand it is with very small exchanges. So the
client says something like "select this mailbox". Since it doesn't
fill a buffer, Nagel says to hang on to it for a fraction of a
second. Similarly, the server responds to something like the example
"select" with "OKAY", which is also small and so is buffered. Since
IMAP is characterized by these many small exchanges, the cumulative
delay can be large, and the protocol doesn't operate at anywhere near
maximum throughput. When full messages are exchanged, the buffers
are filled, so those don't suffer from delays, but keep in mind that
IMAP is designed to avoid sending the full message under most
circumstances.
:wes
More information about the Info-cyrus
mailing list