On Tue 06 Feb 2007 at 10:21PM, Timo Sirainen wrote:
On Tue, 2007-02-06 at 11:41 -0800, Dan Price wrote:
When dovecot calls fsync on the mailbox, ZFS is forced to commit all of those changes to the platter right then and there, and forces the application to wait.
BTW. There are two potential problems here:
The application needs to wait, which makes it appear slower to the user.
The system I/O load in general could grow, which would make the system slower for everyone.
I think 1) isn't that big of an issue normally since the delays should be fractions of a second, but 2) is.
We're in agreement on (1), but I don't think I understand (2).
I think any IMAP daemon would want to get its bits out to the platter in a reasonable time frame so that changes to the box don't sit in dirty VM or buffer cache pages in the event of power fail or catastrophe.
On most but not all filesystems, fsync() is the way to do that; I guess an alternative for non-transactional filesystems would be to fork a "syncer" process so that the fdsync happens in the background.
-dp
-- Daniel Price - Solaris Kernel Engineering - dp@eng.sun.com - blogs.sun.com/dp