freebsd-skq/cmd
Josh Paetzel 137146f48c 7303 dynamic metaslab selection
illumos/illumos-gate@8363e80ae7
https://github.com/illumos/illumos-gate/commit/8363e80ae72609660f6090766ca8c2c18aa53f0

https://www.illumos.org/issues/7303

  This change introduces a new weighting algorithm to improve metaslab selection.
  The new weighting algorithm relies on the SPACEMAP_HISTOGRAM feature. As a result,
  the metaslab weight now encodes the type of weighting algorithm used
  (size-based vs segment-based).

  This also introduce a new allocation tracing facility and two new dcmds to help
  debug allocation problems. Each zio now contains a zio_alloc_list_t structure
  that is populated as the zio goes through the allocations stage. Here's an
  example of how to use the tracing facility:

> c5ec000::print zio_t io_alloc_list | ::walk list | ::metaslab_trace
  MSID    DVA    ASIZE      WEIGHT             RESULT               VDEV
     -      0      400           0    NOT_ALLOCATABLE           ztest.0a
     -      0      400           0    NOT_ALLOCATABLE           ztest.0a
     -      0      400           0             ENOSPC           ztest.0a
     -      0      200           0    NOT_ALLOCATABLE           ztest.0a
     -      0      200           0    NOT_ALLOCATABLE           ztest.0a
     -      0      200           0             ENOSPC           ztest.0a
     1      0      400      1 x 8M            17b1a00           ztest.0a

> 1ff2400::print zio_t io_alloc_list | ::walk list | ::metaslab_trace
  MSID    DVA    ASIZE      WEIGHT             RESULT               VDEV
     -      0      200           0    NOT_ALLOCATABLE           mirror-2
     -      0      200           0    NOT_ALLOCATABLE           mirror-0
     1      0      200      1 x 4M            112ae00           mirror-1
     -      1      200           0    NOT_ALLOCATABLE           mirror-2
     -      1      200           0    NOT_ALLOCATABLE           mirror-0
     1      1      200      1 x 4M            112b000           mirror-1
     -      2      200           0    NOT_ALLOCATABLE           mirror-2

  If the metaslab is using segment-based weighting then the WEIGHT column will
  display the number of segments available in the bucket where the allocation
  attempt was made.

Author: George Wilson <george.wilson@delphix.com>
Reviewed by: Alex Reece <alex@delphix.com>
Reviewed by: Chris Siden <christopher.siden@delphix.com>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Paul Dagnelie <paul.dagnelie@delphix.com>
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Reviewed by: Don Brady <don.brady@intel.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
2017-03-15 04:16:08 +00:00
..
dtrace 7297 clear() on llquantize aggregation causes dtrace to exit 2016-08-26 20:51:09 +00:00
lockstat Import the lockstat(1) sources from OpenSolaris as of 20080410. 2009-06-18 17:25:38 +00:00
mdb/tools/common Vendor import of the full userland contrib part of DTrace support from 2008-04-26 00:54:52 +00:00
plockstat Import plockstat from OpenSolaris r12768. 2010-07-19 14:57:01 +00:00
pyzfs Update vendor/opensolaris to last OpenSolaris state (13149:b23a4dab3d50) 2012-07-18 07:48:04 +00:00
sgs Update vendor/opensolaris to last OpenSolaris state (13149:b23a4dab3d50) 2012-07-18 07:48:04 +00:00
stat/common Update vendor/illumos/dist and vendor-sys/illumos/dist 2013-02-11 08:07:56 +00:00
zdb 7303 dynamic metaslab selection 2017-03-15 04:16:08 +00:00
zfs 6314 buffer overflow in dsl_dataset_name 2016-07-12 12:01:54 +00:00
zhack 6314 buffer overflow in dsl_dataset_name 2016-07-12 12:01:54 +00:00
zinject 6531 Provide mechanism to artificially limit disk performance 2016-03-08 16:11:59 +00:00
zlook Update vendor/opensolaris to last OpenSolaris state (13149:b23a4dab3d50) 2012-07-18 07:48:04 +00:00
zpool 6872 zfs libraries should not allow uninitialized variables 2016-07-12 11:59:25 +00:00
zstreamdump 5027 zfs large block support (add copyright) 2016-03-08 17:48:26 +00:00
ztest 7303 dynamic metaslab selection 2017-03-15 04:16:08 +00:00