The big problem that I have with non-directio is that buffering delays program 
execution. When reading/writing files that are many times larger than RAM 
without directio, it is very apparent that system response drops through the 
floor- it can take several minutes for an ssh login to prompt for a password. 
This is true both for UFS and ZFS.

Repeat the exercise with directio on UFS and there is no discernible delay in 
starting new applications (ssh login takes a second or so to prompt for a 
password). Writing a large file might appear to take a few seconds longer with 
directio, but add a sync command to the end and it is apparent that there is no 
real delay in getting the data to disc with directio.

I'd like to see directio() provide some of the facilities under ZFS that it 
affords under UFS:
1. data is not buffered beyond the I/O request
2. no speculative reads
3. synchronous writes of whole records
4. concurrent I/O (which is already available in ZFS)

Note: I consider memory bandwidth a finite and precious resource - not to be 
wasted in double-buffering. (I have a naive test program that is completely 
bound by main memory bandwidth - two programs on two CPUs run at half the speed 
of a single program on one CPU.)
 
 
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to