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