I just changed Dovecot v1.1 code to work much more nicely when appending new messages to large mailboxes.
Dovecot hg (cydir format, fsync_disable=yes):
./imaptest secs=1 ./imaptest - append=100,0 logout=0 msgs=10000000 clients=1 seed=1 secs=300
Logi Sele Appe 100% 100% 100% 1 1 2322 1/ 1 0 0 1998 1/ 1 0 0 2293 1/ 1 0 0 2009 1/ 1 0 0 1789 1/ 1 0 0 1245 1/ 1 0 0 43 1/ 1 0 0 32 1/ 1 0 0 881 1/ 1 0 0 2137 1/ 1 .. 0 0 704 1/ 1 0 0 771 1/ 1 0 0 388 1/ 1 0 0 831 1/ 1 0 0 572 1/ 1 0 0 766 1/ 1 Totals: 1 1 251397
Averaging 837/sec. The append speed jumps around quite a lot. Typically it's around 800-1000/sec, but it jumps between 0-500/sec also quite often. I'm not sure why that is.
Cyrus v2.3.8 (fsync and fdatasync calls disabled from code):
./imaptest - append=100,0 logout=0 msgs=10000000 clients=1 seed=1 secs=300 Logi Sele Appe 100% 100% 100% 1 1 2587 1/ 1 0 0 1907 1/ 1 0 0 1597 1/ 1 0 0 1260 1/ 1 0 0 1220 1/ 1 0 0 1151 1/ 1 0 0 1068 1/ 1 .. 0 0 121 1/ 1 0 0 127 1/ 1 0 0 128 1/ 1 0 0 126 1/ 1 Totals: 1 1 79613
Averaging 265/sec. The speed slows down pretty consistently, there's no jumping like with Dovecot.