OPush is on a diet

With OBM 2.4.1-beta2 today’s release, the memory footprint of OPush during email synchronization, has been amazingly reduced.
Opush is the OBM “MS Exchange ActiveSync” implementation.

For some times now, we know that OPush is very bad at synchronizing emails.

Until 2.4.1-alpha10 version of OPush, when a smartphone asked for new emails, the server loaded all new emails into memory, and then truncated them to the requested size.

Suppose you had 500MiB of new emails, more likely when you configured a new smartphone for an existing mailbox, OPush needed at least 500MiB of memory before truncating the bytestreams.

It was all the more annoying because it was the first experience for the user with OPush. Fortunately, when the first synchronization passed, things became snappier.

The test corresponds to the synchronization of a mailbox containing 30 emails of 10 MiB each on a warm OPush server.

Initial footprint of OPush is very small but need around 370MiB of memory for handling the synchronization request.
The consumption falls back to initial footprint just after the response is sent.

The solution was obvious, but as you know software is hard and slow to modify: we needed to give something like a “fetch profile” down to our IMAP layer in order to load only the requested size for each mail.

The solution is now implemented and merged into the version 2.4.1-beta2.

As expected, we need very few memory, so few that it’s hard to know what is consumed by email handling and what is consumed by other parts of the code.

The very good news is that we can get rid of crazy configuration settings. With previous version some customers need a max memory setting of 12GiB or even more! Something like 1GiB should now be more than enough.

Tags: