]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: use seastar::metrics for metrics reporting
authorKefu Chai <kchai@redhat.com>
Sat, 15 May 2021 05:44:49 +0000 (13:44 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 18 May 2021 10:05:33 +0000 (18:05 +0800)
to be better prepeare for the m:n mapping and to attach more labels
to a metric for better off-line data analysis using ETL tools in future.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h
src/test/crimson/seastore/transaction_manager_test_state.h

index b7de87528f18bd6f5cfbe50fc741ac5dac82332b..8ed529b29f58b2291bb0566c4c9577f5b79b2eb2 100644 (file)
@@ -1105,8 +1105,7 @@ std::unique_ptr<SeaStore> make_seastore(
     std::move(segment_cleaner),
     std::move(journal),
     std::move(cache),
-    std::move(lba_manager),
-    perf_service->get_counters());
+    std::move(lba_manager));
 
   auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
   return std::make_unique<SeaStore>(
index 2977850f0468f7297dd3a8f0a9e048d224012d50..2b7e3291588aca512d5d2ae7d7b443a4d7bbb9e5 100644 (file)
@@ -16,14 +16,12 @@ TransactionManager::TransactionManager(
   SegmentCleanerRef _segment_cleaner,
   JournalRef _journal,
   CacheRef _cache,
-  LBAManagerRef _lba_manager,
-  PerfCounters &perf)
+  LBAManagerRef _lba_manager)
   : segment_manager(_segment_manager),
     segment_cleaner(std::move(_segment_cleaner)),
     cache(std::move(_cache)),
     lba_manager(std::move(_lba_manager)),
-    journal(std::move(_journal)),
-    tm_perf(perf)
+    journal(std::move(_journal))
 {
   segment_cleaner->set_extent_callback(this);
   journal->set_write_pipeline(&write_pipeline);
@@ -158,8 +156,8 @@ TransactionManager::ref_ret TransactionManager::dec_ref(
        t,
        *ref);
       cache->retire_extent(t, ref);
-      tm_perf.inc(ss_tm_extents_retired_total);
-      tm_perf.inc(ss_tm_extents_retired_bytes, ref->get_length());
+      stats.extents_retired_total++;
+      stats.extents_retired_bytes += ref->get_length();
     }
     return ret.refcount;
   });
@@ -177,8 +175,8 @@ TransactionManager::ref_ret TransactionManager::dec_ref(
       return cache->retire_extent(
        t, result.addr, result.length
       ).safe_then([result, this] {
-        tm_perf.inc(ss_tm_extents_retired_total);
-        tm_perf.inc(ss_tm_extents_retired_bytes, result.length);
+       stats.extents_retired_total++;
+       stats.extents_retired_bytes += result.length;
        return ref_ret(
          ref_ertr::ready_future_marker{},
          0);
@@ -380,4 +378,23 @@ TransactionManager::get_extent_if_live_ret TransactionManager::get_extent_if_liv
 
 TransactionManager::~TransactionManager() {}
 
+void TransactionManager::register_metrics()
+{
+  namespace sm = seastar::metrics;
+  metrics.add_group("tm", {
+    sm::make_counter("extents_retired_total", stats.extents_retired_total,
+                    sm::description("total number of retired extents in TransactionManager")),
+    sm::make_counter("extents_retired_bytes", stats.extents_retired_bytes,
+                    sm::description("total size of retired extents in TransactionManager")),
+    sm::make_counter("extents_mutated_total", stats.extents_mutated_total,
+                    sm::description("total number of mutated extents in TransactionManager")),
+    sm::make_counter("extents_mutated_bytes", stats.extents_mutated_bytes,
+                    sm::description("total size of mutated extents in TransactionManager")),
+    sm::make_counter("extents_allocated_total", stats.extents_allocated_total,
+                    sm::description("total number of allocated extents in TransactionManager")),
+    sm::make_counter("extents_allocated_bytes", stats.extents_allocated_bytes,
+                    sm::description("total size of allocated extents in TransactionManager")),
+  });
+}
+
 }
index 56407c13fbcaec95a8428caac4d85a1b0ac0a6a1..55119476bac87f0a7e5993e4a9998004dce0b33a 100644 (file)
@@ -69,8 +69,7 @@ public:
     SegmentCleanerRef segment_cleaner,
     JournalRef journal,
     CacheRef cache,
-    LBAManagerRef lba_manager,
-    PerfCounters &perf);
+    LBAManagerRef lba_manager);
 
   /// Writes initial metadata to disk
   using mkfs_ertr = crimson::errorator<
@@ -190,8 +189,8 @@ public:
     auto ret = cache->duplicate_for_write(
       t,
       ref)->cast<LogicalCachedExtent>();
-    tm_perf.inc(ss_tm_extents_mutated_total);
-    tm_perf.inc(ss_tm_extents_mutated_bytes, ret->get_length());
+    stats.extents_mutated_total++;
+    stats.extents_mutated_bytes += ret->get_length();
     if (!ret->has_pin()) {
       DEBUGT(
        "duplicating {} for write: {}",
@@ -264,8 +263,8 @@ public:
       ext->get_paddr()
     ).safe_then([ext=std::move(ext), len, this](auto &&ref) mutable {
       ext->set_pin(std::move(ref));
-      tm_perf.inc(ss_tm_extents_allocated_total);
-      tm_perf.inc(ss_tm_extents_allocated_bytes, len);
+      stats.extents_allocated_total++;
+      stats.extents_allocated_bytes += len;
       return alloc_extent_ertr::make_ready_future<TCachedExtentRef<T>>(
        std::move(ext));
     });
@@ -495,10 +494,20 @@ private:
   CacheRef cache;
   LBAManagerRef lba_manager;
   JournalRef journal;
-  PerfCounters &tm_perf;
 
   WritePipeline write_pipeline;
 
+  struct {
+    uint64_t extents_retired_total = 0;
+    uint64_t extents_retired_bytes = 0;
+    uint64_t extents_mutated_total = 0;
+    uint64_t extents_mutated_bytes = 0;
+    uint64_t extents_allocated_total = 0;
+    uint64_t extents_allocated_bytes = 0;
+  } stats;
+  seastar::metrics::metric_group metrics;
+  void register_metrics();
+
 public:
   // Testing interfaces
   auto get_segment_cleaner() {
index 07d8061f306fbd9cf21d183b94e0ae45883ecbc6..32b57478e0fa38808fd677ad04604b652aee2594 100644 (file)
@@ -86,8 +86,7 @@ auto get_transaction_manager(
     std::move(segment_cleaner),
     std::move(journal),
     std::move(cache),
-    std::move(lba_manager),
-    perf);
+    std::move(lba_manager));
   return ret;
 }