[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