[Ocfs2-devel] [patch 06/15] ocfs2: reflink: fix slow unlink for refcounted file

Mark Fasheh mfasheh at suse.de
Wed Dec 17 12:58:27 PST 2014


On Mon, Dec 15, 2014 at 02:51:06PM -0800, Andrew Morton wrote:
> From: Junxiao Bi <junxiao.bi at oracle.com>
> Subject: ocfs2: reflink: fix slow unlink for refcounted file
> 
> When running ocfs2 test suite multiple nodes reflink stress test, for a 4
> nodes cluster, every unlink() for refcounted file needs about 700s.
>
> The slow unlink is caused by the contention of refcount tree lock since
> all nodes are unlink files using the same refcount tree.  When the
> unlinking file have many extents(over 1600 in our test), most of the
> extents has refcounted flag set.  In ocfs2_commit_truncate(), it will
> execute the following call trace for every extents.  This means it needs
> get and released refcount tree lock about 1600 times.  And when several
> nodes are do this at the same time, the performance will be very low.
> 
> ocfs2_remove_btree_range()
> ----ocfs2_lock_refcount_tree()
> ------ocfs2_refcount_lock()
> --------__ocfs2_cluster_lock()
> 
> ocfs2_refcount_lock() is costly, move it to ocfs2_commit_truncate() to do
> lock/unlock once can improve a lot performance.

Looks good, thanks Junxiao!

Reviewed-by: Mark Fasheh <mfasheh at suse.de>



More information about the Ocfs2-devel mailing list