Hi.
What I've been trying to do is squeeze some more write performance out of my
system.
(Dual Pentium Xeon processors, 1GB ram, software RAID, 2.4.20 kernel patched
with XFS 1.3.1)
I've ended up fiddling with some XFS code and have found that write performance
can improve significantly in certain applications (i.e. exporting the
filesystem over a network). I've left the system running (and writing) over
the weekend and it seems to be stable. Although things look good for now, I'd
like to be certain that I haven't broken anything.
Essentially, this is what I've done:
In the function xfs_fsync():
Instead of:
VOP_FLUSH_PAGES(...);
I essentially have:
VOP_COMMIT_PAGES(...);
xfs_iunlock(ip, XFS_IOLOCK_EXCL);
VOP_CLEANUP_PAGES(...);
xfs_ilock(ip, XFS_IOLOCK_EXCL);
Where VOP_COMMIT_PAGES() + VOP_CLEANUP_PAGES() does the same thing as
VOP_FLUSH_PAGES() but in two parts, first the writing of the pages then the
cleanup. So I've basically released the XFS_IOLOCK_EXCL during page cleanup.
This may not work for everyone but it seems to give me better writing (maybe
strict operating conditions will apply?). But I'd just like to ask, from a
conceptual stand-point, whether this is a legitimate thing to do.
Thanks for your time,
Alex Wun
[[HTML alternate version deleted]]
|