From 11ff04227f05a619e9d87600004eab255f2fd880 Mon Sep 17 00:00:00 2001 From: Alex Chi Z Date: Wed, 17 Jan 2024 15:49:43 +0800 Subject: [PATCH] compute read amp for tiered compaction Signed-off-by: Alex Chi Z --- mini-lsm/src/bin/compaction_simulator.rs | 12 +++++++++++- mini-lsm/src/compact/simple_leveled.rs | 2 +- mini-lsm/src/compact/tiered.rs | 3 +++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mini-lsm/src/bin/compaction_simulator.rs b/mini-lsm/src/bin/compaction_simulator.rs index 34c8a42..48ee217 100644 --- a/mini-lsm/src/bin/compaction_simulator.rs +++ b/mini-lsm/src/bin/compaction_simulator.rs @@ -138,7 +138,7 @@ fn main() { level0_file_num_compaction_trigger, max_levels, } => { - let mut controller = + let controller = SimpleLeveledCompactionController::new(SimpleLeveledCompactionOptions { size_ratio_percent, level0_file_num_compaction_trigger, @@ -294,6 +294,16 @@ fn main() { storage.total_flushes, max_space as f64 / storage.total_flushes as f64 ); + println!( + "Read Amplification: {}x", + storage.snapshot.l0_sstables.len() + + storage + .snapshot + .levels + .iter() + .filter(|(_, f)| !f.is_empty()) + .count() + ); println!(); } } diff --git a/mini-lsm/src/compact/simple_leveled.rs b/mini-lsm/src/compact/simple_leveled.rs index e04d68f..a0caa31 100644 --- a/mini-lsm/src/compact/simple_leveled.rs +++ b/mini-lsm/src/compact/simple_leveled.rs @@ -26,7 +26,7 @@ impl SimpleLeveledCompactionController { } pub fn generate_compaction_task( - &mut self, + &self, snapshot: &LsmStorageInner, ) -> Option { let mut level_sizes = Vec::new(); diff --git a/mini-lsm/src/compact/tiered.rs b/mini-lsm/src/compact/tiered.rs index dfde993..6f1b5b3 100644 --- a/mini-lsm/src/compact/tiered.rs +++ b/mini-lsm/src/compact/tiered.rs @@ -119,6 +119,9 @@ impl TieredCompactionController { levels.push((output[0], output.to_vec())); } } + if !tier_to_remove.is_empty() { + unreachable!("some tiers not found??"); + } snapshot.levels = levels; (snapshot, files_to_remove) }