[Dovecot] Zimbra benchmarking

sergey ivanov seriv at parkheights.dyndns.org
Fri Nov 30 17:03:57 EET 2007


Hi,
for me zimbra swapped a lot on 1G of RAM even while serving mailboxes
for 3 users. But on 2G it runs such that I can't feel it's slower than
previously worked there dovecot.
-- 
    Sergey.

Timo Sirainen wrote:
> Now that I have a working kvm setup, I thought I'd finally try how
> Zimbra works. This is mainly some microbenchmarking, so it may not have
> much to do with actual performance in real life.
>
> Setup:
>
>  - 1GB memory given to kvm (from host's 2GB)
>  - Intel Core 2 6600 (kvm uses only one CPU)
>  - CentOS 5
>  - 15GB qcow2 image on XFS filesystem
>  - Zimbra 5.0 RC2 RHEL5 x86_64
>  - Dovecot latest hg, dbox format
>
> Both Zimbra and Dovecot were tested running on the same kvm image. All
> data could be cached in memory, so this didn't really test disk I/O.
>
> Dovecot was run with fsync_disable=no. Running with =yes would have made
> its performance even better.
>
> Zimbra features/bugs
> --------------------
>
> Zimbra's SEARCH command doesn't support substring searching as IMAP
> requires:
>
> 1 search text performance
> * SEARCH 136 183 227 231 232 233 245
> 1 OK SEARCH completed
> 2 search text erformance
> * SEARCH
> 2 OK SEARCH completed
> 3 search text performanc
> * SEARCH
> 3 OK SEARCH completed
>
> It's possible to search "performanc" in a non-standard way though:
>
> 4 search text "performanc*"
> * SEARCH 136 183 227 231 232 233 245
> 4 OK SEARCH completed
>
> This means that the upcoming Dovecot v1.1 is probably the only IMAP
> server that supports IMAP-compatible full text search indexes with
> incremental updates. (Cyrus Squat requires rebuilding the whole index
> from scratch just for adding one mail, which makes it kind of
> impractical.)
>
> Zimbra doesn't support SORT or THREAD extensions.
>
> I had trouble benchmarking more than 5 simultaneous connections in one
> mailbox. I'm not sure if this is a configurable setting somewhere, or if
> there's just some bug. The error messages that my imaptest gave looked
> like Zimbra was buggy, but I didn't look at them too closely.
>
> STORE command also seemed to be buggy, giving lots of "STORE failed"
> errors, even with just one connection.
>
> Zimbra uses 500MB of memory just to start up, so it's not exactly for
> hosting small installations.
>
> Login+Logout
> ------------
>
> Dovecot:
>
> ./imaptest - select=0 secs=10 seed=0 clients=1
> Logi Logo 
> 100% 100% 
> 3439 6878 
> ./imaptest - select=0 secs=10 seed=0 clients=10
> Logi Logo 
> 100% 100% 
> 4415 8830 
>
> Zimbra:
>
> ./imaptest - select=0 secs=10 seed=0 clients=1
> Logi Logo 
> 100% 100% 
> 18032 36064 
> ./imaptest - select=0 secs=10 seed=0 clients=10
> Logi Logo 
> 100% 100% 
> 25519 51056 
>
> Looks like Dovecot's imap process creation hurts it a lot compared to
> Zimbra's thread creation. Luckily IMAP connections are usually
> long-living, so this shouldn't matter much, except for webmails for
> which you can use imapproxy in the middle.
>
> LIST "" *
> ---------
>
> Dovecot:
>
> ./imaptest - select=0 logout=0 list=100 secs=10 seed=0 clients=1
> Logi List 
> 100% 100% 
>    1 181411 
> ./imaptest - select=0 logout=0 list=100 secs=10 seed=0 clients=10
> Logi List 
> 100% 100% 
>   10 133451 
>
> Zimbra:
>
> ./imaptest - select=0 logout=0 list=100 secs=10 seed=0 clients=1
> Logi List 
> 100% 100% 
>    1 1021 
> ./imaptest - select=0 logout=0 list=100 secs=10 seed=0 clients=10
> Logi List 
> 100% 100% 
>   10  972 
>
> Yes, Dovecot's LIST is over 100 times faster.
>
> STATUS INBOX (MESSAGES UNSEEN RECENT)
> -------------------------------------
>
> 100 messages in INBOX 
>
> dovecot:
>
> ./imaptest - logout=0 select=0 status=100 secs=10 seed=0 clients=1
> Logi Stat 
> 100% 100% 
>    1 191003 
> ./imaptest - logout=0 select=0 status=100 secs=10 seed=0 clients=10
> Logi Stat 
> 100% 100% 
>   10 171171 
>
> Zimbra:
>
> ./imaptest - logout=0 select=0 status=100 secs=10 seed=0 clients=1
> Logi Stat 
> 100% 100% 
>    1 3697 
> ./imaptest - logout=0 select=0 status=100 secs=10 seed=0 clients=10
> Logi Stat 
> 100% 100% 
>   10 7009 
>
> FETCH 1:* (UID FLAGS ENVELOPE INTERNALDATE BODYSTRUCTURE)
> ---------------------------------------------------------
>
> 100 messages in INBOX.
>
> dovecot:
> ./imaptest - logout=0 select=100 fetch=100 secs=10 seed=0 clients=1
> Logi Sele Fetc 
> 100% 100% 100% 
>    1    1 2769 
> ./imaptest - logout=0 select=100 fetch=100 secs=10 seed=0 clients=5
> Logi Sele Fetc 
> 100% 100% 100% 
>    5    5 2902 
>
> Zimbra:
>
> ./imaptest - logout=0 select=100 fetch=100 secs=10 seed=0 clients=1
> Logi Sele Fetc 
> 100% 100% 100% 
>    1    1  203 
> ./imaptest - logout=0 select=100 fetch=100 secs=10 seed=0 clients=5
> Logi Sele Fetc 
> 100% 100% 100% 
>    5    5  258 
>
> FETCH ? (BODY[])
> ----------------
>
> Randomly fetch message body from 100 messages
>
> Dovecot:
>
> ./imaptest - logout=0 select=100 fetch2=100 secs=10 seed=0 clients=1
> Logi Sele Fet2 
> 100% 100% 100% 
>            30% 
>    1    1 51958 
> ./imaptest - logout=0 select=100 fetch2=100 secs=10 seed=0 clients=5
> Logi Sele Fet2 
> 100% 100% 100% 
>            30% 
>    5    5 141397 
>
> Zimbra:
>
> ./imaptest - logout=0 select=100 fetch2=100 secs=10 seed=0 clients=1
> Logi Sele Fet2 
> 100% 100% 100% 
>            30% 
>    1    1  410 
> ./imaptest - logout=0 select=100 fetch2=100 secs=10 seed=0 clients=5
> Logi Sele Fet2 
> 100% 100% 100% 
>            30% 
>    5    5 2291 
>
> STORE ? FLAGS.SILENT (random flags and keywords)
> ------------------------------------------------
>
> Dovecot:
>
> ./imaptest - logout=0 select=100 store=100 secs=10 seed=0 clients=1
> Logi Sele Stor 
> 100% 100% 100% 
>    1    1 15236 
> ./imaptest - logout=0 select=100 store=100 secs=10 seed=0 clients=5
> Logi Sele Stor 
> 100% 100% 100% 
>    5    5 5533 
>
> Zimbra:
>
> ./imaptest - logout=0 select=100 store=100 secs=10 seed=0 clients=1
> Logi Sele Stor 
> 100% 100% 100% 
>    1    1  308 
> ./imaptest - logout=0 select=100 store=100 secs=10 seed=0 clients=5
> Logi Sele Stor 
> 100% 100% 100% 
>    5    5  319 
>
> Zimbra gave lots of errors:
> Error: STORE failed: STORE failed
>
> APPEND
> ------
>
> Appends to empty mailbox:
>
> Dovecot:
> 1 client, 5 seconds: 3959 mails
> 1 client, 5 seconds, fsync_disable=yes: 21889 mails
>
> Zimbra:
> 1 clients, 5 seconds: 222 mails
> 5 clients, 5 seconds: 322 mails
>
> Zimbra is apparently building full text search indexes while appending,
> so this test doesn't mean much until I can test Dovecot's performance
> with Squat indexing.
>   



More information about the dovecot mailing list