Red Hat Bugzilla – Bug 236099
Merge transactions during createi (open) on gfs2
Last modified: 2014-04-28 07:47:23 EDT
Creating a file on gfs2 is broken down into several transactions, at least some
of which should be merged for greater performance.
In addition, it should also be possible to reduce the number of directory
lookups which are required further improving the situation.
Due to recent updated to the upstream code, this task is becoming easier. The ACL/xattr updates were a first part of this, and the currently pending changes to eliminate ops_inode.c are another step towards this goal.
As of today, another set of patches have gone into the -nmw git tree which clean up the inode creation code. We are another step closer to this goal now that it is possible to see the wood for the trees in this area.
Created attachment 587836 [details]
GFS2: combine functions alloc_dinode and make_dinode
This experimental RHEL6 patch combines two of the transactions by
combining functions alloc_dinode and make_dinode. Getting the
lock ordering was quite tricky. The good news is that it passed
the SAS calibration workload, which is a brutal workout. The bad
news is that it didn't seem to improve GFS2 performance noticeably.
So I don't know if we want to pursue this or not.
An initial patch for this has been posted to cluster-devel today. There is still further work to do, but the initial patch has resolved the ordering issue between creation on the incore inode and the other processes required, so that this should now become much easier to do.
Another step in the right direction: