Il 18/08/2015 17:25, Tom Talpey ha scritto:
On 8/18/2015 10:46 AM, Alessio Cecchi wrote:
Hi,

in this tipical setup (Dovecot/Director thate share Maildir via NFS)  on
your NFS Server you have (about) 90% of read operations and only 10% of
write operations.

If you see detailed stats for NFS operations you have 40-50% of GETATTR,
this means that NFS/Dovecot clients are caching data (mainly dovecot
index files) but they have to revalidate the cache frequently asking to
the NFS Server if the file is changed (via GETATTR) but the file never
change because only this client opens it.

So the NFS Server is wasting operations with (unnecessary) GETATTR
request.

With NFSv4 and delegation you can practically eliminate these (GETATTR)
requests and speed up your NFS server (instead of buy SSD disk).

This because with delegation a client open file and since is the only
client to open these file (that is true with Director) the NFS server
delegate the client to manage the file without check if was changed (via
GETATTR) on the NFS share.

Enabling delegations on Maildir is going to scale very badly. The NFS
client will end up requesting one on every message open, and because an
NFS server can only support a limited number of active delegations, it
will be forced to constantly recall them, only to issue new short-lived
ones to the next message open.

Sure, but in my test there wasn't a scale problem, only few users was online but the "lock" error in dovecot.log come immediately.

While it's a decent idea for indexes, the client has no way to request
delegations selectively for them. Perhaps if you used mdbox where the
file count is lower, but even then, there will be many users and many
mailboxes so it is important to be sure there are enough delegations
available at the NFS server. That's a NetApp question in your case,
and not a Dovecot one.

An idea could be to have a NFS share for index only and enable delegation on it.
--
Alessio Cecchi
http://www.linkedin.com/in/alessice

Reply via email to