diff mbox

Btrfs: avoid unnecessary ordered extent cache resets

Message ID 1385139163-7539-1-git-send-email-fdmanana@gmail.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Filipe Manana Nov. 22, 2013, 4:52 p.m. UTC
After an ordered extent completes, don't blindly reset the
inode's ordered tree last accessed ordered extent pointer.

While running the xfstests I noticed that about 29% of the
time the ordered extent to which tree->last pointed was not
the same as our just completed ordered extent. After that I
ran the following sysbench test (after a prepare phase) and
noticed that about 68% of the time tree->last pointed to
a different ordered extent too.

sysbench --test=fileio --file-num=32 --file-total-size=4G \
    --file-test-mode=rndwr --num-threads=512 \
    --file-block-size=32768 --max-time=60 --max-requests=0 run

Therefore reset tree->last on ordered extent removal only if
it pointed to the ordered extent we're removing from the tree.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
---
 fs/btrfs/ordered-data.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Josef Bacik Nov. 22, 2013, 5:29 p.m. UTC | #1
On Fri, Nov 22, 2013 at 04:52:43PM +0000, Filipe David Borba Manana wrote:
> After an ordered extent completes, don't blindly reset the
> inode's ordered tree last accessed ordered extent pointer.
> 
> While running the xfstests I noticed that about 29% of the
> time the ordered extent to which tree->last pointed was not
> the same as our just completed ordered extent. After that I
> ran the following sysbench test (after a prepare phase) and
> noticed that about 68% of the time tree->last pointed to
> a different ordered extent too.
> 
> sysbench --test=fileio --file-num=32 --file-total-size=4G \
>     --file-test-mode=rndwr --num-threads=512 \
>     --file-block-size=32768 --max-time=60 --max-requests=0 run
> 
> Therefore reset tree->last on ordered extent removal only if
> it pointed to the ordered extent we're removing from the tree.
> 

Well this is excellent, how much does it affect performance tho?  I'm still
going to take it, I'd just like to know how big of an impact it makes.  Thanks,

Josef
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 69582d5..b8c2ded 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -520,7 +520,8 @@  void btrfs_remove_ordered_extent(struct inode *inode,
 	spin_lock_irq(&tree->lock);
 	node = &entry->rb_node;
 	rb_erase(node, &tree->tree);
-	tree->last = NULL;
+	if (tree->last == node)
+		tree->last = NULL;
 	set_bit(BTRFS_ORDERED_COMPLETE, &entry->flags);
 	spin_unlock_irq(&tree->lock);