From: Igor Fedotov Date: Tue, 4 Feb 2025 16:45:13 +0000 (+0300) Subject: os/bluestore: print the first RocksDB level which doesn't fit into fast X-Git-Tag: v20.3.0~133^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d95aa620b315d9261cb50b0465ecfd2b6b534a60;p=ceph.git os/bluestore: print the first RocksDB level which doesn't fit into fast device by default. Signed-off-by: Igor Fedotov --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 8f1d995fa8db..79f0ac1c8551 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -19450,6 +19450,7 @@ void RocksDBBlueFSVolumeSelector::dump(ostream& sout) { sout << "RocksDBBlueFSVolumeSelector " << std::endl; sout << ">>Settings<<" << " extra=" << byte_u_t(db_avail4slow) + << ", extra level=" << extra_level << ", l0_size=" << byte_u_t(level0_size) << ", l_base=" << byte_u_t(level_base) << ", l_multi=" << byte_u_t(level_multiplier) diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index fe3c4a2f6bf8..2cb1ab1606a3 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -4459,6 +4459,7 @@ class RocksDBBlueFSVolumeSelector : public BlueFSVolumeSelector uint64_t level0_size = 0; uint64_t level_base = 0; uint64_t level_multiplier = 0; + size_t extra_level = 0; enum { OLD_POLICY, USE_SOME_EXTRA @@ -4496,9 +4497,11 @@ public: uint64_t prev_levels = _level0_size; uint64_t cur_level = _level_base; uint64_t cur_threshold = prev_levels + cur_level; + extra_level = 1; do { uint64_t next_level = cur_level * _level_multiplier; uint64_t next_threshold = prev_levels + cur_level + next_level; + ++extra_level; if (_db_total <= next_threshold) { cur_threshold *= reserved_factor; db_avail4slow = cur_threshold < _db_total ? _db_total - cur_threshold : 0; @@ -4511,6 +4514,7 @@ public: } while (true); } else { db_avail4slow = reserved < _db_total ? _db_total - reserved : 0; + extra_level = 0; } }