[Dovecot] mail_fsync=never doesn't work?

Attila Nagy bra at fsn.hu
Mon Sep 27 17:31:26 EEST 2010


  On 09/27/10 15:48, Timo Sirainen wrote:
> On Mon, 2010-09-27 at 10:09 +0200, Attila Nagy wrote:
>
>> I've tried to set the above in Dovecot 2.0.3, but according to ktrace
>> (FreeBSD) it still fsync()s a lot (pop3 processes for example).
>> Is this switch useful at all?
> I did a quick test and didn't see any fsyncs. Can you find out what file
> it's fsyncing? doveconf -n output could also be useful.
doveconf -n:
# 2.0.4: /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 8.1-STABLE amd64
auth_cache_size = 104857600
auth_cache_ttl = 86400 s
disable_plaintext_auth = no
mail_fsync = never
mail_gid = 999
mail_location = maildir:~/Maildir
mail_plugins = $mail_plugins quota
[...]

Should I set mail_fsync for only pop and imap instances? Currently I 
don't use Dovecot's lmtp or deliver, but will, so there I can't allow 
disabling fsync. I don't like setting this to never, but after a 
migration from courier, the machine couldn't handle the load with fsync, 
so this is a must.

The files:
69524 pop3     1285595867.816137 CALL  
open(0x801004f08,O_RDWR|O_CREAT|O_EXCL,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) 

  69524 pop3     1285595867.816153 NAMI  
"/home/hm01/16/12/user1/Maildir/temp.hm01.69524.579c9846c8ec2b26"
  69524 pop3     1285595867.816238 RET   open 9
[...]
  69524 pop3     1285595867.816596 CALL  fstat(0x9,0x7fffffffe4a0)
  69524 pop3     1285595867.816608 STRU  struct stat {dev=2188960719, 
ino=263529548, mode=-rw------- , nlink=1, uid=999, gid=999, rdev=0, 
atime=1285595867.815852103, stime=1285595867.815852103, 
ctime=1285595867.815852103, birthtime=1285595867.815852103, size=0, 
blksize=131072, blocks=1, flags=0x0 }
  69524 pop3     1285595867.816620 RET   fstat 0
[...]
  69524 pop3     1285595867.822932 CALL  fstat(0x9,0x7fffffffe570)
  69524 pop3     1285595867.822955 STRU  struct stat {dev=2188960719, 
ino=263529548, mode=-rw------- , nlink=1, uid=999, gid=999, rdev=0, 
atime=1285595867.815852103, stime=1285595867.815852103, 
ctime=1285595867.815852103, birthtime=1285595867.815852103, size=0, 
blksize=131072, blocks=1, flags=0x0 }
  69524 pop3     1285595867.822974 RET   fstat 0
[...]
  69524 pop3     1285595867.823065 CALL  write(0x9,0x8016d1200,0x5)
  69524 pop3     1285595867.823116 GIO   fd 9 wrote 5 bytes
        "Trash"
  69524 pop3     1285595867.823134 RET   write 5
  69524 pop3     1285595867.823148 CALL  write(0x9,0x8006f5be3,0x1)
  69524 pop3     1285595867.823173 GIO   fd 9 wrote 1 byte
        "
        "
  69524 pop3     1285595867.823186 RET   write 1
  69524 pop3     1285595867.823198 CALL  write(0x9,0x8016d1206,0x6)
  69524 pop3     1285595867.823220 GIO   fd 9 wrote 6 bytes
        "Drafts"
[...]
  69524 pop3     1285595867.829999 CALL  fsync(0x9)
  69524 pop3     1285595868.119406 RET   fsync 0
[...]
  69524 pop3     1285595868.129605 CALL  close(0x9)
  69524 pop3     1285595868.129674 RET   close 0

BTW, just curious, what is the rationale of the two fstats so close 
together?
I've searched for some more examples and each of them were like this 
one. It seems that Dovecot copies the subscriptions file to this 
temporary file and then fsyncs it. And the question also arises: why? 
And more specifically: why in a pop3 server?

Thanks,


More information about the dovecot mailing list