Friday, August 11, 2006

Evolution Exchange Performance Series - Chapter 1 - Folder Loading

One of the critical issues in exchange mailer is - time spent to load the hierarchy or mail folders. See this graph: Exchange mailer folder loading graph

It clearly shows most of time is spent in constructing folder objects. The sample size used to generate this graph is two folders with 210 and 50 mails repectively. Patch extends Federico's sample code and implements different levels of checkpoints. Graph on the left hand side is generated using a E2K_LOG_LEVEL=1.

As I mentioned in my previous blog, this is the customized plot-timeline script that generated this image.

Evolution Exchange Connector

A new feather got added to my cap of responsibilities w.r.t evolution, viz., Exchange connector - one of the distinguishing features of mighty Evolution. My responsibilities for Exchange connector ranges from fixing some critical customer issues to performance, scalability and stability of the module. One of the key problems with exchange module is performance. Initial loading of folders takes huge amount of time as compared to IMAP/POP/GW. After reading through quite a lot of tutorials and blogs, I came across Federico's blog about how strace can be helpfull for profiling with minimum coding.

Took the sample code from Federico's blog and extended it a little bit to have different levels to avoid too many messages and included thread-ids to group the messages. I have also customized the plot-timeline script to group by thread-id. Will upload the patch and the graph, generated by the script, later.