[Dovecot] 1.0-test21

Timo Sirainen tss at iki.fi
Tue Jun 22 05:47:22 EEST 2004


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 guess we'll need a IMAP-optimized format sometimes soon.
>
> But please not before maildir support is stable again

I'd probably base it on maildir. Differences would be mostly just:
  - filename = message UID
  - new/ directory could exist so existing LDAs can easily add mail
    - Dovecot-optimized LDAs would store mails directly into cur/
  - if anyone modifies cur/ directory, Dovecot issues a warning when 
it's noticed but still syncs and fixes it. this fallbacking shouldn't 
affect performance much, since it would be done only if cur/ 
directory's timestamp didn't match the one in index.
  - possibly rename the cur/ dir into something else
  - possibly add some way to insert new mails into mailbox atomically 
(mkdir tra/1, put mails there, rename tra/1 tra-done/1 -> after that 
it's considered as committed and if found by any MUA the mails in it 
must be moved into cur/)

> and shared folders
> (which I'd claim is a must-have for most corporate deployments) have 
> been
> implemented. :)

1.0-test sort of tupport shared folders.. If you symlink them manually 
and create a "dovecot-shared" file with the permissions that should be 
used for new files. But that's only ugly temporary hack and I'll have 
to figure out some better way.

I think the proper support is post-1.0 feature.

> I do realize that getting the highest performance out of
> server-side searches may require moving to a prop. format.

Actually I don't think searching can be optimized at all by moving to 
another format.

>  But for me the
> drawbacks (uneasy access to the actual mails, probably backup 
> issues/version
> incompatibilies) outweight the advantages in most cases. Not to 
> mention all
> the implementation effort that could be spent on smarter Maildir 
> indexing

Unless the backends share 95% of their code and are compatible in most 
of the ways.. :)

> and maybe a separate "search-optimized index" instead ;)

For SEARCH command, only way to index data in usable way that I know of 
is the Cyrus squat indexer, but it generates large indexes and it's 
slow to update, so most people aren't using it.. I'll probably 
implement it one day though.

>> Anyway, 1.0 is nearing a state where I'd like to begin hearing
>> benchmarks about it. It's mbox performance should be excellent.
>
> I'm curious too (more about Maildir performance, tho).

Maildir performance should still get somewhat better before 1.0, but 
mbox has very few optimizations left that I can think of.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
URL: <http://dovecot.org/pipermail/dovecot/attachments/20040622/7b9b429e/attachment-0001.bin>


More information about the dovecot mailing list