]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tool/bluestore_tool: make 'bluefs-stats' command dump per-dev stats.
authorIgor Fedotov <ifedotov@suse.com>
Wed, 6 Apr 2022 19:18:58 +0000 (22:18 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Wed, 27 Apr 2022 16:58:00 +0000 (19:58 +0300)
Originally the command uses default volume selector for stats collection
 which isn't that verbose when single volume is in use. This patch
enforces using RocksDBBlueFSVolumeSelector to dump more stats.
Additionally one can enforce that selector usage via config parameters.

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
src/common/options/global.yaml.in
src/os/bluestore/BlueStore.cc
src/os/bluestore/bluestore_tool.cc

index bf20361ed06815bdc503c52de5d1ff508ece3a1e..62f28bfb9cb4ffac65d12827a6e59a9ac1eaa001 100644 (file)
@@ -5372,7 +5372,7 @@ options:
   type: str
   level: dev
   desc: Determines bluefs volume selection policy
-  long_desc: Determines bluefs volume selection policy. 'use_some_extra' policy allows
+  long_desc: Determines bluefs volume selection policy. 'use_some_extra*' policy allows
     to override RocksDB level granularity and put high level's data to faster device
     even when the level doesn't completely fit there. 'fit_to_fast' policy enables
     using 100% of faster disk capacity and allows the user to turn on 'level_compaction_dynamic_level_bytes'
@@ -5381,6 +5381,7 @@ options:
   enum_values:
   - rocksdb_original
   - use_some_extra
+  - use_some_extra_enforced
   - fit_to_fast
   with_legacy: true
 - name: bluestore_volume_selection_reserved_factor
index 1263f19a4c710dc5892302bd8172fcd77c36c817..2922c88adea51c20cb38f3b842a6b6bdbbfd5039 100644 (file)
@@ -6207,7 +6207,8 @@ int BlueStore::_open_bluefs(bool create, bool read_only)
     return r;
   }
   BlueFSVolumeSelector* vselector = nullptr;
-  if (bluefs_layout.shared_bdev == BlueFS::BDEV_SLOW) {
+  if (bluefs_layout.shared_bdev == BlueFS::BDEV_SLOW ||
+      cct->_conf->bluestore_volume_selection_policy == "use_some_extra_enforced") {
 
     string options = cct->_conf->bluestore_rocksdb_options;
     string options_annex = cct->_conf->bluestore_rocksdb_options_annex;
@@ -6245,7 +6246,8 @@ int BlueStore::_open_bluefs(bool create, bool read_only)
           rocks_opts.max_bytes_for_level_multiplier,
           reserved_factor,
           cct->_conf->bluestore_volume_selection_reserved,
-          cct->_conf->bluestore_volume_selection_policy == "use_some_extra");
+          cct->_conf->bluestore_volume_selection_policy.find("use_some_extra")
+             == 0);
     }    
   }
   if (create) {
index 2f1a7847ae695e787738377b8c9513a4e68d03ed..41775c8a3070d2fbec4f63f87146176e27b69add 100644 (file)
@@ -1060,6 +1060,11 @@ int main(int argc, char **argv)
     AdminSocket* admin_socket = g_ceph_context->get_admin_socket();
     ceph_assert(admin_socket);
     validate_path(cct.get(), path, false);
+
+    // make sure we can adjust any config settings
+    g_conf()._clear_safe_to_start_threads();
+    g_conf().set_val_or_die("bluestore_volume_selection_policy",
+                            "use_some_extra_enforced");
     BlueStore bluestore(cct.get(), path);
     int r = bluestore.cold_open();
     if (r < 0) {