zfs/cmd
Alexander Motin f8020c9363
Make metaslab class rotor and aliquot per-allocator.
Metaslab rotor and aliquot are used to distribute workload between
vdevs while keeping some locality for logically adjacent blocks.  Once
multiple allocators were introduced to separate allocation of different
objects it does not make much sense for different allocators to write
into different metaslabs of the same metaslab group (vdev) same time,
competing for its resources.  This change makes each allocator choose
metaslab group independently, colliding with others only sporadically.

Test including simultaneous write into 4 files with recordsize of 4KB
on a striped pool of 30 disks on a system with 40 logical cores show
reduction of vdev queue lock contention from 54 to 27% due to better
load distribution.  Unfortunately it won't help much ZVOLs yet since
only one dataset/ZVOL is synced at a time, and so for the most part
only one allocator is used, but it may improve later.

While there, to reduce the number of pointer dereferences change
per-allocator storage for metaslab classes and groups from several
separate malloc()'s to variable length arrays at the ends of the
original class and group structures.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Closes #11288
2020-12-15 10:55:44 -08:00
..
arc_summary arc_summary3: Handle overflowing value width 2020-12-11 10:29:53 -08:00
arcstat FreeBSD: Update usage of py-sysctl 2020-12-10 15:28:31 -08:00
dbufstat Make dbufstat work on FreeBSD 2020-10-08 09:40:23 -07:00
fsck_zfs Fix typos in cmd/ 2019-08-30 09:43:30 -07:00
mount_zfs mount_zfs: print strerror instead of errno for error reporting 2020-12-09 21:24:59 -08:00
raidz_test Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
vdev_id Silence 'make checkbashisms' 2020-08-20 13:45:47 -07:00
zdb Make metaslab class rotor and aliquot per-allocator. 2020-12-15 10:55:44 -08:00
zed FreeBSD: notify userspace when a vdev is removed 2020-12-02 10:20:02 -08:00
zfs Add -u option to 'zfs create' 2020-12-04 14:01:42 -08:00
zfs_ids_to_path Use abs_top_builddir when referencing libraries 2020-07-10 14:26:32 -07:00
zgenhostid zgenhostid: accept hostid arguments equal to zero. 2020-11-14 17:20:54 -08:00
zhack Unconditionally enable debugging for libzpool 2020-07-10 15:30:31 -07:00
zinject Use abs_top_builddir when referencing libraries 2020-07-10 14:26:32 -07:00
zpool zpool: Dryrun fails to list some devices 2020-12-04 14:04:39 -08:00
zpool_influxdb zpool_influxdb: move to libexec dir 2020-11-28 11:15:57 -08:00
zstream Add support to decode a resume token 2020-07-23 17:44:03 -07:00
zstreamdump Minor `zstream redup` command fixes 2020-04-10 21:10:09 -07:00
ztest Make metaslab class rotor and aliquot per-allocator. 2020-12-15 10:55:44 -08:00
zvol_id Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
zvol_wait zvol_wait should ignore redacted zvols 2019-11-06 10:51:19 -08:00
Makefile.am Add zpool_influxdb command 2020-10-09 09:29:21 -07:00