]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: increase journal size and decrease rewrite-dirty size 46310/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 18 May 2022 02:22:21 +0000 (10:22 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Thu, 19 May 2022 09:03:47 +0000 (17:03 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/segment_cleaner.h
src/crimson/os/seastore/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h

index bc9f09c08ebb69e2ee454adb0849e81e65211473..aad284a6d7e57582d724bd15de2e70667e64b89e 100644 (file)
@@ -509,6 +509,20 @@ public:
     }
 
     static config_t get_default() {
+      return config_t{
+         12,   // target_journal_segments
+         16,   // max_journal_segments
+         .9,   // available_ratio_gc_max
+         .2,   // available_ratio_hard_limit
+         .8,   // reclaim_ratio_hard_limit
+         .6,   // reclaim_ratio_gc_threshold
+         1<<20,// reclaim_bytes_per_cycle
+         1<<17,// rewrite_dirty_bytes_per_cycle
+         1<<24 // rewrite_backref_bytes_per_cycle
+       };
+    }
+
+    static config_t get_test() {
       return config_t{
          2,    // target_journal_segments
          4,    // max_journal_segments
@@ -517,7 +531,7 @@ public:
          .8,   // reclaim_ratio_hard_limit
          .6,   // reclaim_ratio_gc_threshold
          1<<20,// reclaim_bytes_per_cycle
-         1<<20,// rewrite_dirty_bytes_per_cycle
+         1<<17,// rewrite_dirty_bytes_per_cycle
          1<<24 // rewrite_backref_bytes_per_cycle
        };
     }
index 28e9b77bd83c1395fcf1db816168b28740ebb495..16ef8ef5ae4d0d821391e4d6d1fb8f608a49a2a4 100644 (file)
@@ -644,12 +644,23 @@ TransactionManagerRef make_transaction_manager(tm_make_config_t config)
   auto lba_manager = lba_manager::create_lba_manager(*cache);
   auto sms = std::make_unique<SegmentManagerGroup>();
   auto backref_manager = create_backref_manager(*sms, *cache);
+
+  bool cleaner_is_detailed;
+  SegmentCleaner::config_t cleaner_config;
+  if (config.is_test) {
+    cleaner_is_detailed = true;
+    cleaner_config = SegmentCleaner::config_t::get_test();
+  } else {
+    cleaner_is_detailed = false;
+    cleaner_config = SegmentCleaner::config_t::get_default();
+  }
   auto segment_cleaner = std::make_unique<SegmentCleaner>(
-    SegmentCleaner::config_t::get_default(),
+    cleaner_config,
     std::move(sms),
     *backref_manager,
     *cache,
-    config.detailed);
+    cleaner_is_detailed);
+
   JournalRef journal;
   if (config.j_type == journal_type_t::SEGMENT_JOURNAL) {
     journal = journal::make_segmented(*segment_cleaner);
index 41b7de9581c359bc63110cd1176125e3497bced5..558fd37a63de6127e7299c77d79fc1108fed7478 100644 (file)
@@ -35,7 +35,7 @@ namespace crimson::os::seastore {
 class Journal;
 
 struct tm_make_config_t {
-  bool detailed = true;
+  bool is_test = true;
   journal_type_t j_type = journal_type_t::SEGMENT_JOURNAL;
   placement_hint_t default_placement_hint = placement_hint_t::HOT;
 
@@ -65,10 +65,10 @@ struct tm_make_config_t {
   tm_make_config_t &operator=(const tm_make_config_t &) = default;
 private:
   tm_make_config_t(
-    bool detailed,
+    bool is_test,
     journal_type_t j_type,
     placement_hint_t default_placement_hint)
-    : detailed(detailed), j_type(j_type),
+    : is_test(is_test), j_type(j_type),
       default_placement_hint(default_placement_hint)
   {}
 };