Files
mirror_zfs/module/zfs
Alexander Motin 9a81484e35 ZAP: Reduce leaf array and free chunks fragmentation
Previous implementation of zap_leaf_array_free() put chunks on the
free list in reverse order.  Also zap_leaf_transfer_entry() and
zap_entry_remove() were freeing name and value arrays in reverse
order.  Together this created a mess in the free list, making
following allocations much more fragmented than necessary.

This patch re-implements zap_leaf_array_free() to keep existing
chunks order, and implements non-destructive zap_leaf_array_copy()
to be used in zap_leaf_transfer_entry() to allow properly ordered
freeing name and value arrays there and in zap_entry_remove().

With this change test of some writes and deletes shows percent of
non-contiguous chunks in DDT reducing from 61% and 47% to 0% and
17% for arrays and frees respectively.  Sure some explicit sorting
could do even better, especially for ZAPs with variable-size arrays,
but it would also cost much more, while this should be very cheap.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes #16766
2024-11-20 13:37:52 -08:00
..
2024-09-14 13:47:59 -07:00
2022-03-15 15:13:42 -07:00
2023-01-10 13:39:22 -08:00
2024-09-14 13:47:59 -07:00
2024-09-04 14:17:02 -07:00
2024-08-16 12:03:35 -07:00
2024-05-29 10:49:11 -07:00
2024-11-04 16:42:06 -08:00
2024-10-02 20:47:11 -07:00
2024-11-04 16:42:06 -08:00
2024-11-04 16:42:06 -08:00
2023-03-14 15:59:58 -07:00
2023-06-09 10:12:52 -07:00
2022-03-15 15:13:42 -07:00
2022-01-12 16:14:36 -08:00
2024-04-09 16:23:19 -07:00
2019-06-19 09:48:12 -07:00
2022-03-15 15:13:42 -07:00
2023-11-08 10:19:41 -08:00
2024-09-14 13:47:59 -07:00
2024-09-14 13:47:59 -07:00
2023-03-14 15:25:50 -07:00
2022-09-02 13:31:19 -07:00
2024-05-29 10:49:11 -07:00
2024-09-14 13:47:59 -07:00
2024-11-20 08:23:08 -08:00
2022-11-29 09:26:03 -08:00