Speed-differences in listing mailboxes between 2.4 and 3.0

Felix Schumacher felix.schumacher at internetallee.de
Mon Feb 18 03:56:15 EST 2019


Hi all,

we are trying to migrate our mailservers from cyrus imapd 2.4 to 3.0 and 
are currently looking at speed differences in listing mailboxes. Both 
the imap command 'list "" ""' for a user and a ctl_mboxlist -d seem to 
be quite a bit slower.

At the moment the 3.0 environment has around around 170k mail folders 
listed by ctl_mboxlist -d and takes about 0.8s to list all those entries 
(piping the output to /dev/null). This system has no real load except 
for the list command).

In the 2.4 environment we have 244k mail folders listed and it takes 
about 0.5s to list those entries (again piped to /dev/null). This system 
is our productive mail server and had some load to handle while listing 
was done.

mailboxes.db is in skiplist format on the 2.4 environment. We tried 
twoskip and skiplist on the 3.0 environment, but it didn't change that 
much.

Using perf record -F 99 -g ctl_mboxlist -d > /dev/null and then perf 
report I get for 3.0

+   41.67%     0.00%  ctl_mboxlist  libcyrus.so.0.0.0       [.] 
cyrusdb_foreach
+   41.67%     0.00%  ctl_mboxlist  libcyrus_imap.so.0.0.0  [.] 
mboxlist_allmbox
+   41.67%     0.00%  ctl_mboxlist  ctl_mboxlist            [.] do_dump
+   34.52%     0.00%  ctl_mboxlist  [kernel.kallsyms]       [k] 
entry_SYSCALL_64_fastpath
+   22.62%     5.95%  ctl_mboxlist  libc-2.22.so            [.] do_fcntl
+   22.62%     2.38%  ctl_mboxlist  libc-2.22.so            [.] 
__xstat64
...

and for 2.4 I get

+     11.63%  ctl_mboxlist  [kernel.kallsyms]  [k] kmem_cache_alloc
+      9.30%  ctl_mboxlist  [kernel.kallsyms]  [k] 
system_call_after_swapgs
+      6.98%  ctl_mboxlist  [kernel.kallsyms]  [k] kmem_cache_free
+      6.98%  ctl_mboxlist  [kernel.kallsyms]  [k] fcntl_setlk
+      4.65%  ctl_mboxlist  [kernel.kallsyms]  [k] fget_raw
+      4.65%  ctl_mboxlist  [kernel.kallsyms]  [k] locks_copy_lock
+      4.65%  ctl_mboxlist  [kernel.kallsyms]  [k] _raw_spin_lock
+      2.33%  ctl_mboxlist  libc-2.11.3.so     [.] 
__GI_____strtoll_l_internal
+      2.33%  ctl_mboxlist  libc-2.11.3.so     [.] __free
...

Has anyone an idea, why cyrusdb_foreach and mboxlist_allmbox is so 
promiment in the 3.0 recording or rather why 3.0 appears to be so much 
slower compared to 2.4?

Felix



More information about the Info-cyrus mailing list