I know we discussed this in the past, but I can't seem to find the thread.
What part of the existing STATUS code causes the bottleneck?
Is it STATUS_RECENT and STATUS_UNSEEN?
It's a combination of both. The main things are:
1. Status UNSEEN and RECENT both have to loop over the cyrus.index file.
With users with many folders and large message counts that don't change that
often, it doesn't stop their IMAP clients issuing a STATUS call on every
folder every 5 minutes. On a busy server, even with lots of memory the
system disk cache will be completely flushed over a 5 minute period, so
these STATUS calls cause every cyrus.index file to be re-read into memory.
Given most folders don't change that often, with the cache these STATUS
calls are serviced without having to read the cyrus.index file at all.
2. Status UNSEEN was particularly slow with large seen sequences. The
"fastindex" patch mostly fixes that is it's not as much of an issue any
more.
Rob
----
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html