mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-30 20:04:22 +03: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 (cherry picked from commit 673efbbf5d160aea9a58f9eaac6d781d0975659a)
This commit is contained in:
parent
f237b8e2a4
commit
d83cd5307d
@ -2195,14 +2195,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;
|
||||
for (zap_cursor_init(&zc, brt->brt_mos, brtvd->bv_mos_entries);
|
||||
@ -2214,13 +2221,25 @@ dump_brt(spa_t *spa)
|
||||
(const uint64_t *)za.za_name, 1,
|
||||
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);
|
||||
|
||||
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
|
||||
.
|
||||
@ -409,6 +409,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