Understand that the mapped virtual memory represents files that are
mmap()'d into memory (likely most are part of the database files), but
the pages are not necessarily loaded into memory until they're read.
I'd guess the bulk of the memory in your RSS (resident size set; the
physical memory that's actually used) are the per-mailbox database
header cache files (and possibly the squat indexes). Do you use
squatter?
Actually more likely is the mailboxes.db, at least on our systems it is.
$ ps -auxw | grep imapd
...
cyrus 30471 0.0 0.0 155512 2492 ? S 08:13 0:00 imapd
cyrus 30472 0.0 0.0 155892 2628 ? S 08:13 0:00 imapd
...
$ ls -l /var/imap/mailboxes.db
-rw------- 1 cyrus cyrus 131552696 Nov 22 08:20
/var/imap/mailboxes.db
It seems the implementation of the skiplist database requires the entire
database to be mmaped into memory, thus causing the large apparent process
size (155M, of which 131M is the mailboxes.db). It's generally not a
problem, since that 131M is the same memory shared between each process, and
may not even be actual used memory if that data isn't swapped in.
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