btrfs: zoned: enable metadata over-commit for non-ZNS setup
authorNaohiro Aota <naohiro.aota@wdc.com>
Tue, 10 Jan 2023 06:04:32 +0000 (15:04 +0900)
committerDavid Sterba <dsterba@suse.com>
Wed, 11 Jan 2023 19:04:25 +0000 (20:04 +0100)
commit85e79ec7b78f863178ca488fd8cb5b3de6347756
treee82af35b0665a31bb3590991e827d0bdf2dafcb3
parent75181406b4eafacc531ff2ee5fb032bd93317e2b
btrfs: zoned: enable metadata over-commit for non-ZNS setup

The commit 79417d040f4f ("btrfs: zoned: disable metadata overcommit for
zoned") disabled the metadata over-commit to track active zones properly.

However, it also introduced a heavy overhead by allocating new metadata
block groups and/or flushing dirty buffers to release the space
reservations. Specifically, a workload (write only without any sync
operations) worsen its performance from 343.77 MB/sec (v5.19) to 182.89
MB/sec (v6.0).

The performance is still bad on current misc-next which is 187.95 MB/sec.
And, with this patch applied, it improves back to 326.70 MB/sec (+73.82%).

This patch introduces a new fs_info->flag BTRFS_FS_NO_OVERCOMMIT to
indicate it needs to disable the metadata over-commit. The flag is enabled
when a device with max active zones limit is loaded into a file-system.

Fixes: 79417d040f4f ("btrfs: zoned: disable metadata overcommit for zoned")
CC: stable@vger.kernel.org # 6.0+
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/fs.h
fs/btrfs/space-info.c
fs/btrfs/zoned.c