]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: add metrics for count btree extents
authorXuehan Xu <xxhdx1985126@gmail.com>
Fri, 10 Jun 2022 07:52:02 +0000 (15:52 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Sun, 19 Jun 2022 12:21:00 +0000 (20:21 +0800)
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/cache.h
src/crimson/os/seastore/transaction.h

index 73ecfd735852c83e962d11656a1335a6ca03d6d6..70051672dea83c75dd53f70970fe84d0af7325e7 100644 (file)
@@ -494,6 +494,7 @@ void Cache::register_metrics()
   auto register_tree_metrics = [&labels_by_src, &onode_label, &omap_label, this](
       const sm::label_instance& tree_label,
       uint64_t& tree_depth,
+      int64_t& tree_extents_num,
       counter_by_src_t<tree_efforts_t>& committed_tree_efforts,
       counter_by_src_t<tree_efforts_t>& invalidated_tree_efforts) {
     metrics.add_group(
@@ -505,6 +506,12 @@ void Cache::register_metrics()
           sm::description("the depth of tree"),
           {tree_label}
         ),
+       sm::make_counter(
+         "tree_extents_num",
+         tree_extents_num,
+         sm::description("num of extents of the tree"),
+         {tree_label}
+       )
       }
     );
     for (auto& [src, src_label] : labels_by_src) {
@@ -566,21 +573,25 @@ void Cache::register_metrics()
   register_tree_metrics(
       onode_label,
       stats.onode_tree_depth,
+      stats.onode_tree_extents_num,
       stats.committed_onode_tree_efforts,
       stats.invalidated_onode_tree_efforts);
   register_tree_metrics(
       omap_label,
       stats.omap_tree_depth,
+      stats.omap_tree_extents_num,
       stats.committed_omap_tree_efforts,
       stats.invalidated_omap_tree_efforts);
   register_tree_metrics(
       lba_label,
       stats.lba_tree_depth,
+      stats.lba_tree_extents_num,
       stats.committed_lba_tree_efforts,
       stats.invalidated_lba_tree_efforts);
   register_tree_metrics(
       backref_label,
       stats.backref_tree_depth,
+      stats.backref_tree_extents_num,
       stats.committed_backref_tree_efforts,
       stats.invalidated_backref_tree_efforts);
 
@@ -1259,11 +1270,15 @@ record_t Cache::prepare_record(
   if (t.lba_tree_stats.depth) {
     stats.lba_tree_depth = t.lba_tree_stats.depth;
   }
+  stats.lba_tree_extents_num += t.lba_tree_stats.extents_num_delta;
+  ceph_assert(stats.lba_tree_extents_num >= 0);
   get_by_src(stats.committed_lba_tree_efforts, trans_src
       ).increment(t.lba_tree_stats);
   if (t.backref_tree_stats.depth) {
     stats.backref_tree_depth = t.backref_tree_stats.depth;
   }
+  stats.backref_tree_extents_num += t.backref_tree_stats.extents_num_delta;
+  ceph_assert(stats.backref_tree_extents_num >= 0);
   get_by_src(stats.committed_backref_tree_efforts, trans_src
       ).increment(t.backref_tree_stats);
 
index 796bb06b8111c9f46f58d614195193da648d77f4..582607a9f1200728ed9c95669fee858465de8d85 100644 (file)
@@ -1170,18 +1170,22 @@ private:
     uint64_t dirty_bytes = 0;
 
     uint64_t onode_tree_depth = 0;
+    int64_t onode_tree_extents_num = 0;
     counter_by_src_t<tree_efforts_t> committed_onode_tree_efforts;
     counter_by_src_t<tree_efforts_t> invalidated_onode_tree_efforts;
 
     uint64_t omap_tree_depth = 0;
+    int64_t omap_tree_extents_num = 0;
     counter_by_src_t<tree_efforts_t> committed_omap_tree_efforts;
     counter_by_src_t<tree_efforts_t> invalidated_omap_tree_efforts;
 
     uint64_t lba_tree_depth = 0;
+    int64_t lba_tree_extents_num = 0;
     counter_by_src_t<tree_efforts_t> committed_lba_tree_efforts;
     counter_by_src_t<tree_efforts_t> invalidated_lba_tree_efforts;
 
     uint64_t backref_tree_depth = 0;
+    int64_t backref_tree_extents_num = 0;
     counter_by_src_t<tree_efforts_t> committed_backref_tree_efforts;
     counter_by_src_t<tree_efforts_t> invalidated_backref_tree_efforts;
 
index d6926047ebe7f5a20fb82903198de87b2a72a6ae..83c99f07bc6610ad5da1a9dc3ef8da846024eb1b 100644 (file)
@@ -359,12 +359,14 @@ public:
     uint64_t num_inserts = 0;
     uint64_t num_erases = 0;
     uint64_t num_updates = 0;
+    int64_t extents_num_delta = 0;
 
     bool is_clear() const {
       return (depth == 0 &&
               num_inserts == 0 &&
               num_erases == 0 &&
-              num_updates == 0);
+              num_updates == 0 &&
+             extents_num_delta == 0);
     }
   };
   tree_stats_t& get_onode_tree_stats() {