From: wanglinke Date: Mon, 22 Jul 2024 10:40:02 +0000 (+0800) Subject: kv/RocksDBStore: add kv_stats function to print all CF info X-Git-Tag: v20.0.0~1351^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=00063a964ada5f3859104af6c9838f74c98bfc36;p=ceph.git kv/RocksDBStore: add kv_stats function to print all CF info - Added the function of printing all cf's rocksdb level information. - Currently, only the default cf information is printed. - Print all cf information to facilitate observation of the level to which rocksdb is written. - The main purpose is to observe the usage of db/ssd. co-author: Jrchyang Yu Signed-off-by: Wang Linke --- diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index a653fa6398c..c2b0da79ef7 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -1421,21 +1421,34 @@ void RocksDBStore::get_statistics(Formatter *f) << dendl; return; } - + if (cct->_conf->rocksdb_collect_compaction_stats) { - std::string stat_str; - bool status = db->GetProperty("rocksdb.stats", &stat_str); - if (status) { - f->open_object_section("rocksdb_statistics"); + vector handles; + handles.push_back(default_cf); + for (auto cf : cf_handles) { + for (auto shard_cf : cf.second.handles) { + handles.push_back(shard_cf); + } + } + f->open_object_section("rocksdb_statistics"); + for (auto handle : handles) { + std::string stat_str; + bool status = db->GetProperty(handle, "rocksdb.stats", &stat_str); + if (!status) { + derr << __func__ << " failed to get rocksdb.stats for the cf: " + << handle->GetName() << dendl; + continue; + } f->dump_string("rocksdb_compaction_statistics", ""); vector stats; split_stats(stat_str, '\n', stats); for (auto st :stats) { f->dump_string("", st); - } - f->close_section(); + } } + f->close_section(); } + if (cct->_conf->rocksdb_collect_extended_stats) { if (dbstats) { f->open_object_section("rocksdb_extended_statistics");