Skip to content

Commit 449a1e1

Browse files
authored
Merge pull request ceph#46310 from cyx1231st/wip-seastore-tune-cleaner
crimson/os/seastore: increase journal size and decrease rewrite-dirty size Reviewed-by: Samuel Just <[email protected]> Reviewed-by: Xuehan Xu <[email protected]>
2 parents 0d45eca + 6a4f0e3 commit 449a1e1

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

src/crimson/os/seastore/segment_cleaner.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,20 @@ class SegmentCleaner : public SegmentProvider {
509509
}
510510

511511
static config_t get_default() {
512+
return config_t{
513+
12, // target_journal_segments
514+
16, // max_journal_segments
515+
.9, // available_ratio_gc_max
516+
.2, // available_ratio_hard_limit
517+
.8, // reclaim_ratio_hard_limit
518+
.6, // reclaim_ratio_gc_threshold
519+
1<<20,// reclaim_bytes_per_cycle
520+
1<<17,// rewrite_dirty_bytes_per_cycle
521+
1<<24 // rewrite_backref_bytes_per_cycle
522+
};
523+
}
524+
525+
static config_t get_test() {
512526
return config_t{
513527
2, // target_journal_segments
514528
4, // max_journal_segments
@@ -517,7 +531,7 @@ class SegmentCleaner : public SegmentProvider {
517531
.8, // reclaim_ratio_hard_limit
518532
.6, // reclaim_ratio_gc_threshold
519533
1<<20,// reclaim_bytes_per_cycle
520-
1<<20,// rewrite_dirty_bytes_per_cycle
534+
1<<17,// rewrite_dirty_bytes_per_cycle
521535
1<<24 // rewrite_backref_bytes_per_cycle
522536
};
523537
}

src/crimson/os/seastore/transaction_manager.cc

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -644,12 +644,23 @@ TransactionManagerRef make_transaction_manager(tm_make_config_t config)
644644
auto lba_manager = lba_manager::create_lba_manager(*cache);
645645
auto sms = std::make_unique<SegmentManagerGroup>();
646646
auto backref_manager = create_backref_manager(*sms, *cache);
647+
648+
bool cleaner_is_detailed;
649+
SegmentCleaner::config_t cleaner_config;
650+
if (config.is_test) {
651+
cleaner_is_detailed = true;
652+
cleaner_config = SegmentCleaner::config_t::get_test();
653+
} else {
654+
cleaner_is_detailed = false;
655+
cleaner_config = SegmentCleaner::config_t::get_default();
656+
}
647657
auto segment_cleaner = std::make_unique<SegmentCleaner>(
648-
SegmentCleaner::config_t::get_default(),
658+
cleaner_config,
649659
std::move(sms),
650660
*backref_manager,
651661
*cache,
652-
config.detailed);
662+
cleaner_is_detailed);
663+
653664
JournalRef journal;
654665
if (config.j_type == journal_type_t::SEGMENT_JOURNAL) {
655666
journal = journal::make_segmented(*segment_cleaner);

src/crimson/os/seastore/transaction_manager.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace crimson::os::seastore {
3535
class Journal;
3636

3737
struct tm_make_config_t {
38-
bool detailed = true;
38+
bool is_test = true;
3939
journal_type_t j_type = journal_type_t::SEGMENT_JOURNAL;
4040
placement_hint_t default_placement_hint = placement_hint_t::HOT;
4141

@@ -65,10 +65,10 @@ struct tm_make_config_t {
6565
tm_make_config_t &operator=(const tm_make_config_t &) = default;
6666
private:
6767
tm_make_config_t(
68-
bool detailed,
68+
bool is_test,
6969
journal_type_t j_type,
7070
placement_hint_t default_placement_hint)
71-
: detailed(detailed), j_type(j_type),
71+
: is_test(is_test), j_type(j_type),
7272
default_placement_hint(default_placement_hint)
7373
{}
7474
};

0 commit comments

Comments
 (0)