Timo Sirainen wrote:
On 21.6.2004, at 21:45, Moe Wibble wrote:
I recently saw some benchmarks (measuring system load) comparing Dovecot mbox, maildir and Cyrus. Dovecot was much slower than I thought, Cyrus was many times faster in most tests. Dovecot with mbox was also much faster than with maildir, even though my 0.99.10 mbox code is pretty bad.
Strange... I'd think that rewriting the mbox files would cause a lot more performance issues than shuffling around files in a Maildir.
They probably were using mboxes that had already all the necessay X-UID etc. fields, so rewriting wouldn't need to do more than really required.
0.99.10 indexes aren't too good, but I still find it a bit strange that Cyrus takes something like 10x less load. I'd think most of it has to do with maildir format itself, that it needs to rename files when flags change, and Dovecot needs to resync the whole maildir after each change in mailbox (and sometimes twice).
I haven't tested dovecot in a high load (multiuser) environment yet so I can't say much about the actual load in such a situation. But once the indexes are made (and don't break) what's really left to cause (unjustified) load?
With maildir the problem is that once it's modified by Dovecot, I can't know if someone else didn't modify it at the same time. So after I change anything it, I'll have to resync the whole maildir again, just in case.
I get to ask a dumb question: Can you put a filelock on the mail files while you are handling them to ensure that no one else is messing with them? I guess the question is then, if you have N emails in folder, then how do you ensure that the other N-1 emails didn't get messed with, or that there aren't now N+m emails in the maildir...