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]

Reply via email to