On Sat, 2007-05-12 at 03:16 +0300, Timo Sirainen wrote:
- In raw append speed dbmail is almost as fast as maildir.
- In raw read/write speed maildir is about 1,6 times faster
- When adding metadata fetches Dovecot is 4 times faster than
dbmail. This is most likely because dbmail doesn't have a cache
equivalent to dovecot.index.cache so it has to do the fetches the
slow way.
I think these are wrong actually. In those benchmarks the server was mainly just waiting for new APPEND commands, so the results were somewhat similar. Now lets try with 100 clients to see how it goes:
dbmail SVN 2_2_branch + MySQL:
./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=100 Logi Appe 100% 100% 5% 100 1642
Hmm. Maybe that was too much for it. Lets try with 30:
./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=30 Logi Appe 100% 100% 5% 30 2620
So the performance got better with less simultaneous clients.
Dovecot CVS HEAD + maildir + fsync_disable=no: ./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=100 Logi Appe 100% 100% 5% 100 4720
The speed dropped from 200 msgs/sec to 100 msgs/sec. The larger the maildir, the slower it becomes. Lets try with 30 clients with Dovecot too:
./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=30 Logi Appe 100% 100% 5% 30 3960
msgs/sec drops, as expected. Now, lets see how much fsync is slowing it down:
Dovecot CVS HEAD + maildir + fsync_disable=yes: ./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=100 Logi Appe 100% 100% 5% 100 5951
The speed drops from 587/sec -> 113/sec. Lets try Dovecot's high performance Cyrus-like cydir format then:
Dovecot CVS HEAD + cydir + fsync_disable=no: ./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=100 Logi Appe 100% 100% 5% 100 35217
Well, isn't that something. Almost 10 times faster than maildir. The speed only drops from 1240/sec to 1150/sec. fsync_disable=yes gives +1000 messages, so not that much.
Since the speed was quite steady 11-12/connection, lets try with some more connections. How about 200 clients:
Dovecot CVS HEAD + cydir + fsync_disable=no: ./imaptest - append=100 seed=1 secs=30 msgs=1000000 logout=0 select=0 clients=200 Logi Appe 100% 100% 5% 200 1398 200/200 0 2268 200/200 0 2145 200/200 0 1965 200/200 0 1448 200/200 0 1650 200/200 0 1216 200/200 0 1193 200/200 0 1112 200/200 ... 0 708 200/200 0 812 200/200 0 726 200/200 0 780 200/200 0 727 200/200
Totals: Logi Appe 100% 100% 5% 200 32844
This didn't go so well anymore. It started nicely with the expected 2200/sec, but dropped rapidly. Might be because of lock contention, or because of ext3, or even because of imaptest itself.