From fe186c2c8b55cc184d99c27fbe42ae097964c696 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Wed, 24 Nov 2021 20:33:23 +0300 Subject: [PATCH] os/bluestore: dump bluefs alloc unit sizes with perf counters dump Signed-off-by: Igor Fedotov (cherry picked from commit d17986306d23cfbf410434aaf789546707dd7dc9) Conflicts: src/os/bluestore/BlueFS.cc * missed backports --- src/os/bluestore/BlueFS.cc | 28 +++++++++++++++++++++++++--- src/os/bluestore/BlueFS.h | 3 +++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index 55abc0b5b0119..b2f1fc813ae95 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -268,7 +268,21 @@ void BlueFS::_init_logger() "Maximum bytes allocated from DB"); b.add_u64_counter(l_bluefs_max_bytes_slow, "max_bytes_slow", "Maximum bytes allocated from SLOW"); - + b.add_u64_counter(l_bluefs_main_alloc_unit, "alloc_unit_main", + "Allocation unit size (in bytes) for primary/shared device", + "aumb", + PerfCountersBuilder::PRIO_CRITICAL, + unit_t(UNIT_BYTES)); + b.add_u64_counter(l_bluefs_db_alloc_unit, "alloc_unit_db", + "Allocation unit size (in bytes) for standalone DB device", + "audb", + PerfCountersBuilder::PRIO_CRITICAL, + unit_t(UNIT_BYTES)); + b.add_u64_counter(l_bluefs_wal_alloc_unit, "alloc_unit_wal", + "Allocation unit size (in bytes) for standalone WAL device", + "auwb", + PerfCountersBuilder::PRIO_CRITICAL, + unit_t(UNIT_BYTES)); b.add_u64_counter(l_bluefs_read_random_count, "read_random_count", "random read requests processed"); b.add_u64_counter(l_bluefs_read_random_bytes, "read_random_bytes", @@ -506,8 +520,8 @@ int BlueFS::mkfs(uuid_d osd_uuid, const bluefs_layout_t& layout) get_block_device_size(BlueFS::BDEV_SLOW) * 95 / 100)); } - _init_alloc(); _init_logger(); + _init_alloc(); super.version = 0; super.block_size = bdev[BDEV_DB]->get_block_size(); @@ -560,14 +574,22 @@ void BlueFS::_init_alloc() { dout(20) << __func__ << dendl; + size_t wal_alloc_size = 0; if (bdev[BDEV_WAL]) { - alloc_size[BDEV_WAL] = cct->_conf->bluefs_alloc_size; + wal_alloc_size = cct->_conf->bluefs_alloc_size; + alloc_size[BDEV_WAL] = wal_alloc_size; } + logger->set(l_bluefs_wal_alloc_unit, wal_alloc_size); + if (bdev[BDEV_SLOW]) { alloc_size[BDEV_DB] = cct->_conf->bluefs_alloc_size; alloc_size[BDEV_SLOW] = cct->_conf->bluefs_shared_alloc_size; + logger->set(l_bluefs_db_alloc_unit, cct->_conf->bluefs_alloc_size); + logger->set(l_bluefs_main_alloc_unit, cct->_conf->bluefs_shared_alloc_size); } else { alloc_size[BDEV_DB] = cct->_conf->bluefs_shared_alloc_size; + logger->set(l_bluefs_main_alloc_unit, 0); + logger->set(l_bluefs_db_alloc_unit, cct->_conf->bluefs_shared_alloc_size); } // new wal and db devices are never shared if (bdev[BDEV_NEWWAL]) { diff --git a/src/os/bluestore/BlueFS.h b/src/os/bluestore/BlueFS.h index 3d5e20ca4cc48..e6d1a1fc31e35 100644 --- a/src/os/bluestore/BlueFS.h +++ b/src/os/bluestore/BlueFS.h @@ -40,6 +40,9 @@ enum { l_bluefs_max_bytes_wal, l_bluefs_max_bytes_db, l_bluefs_max_bytes_slow, + l_bluefs_main_alloc_unit, + l_bluefs_db_alloc_unit, + l_bluefs_wal_alloc_unit, l_bluefs_read_random_count, l_bluefs_read_random_bytes, l_bluefs_read_random_disk_count, -- 2.39.5