mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-03-11 04:46:18 +03:00
zdb: adjust block histogram binning strategy
Previously, a bin included all blocks _starting_ from given size (e.g., a "4K" bin would include all blocks within the [4K; 8K) region). This is counter-intuitive and does not match the typical use-case of the block histogram (that is, to estimate disk usage considering how ZFS' block allocation works). In other words, if I'm looking at the "4K" row, I'm interested in records that _fit into_ a 4K block. Adjust the binning strategy such that a bin includes all blocks _up to_ given size, such that e.g. a "4K" bin would include all blocks within the (2K; 4K] region. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ivan Shapovalov <intelfx@intelfx.name> Closes #16999
This commit is contained in:
parent
3a1a22abb4
commit
f8b082b5af
@ -6254,7 +6254,12 @@ skipped:
|
|||||||
*/
|
*/
|
||||||
int bin;
|
int bin;
|
||||||
|
|
||||||
#define BIN(size) (highbit64(size) - 1)
|
/*
|
||||||
|
* Binning strategy: each bin includes blocks up to and including
|
||||||
|
* the given size (excluding blocks that fit into the previous bin).
|
||||||
|
* This way, the "4K" bin includes blocks within the (2K; 4K] range.
|
||||||
|
*/
|
||||||
|
#define BIN(size) (highbit64((size) - 1))
|
||||||
|
|
||||||
switch (block_bin_mode) {
|
switch (block_bin_mode) {
|
||||||
case BIN_PSIZE: bin = BIN(BP_GET_PSIZE(bp)); break;
|
case BIN_PSIZE: bin = BIN(BP_GET_PSIZE(bp)); break;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user