As part of some testing on ZFS, I've been looking at performance when writing to files opened with O_DSYNC. Performance is very good for this sort of thing on ZFS - but it's not so good on UFS.
Essentially, performance on UFS is linear with the number of pages crossed by the write; so, for example, using a SCSI disk on SPARC, an 8KByte write takes 6ms, and an 80KByte write takes 60ms, etc. This means for big buffers, UFS is much slower than ZFS, but it's also much slower than (say) ext3 on Linux. Following things through with DTrace, and looking in the source, it looks like this is because the loop in the wrip function (in ufs_vnops.c) writes to each page in turn, and then calls segmap_release, which calls the putpage vop for each page. As far as I can tell, there isn't an interface in the segmap routines which would allow the pages to be synced to disk in one operation. Would it be worth raising a bug or RFE to address the linear performance? -- Philip Beevers mailto:[EMAIL PROTECTED] _______________________________________________ ufs-discuss mailing list [email protected]
