mbox series

[v2,0/2] btrfs: Speedup chunk allocation for large fs

Message ID 20190209052437.24020-1-wqu@suse.com (mailing list archive)
Headers show
Series btrfs: Speedup chunk allocation for large fs | expand

Message

Qu Wenruo Feb. 9, 2019, 5:24 a.m. UTC
This patchset can be fetched from github:
https://github.com/adam900710/linux/tree/falloc_speedup

Which is based on misc-next branch, with the following commit as base:
commit eb3e579e28f1c58e79176fbf5afe1cf3ee227190
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Feb 8 15:39:37 2019 +0800

    btrfs: fix comment its device list mutex not volume lock

Btrfs falloc can be slower and slower when there are more and more block
groups.

One cause of this problem is find_free_dev_extent(), as it always search
from device offset 0, and if there are thousands existing dev extents
btrfs will search leaf by leaf until it reaches a free slot.

This is super slow and inefficient.

This patchset will introduce a new member,
btrfs_device::hint_free_dev_extent to give some hint for
find_free_dev_extent().

The full cause analyse and benchmark can be found in the 2nd patch.

Changelog:
v2:
- Fix the false ENOSPC __btrfs_alloc_chunk() return caused by unhandled
  search_hint value
- Rebase to misc-next to co-operate with seed device related code
- Add reviewed-by tags for the first patch

Qu Wenruo (2):
  btrfs: Don't search devid for every verify_one_dev_extent() call
  btrfs: Introduce free dev extent hint to speed up chunk allocation

 fs/btrfs/volumes.c | 58 ++++++++++++++++++++++++++++++++++------------
 fs/btrfs/volumes.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 101 insertions(+), 15 deletions(-)