On Oct 15, 2009, at 3:13 PM, Bob Friesenhahn wrote:

On Thu, 15 Oct 2009, Richard Elling wrote:
No.  UFS directio does 3 things:
        1. unbuffered I/O
        2. allow concurrent writers (no single-writer lock)
        3. provide an improved async I/O code path

For #1, the ZFS equivalent is primarycache=none, but you might find that primarycache=metadata is more appropriate, depending on your workload.

I don't think that #1 gets you all the way there for unbuffered I/O. It would have to bypass most of the I/O scheduling logic for that to work, and bypassing the I/O scheduling logic would likely invalidate zfs's ordering assurances, screw up the data layout, and lead to poor write performance.

Another overloaded term? Oracle uses O_DSYNC, but with directio for UFS you basically get that, too. In other words, UFS directio is not a solution for general purpose workloads. I think primarycache=none will garner similar disfavor as it
effectively makes all writes sync and disables prefetching.

Historically, buffered I/O is a bigger problem when the amount of memory
for buffering is limited. Consider that UFS directio arrived back in the day when the average server held perhaps hundreds of MB, every byte mattered. Today RAM is not so constrained, though you do need to be wary of large page exhaustion
for Oracle.
 -- richard

The primarycache=none option seems to simply disable the data cache, which means that written data also does not remain in the ARC. That does not mean that written data is not buffered before it is written.

Bob
--
Bob Friesenhahn
bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to