From 315d8baac0295781bbfca223daefcc5705990a5d Mon Sep 17 00:00:00 2001 From: Bhaskar Bora Date: Wed, 18 Dec 2024 11:44:20 -0500 Subject: [PATCH] added a histogram plot for the bug hits --- src/llfs/committable_page_cache_job.cpp | 3 +-- src/llfs/volume.test.cpp | 27 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/llfs/committable_page_cache_job.cpp b/src/llfs/committable_page_cache_job.cpp index 788e9db..3cfa6d1 100644 --- a/src/llfs/committable_page_cache_job.cpp +++ b/src/llfs/committable_page_cache_job.cpp @@ -182,8 +182,7 @@ Status commit(std::unique_ptr job, const JobCommitParams& params, Status commit(CommittablePageCacheJob committable_job, const JobCommitParams& params, u64 callers, slot_offset_type prev_caller_slot, batt::Watch* durable_caller_slot) { - auto stat = committable_job.commit_impl(params, callers, prev_caller_slot, durable_caller_slot); - return stat; + return committable_job.commit_impl(params, callers, prev_caller_slot, durable_caller_slot); } //==#==========+==+=+=++=+++++++++++-+-+--+----- --- -- - - - - diff --git a/src/llfs/volume.test.cpp b/src/llfs/volume.test.cpp index aece135..ab80b5b 100644 --- a/src/llfs/volume.test.cpp +++ b/src/llfs/volume.test.cpp @@ -2137,6 +2137,22 @@ TEST_F(VolumeSimTest, DeadPageRefCountSimulation) } } +//==#==========+==+=+=++=+++++++++++-+-+--+----- --- -- - - - - +// +void display_histogram(u32 max_seeds, const std::vector& histogram) +{ + std::string hist_str; + usize current_seed = 0; + const usize div = max_seeds / histogram.size(); + + for (const auto entry : histogram) { + hist_str += std::to_string(current_seed) + ":" + std::to_string(entry) + " "; + current_seed += div; + } + + LOG(INFO) << "Histogram: " << hist_str; +} + //==#==========+==+=+=++=+++++++++++-+-+--+----- --- -- - - - - // TEST_F(VolumeSimTest, DeadPageRefCountVariantSimulation) @@ -2153,6 +2169,10 @@ TEST_F(VolumeSimTest, DeadPageRefCountVariantSimulation) std::uniform_int_distribution pick_value1{ranges[0].first, ranges[0].second}; std::uniform_int_distribution pick_value2{ranges[1].first, ranges[1].second}; usize yield_pre_halt = 0, yield_post_halt = 0; + std::vector histogram(10); + const usize div = max_seeds / histogram.size(); + + llfs::PageRecycler::metrics_export().page_id_deletion_reissue.set(0); for (u32 current_seed = 0; current_seed < max_seeds; ++current_seed) { LOG_EVERY_N(INFO, 100) << BATT_INSPECT(current_seed) << BATT_INSPECT(max_seeds); @@ -2160,13 +2180,20 @@ TEST_F(VolumeSimTest, DeadPageRefCountVariantSimulation) yield_pre_halt = (yield_pre_halt % 2) ? pick_value1(rng) : pick_value2(rng); yield_post_halt = (yield_post_halt % 2) ? pick_value1(rng) : pick_value2(rng); + usize last_value = llfs::PageRecycler::metrics_export().page_id_deletion_reissue; + ASSERT_NO_FATAL_FAILURE( this->run_dead_page_recovery_test_variant(current_seed, yield_pre_halt, yield_post_halt)); + + last_value = llfs::PageRecycler::metrics_export().page_id_deletion_reissue - last_value; + histogram[current_seed / div] += last_value; } LOG(INFO) << "Ran DeadPageRefCountVariant test for " << max_seeds << " iterations..." << BATT_INSPECT(llfs::PageRecycler::metrics_export().page_id_deletion_reissue); + display_histogram(max_seeds, histogram); + // We need to have atleast one iteration hitting the issue. // ASSERT_GE(llfs::PageRecycler::metrics_export().page_id_deletion_reissue, 0);