[Dovecot] Performance problem with STATUS after upgrade (1.0.15 -> 1.2.2)

Stefan Förster cite+dovecot-users at incertum.net
Mon Aug 3 15:08:18 EEST 2009


Another follow-up on my first posting:

* Stefan Förster <cite+dovecot-users at incertum.net>:
> Those commands take almost one(!) second to complete. I've used strace to
> capture what happens and made the results available at
> http://www.incertum.net/~cite/imap.log.

Comaring this to a 1.0.15, the main difference seems to be that the
"dovecot-uidlist" file is rewritten every time I issue a "STATUS"
command. Here's what 1.0.15 does:

read(0, "a0071 STATUS \"postfix-users\" (UID"..., 4072) = 66
setsockopt(1, SOL_TCP, TCP_CORK, [1], 4) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/cur", {st_mode=S_IFDIR|0700, st_size=1650688, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/new", {st_mode=S_IFDIR|0700, st_size=36864, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/tmp", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/dovecot-shared", 0x7fff35082530) = -1 ENOENT (No such file or directory)
brk(0x8b0000)                           = 0x8b0000
gettimeofday({1249300019, 466489}, NULL) = 0
open("/export/vmailboxes/c/cite/Maildir/.postfix-users/dovecot.index", O_RDWR) = 7
alarm(120)                              = 0
fcntl(7, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=0, len=0}) = 0
alarm(0)                                = 120
fstat(7, {st_mode=S_IFREG|0600, st_size=289344, ...}) = 0
mmap(NULL, 289344, PROT_READ|PROT_WRITE, MAP_SHARED, 7, 0) = 0x7fde2d02c000
open("/export/vmailboxes/c/cite/Maildir/.postfix-users/dovecot.index.log", O_RDWR) = 8
fstat(8, {st_mode=S_IFREG|0600, st_size=296440, ...}) = 0
pread(8, "\1\0\30\0Y\315vJ\1\0\0\0\0\0\0\0\0\0\0\0Y\315vJ"..., 24, 0) = 24
fcntl(7, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
access("/export/vmailboxes/c/cite/Maildir/.postfix-users/cur", W_OK) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/new", {st_mode=S_IFDIR|0700, st_size=36864, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/cur", {st_mode=S_IFDIR|0700, st_size=1650688, ...}) = 0
fstat(7, {st_mode=S_IFREG|0600, st_size=289344, ...}) = 0
stat("/export/vmailboxes/c/cite/Maildir/.postfix-users/dovecot.index", {st_mode=S_IFREG|0600, st_size=289344, ...}) = 0
alarm(120)                              = 0
fcntl(7, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=0, len=0}) = 0
alarm(0)                                = 120
fstat(8, {st_mode=S_IFREG|0600, st_size=296440, ...}) = 0
mmap(NULL, 296440, PROT_READ, MAP_SHARED, 8, 0) = 0x7fde2cfe3000
madvise(0x7fde2cfe3000, 296440, MADV_SEQUENTIAL) = 0
fcntl(7, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
gettimeofday({1249300019, 471527}, NULL) = 0
write(1, "* STATUS \"postfix-users\" (RECENT "..., 111) = 111
setsockopt(1, SOL_TCP, TCP_CORK, [0], 4) = 0
gettimeofday({1249300019, 471961}, NULL) = 0
epoll_wait(4,  <unfinished ...>

As you can see, dovecot-uidlist istn recreated.

Is this intended behaviour, some unfortunate side effect of mounting
the partition with "relatime" or something completely different,
perhaps something about my plugin (quota, sieve, fts)?


Ciao
Stefan
-- 
Stefan Förster     http://www.incertum.net/     Public Key: 0xBBE2A9E9
UNIX *is* user-friendly; it's just picky about its friends."


More information about the dovecot mailing list