]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: print the first RocksDB level which doesn't fit into fast 61652/head
authorIgor Fedotov <igor.fedotov@croit.io>
Tue, 4 Feb 2025 16:45:13 +0000 (19:45 +0300)
committerIgor Fedotov <igor.fedotov@croit.io>
Tue, 4 Feb 2025 16:45:13 +0000 (19:45 +0300)
device by default.

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h

index 8f1d995fa8db8ca0e58b97b70876b1b747b90e77..79f0ac1c85512ba1d6522ee34909c166ffa8eb60 100644 (file)
@@ -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)
index fe3c4a2f6bf8043090c5aff3818787da7f6c7f4b..2cb1ab1606a370a6f0de7df24fe8424872125dcf 100644 (file)
@@ -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;
     }
   }