mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-26 20:12:44 +00:00
zdb: add extra -T flag to show histograms of BRT refcounts
Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #16692
This commit is contained in:
parent
acb6e71eda
commit
673efbbf5d
@ -2152,14 +2152,21 @@ dump_brt(spa_t *spa)
|
||||
if (dump_opt['T'] < 3)
|
||||
return;
|
||||
|
||||
/* -TTT shows a per-vdev histograms; -TTTT shows all entries */
|
||||
boolean_t do_histo = dump_opt['T'] == 3;
|
||||
|
||||
char dva[64];
|
||||
printf("\n%-16s %-10s\n", "DVA", "REFCNT");
|
||||
|
||||
if (!do_histo)
|
||||
printf("\n%-16s %-10s\n", "DVA", "REFCNT");
|
||||
|
||||
for (uint64_t vdevid = 0; vdevid < brt->brt_nvdevs; vdevid++) {
|
||||
brt_vdev_t *brtvd = &brt->brt_vdevs[vdevid];
|
||||
if (brtvd == NULL || !brtvd->bv_initiated)
|
||||
continue;
|
||||
|
||||
uint64_t counts[64] = {};
|
||||
|
||||
zap_cursor_t zc;
|
||||
zap_attribute_t *za = zap_attribute_alloc();
|
||||
for (zap_cursor_init(&zc, brt->brt_mos, brtvd->bv_mos_entries);
|
||||
@ -2172,14 +2179,26 @@ dump_brt(spa_t *spa)
|
||||
za->za_integer_length, za->za_num_integers,
|
||||
&refcnt));
|
||||
|
||||
uint64_t offset = *(const uint64_t *)za->za_name;
|
||||
if (do_histo)
|
||||
counts[highbit64(refcnt)]++;
|
||||
else {
|
||||
uint64_t offset =
|
||||
*(const uint64_t *)za->za_name;
|
||||
|
||||
snprintf(dva, sizeof (dva), "%" PRIu64 ":%llx", vdevid,
|
||||
(u_longlong_t)offset);
|
||||
printf("%-16s %-10llu\n", dva, (u_longlong_t)refcnt);
|
||||
snprintf(dva, sizeof (dva), "%" PRIu64 ":%llx",
|
||||
vdevid, (u_longlong_t)offset);
|
||||
printf("%-16s %-10llu\n", dva,
|
||||
(u_longlong_t)refcnt);
|
||||
}
|
||||
}
|
||||
zap_cursor_fini(&zc);
|
||||
zap_attribute_free(za);
|
||||
|
||||
if (do_histo) {
|
||||
printf("\nBRT: vdev %" PRIu64
|
||||
": DVAs with 2^n refcnts:\n", vdevid);
|
||||
dump_histogram(counts, 64, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
.\" Copyright (c) 2017 Lawrence Livermore National Security, LLC.
|
||||
.\" Copyright (c) 2017 Intel Corporation.
|
||||
.\"
|
||||
.Dd November 18, 2023
|
||||
.Dd October 27, 2024
|
||||
.Dt ZDB 8
|
||||
.Os
|
||||
.
|
||||
@ -408,6 +408,8 @@ blocks cloned, the space saving as a result of cloning, and the saving ratio.
|
||||
.It Fl TT
|
||||
Display the per-vdev BRT statistics, including total references.
|
||||
.It Fl TTT
|
||||
Display histograms of per-vdev BRT refcounts.
|
||||
.It Fl TTTT
|
||||
Dump the contents of the block reference tables.
|
||||
.It Fl u , -uberblock
|
||||
Display the current uberblock.
|
||||
|
Loading…
Reference in New Issue
Block a user