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