Barry Warsaw wrote:
Before I enable it unconditionally, I'd want to be more certain that it's necessary, or useful for the majority of sites, and that the performance hit is either worth it, not as bad as my benchmarks showed, or at least not as observably bad under real-world conditions.
You should first understand why message loss occurs if there is no fsync. For example, if the MTA stores incoming messages on disk, then invokes mailman, message loss may occur if the MTA deletes the message from the spool before mailman has fsync'ed its copy, and the power goes out at this moment.
If so, users might be better of using a powerful filesystem. I *think* that, e.g. on Linux, ext3fs with ordered data writes might be sufficient, as deletion of the file should only occur after the data have been written (OTOH, it might be that ext3 in journalled mode is needed, if data and metadata changes are not mutually subject to the ordering). This should be less expensive than fsync, as the journalled file system will still perform lazy writes - just in the right order.
Also notice that some file system drivers are incapable of implementing fsync correctly, so they fall back to treat fsync(2) like sync(2), which is quite expensive.