From 065766b8d21ffee012cf7dd2c25404057449a54e Mon Sep 17 00:00:00 2001 From: Lei Jin Date: Wed, 29 Oct 2014 17:02:21 -0700 Subject: [PATCH] DynamicCompactionOptions: relax the check bound a little Summary: Increase the level size so that impact of a single file is smaller. Also relax the bound Test Plan: ran locally Reviewers: sdong, igor Reviewed By: igor Subscribers: dhruba, leveldb Differential Revision: https://reviews.facebook.net/D27939 --- db/db_test.cc | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/db/db_test.cc b/db/db_test.cc index b79758b0d..477c6c812 100644 --- a/db/db_test.cc +++ b/db/db_test.cc @@ -8638,7 +8638,7 @@ TEST(DBTest, DynamicMemtableOptions) { while (Put(Key(count), RandomString(&rnd, 1024), wo).ok() && count < 256) { count++; } - ASSERT_TRUE(count > (128 * 0.9) && count < (128 * 1.1)); + ASSERT_TRUE(count > (128 * 0.8) && count < (128 * 1.2)); sleeping_task_low1.WakeUp(); sleeping_task_low1.WaitUntilDone(); @@ -8657,7 +8657,7 @@ TEST(DBTest, DynamicMemtableOptions) { while (Put(Key(count), RandomString(&rnd, 1024), wo).ok() && count < 1024) { count++; } - ASSERT_TRUE(count > (512 * 0.9) && count < (512 * 1.1)); + ASSERT_TRUE(count > (512 * 0.8) && count < (512 * 1.2)); sleeping_task_low2.WakeUp(); sleeping_task_low2.WaitUntilDone(); @@ -8675,7 +8675,7 @@ TEST(DBTest, DynamicMemtableOptions) { while (Put(Key(count), RandomString(&rnd, 1024), wo).ok() && count < 1024) { count++; } - ASSERT_TRUE(count > (256 * 0.9) && count < (256 * 1.1)); + ASSERT_TRUE(count > (256 * 0.8) && count < (256 * 1.2)); sleeping_task_low3.WakeUp(); sleeping_task_low3.WaitUntilDone(); } @@ -8685,7 +8685,7 @@ TEST(DBTest, DynamicCompactionOptions) { const uint64_t k32KB = 1 << 15; const uint64_t k64KB = 1 << 16; const uint64_t k128KB = 1 << 17; - const uint64_t k256KB = 1 << 18; + const uint64_t k1MB = 1 << 20; const uint64_t k4KB = 1 << 12; Options options; options.env = env_; @@ -8763,19 +8763,19 @@ TEST(DBTest, DynamicCompactionOptions) { // fill L1 and L2. L1 size should be around 256KB while L2 size should be // around 256KB x 4. ASSERT_TRUE(dbfull()->SetOptions({ - {"max_bytes_for_level_base", std::to_string(k256KB) } + {"max_bytes_for_level_base", std::to_string(k1MB) } })); - // writing 24 x 64KB => 6 * 256KB - // (L1 + L2) = (1 + 4) * 256KB - for (int i = 0; i < 24; ++i) { - gen_l0_kb(i, 64, 32); + // writing 96 x 64KB => 6 * 1024KB + // (L1 + L2) = (1 + 4) * 1024KB + for (int i = 0; i < 96; ++i) { + gen_l0_kb(i, 64, 96); } dbfull()->TEST_WaitForCompact(); - ASSERT_TRUE(SizeAtLevel(1) > k256KB * 0.8 && - SizeAtLevel(1) < k256KB * 1.2); - ASSERT_TRUE(SizeAtLevel(2) > 4 * k256KB * 0.8 && - SizeAtLevel(2) < 4 * k256KB * 1.2); + ASSERT_TRUE(SizeAtLevel(1) > k1MB * 0.5 && + SizeAtLevel(1) < k1MB * 1.5); + ASSERT_TRUE(SizeAtLevel(2) > 4 * k1MB * 0.5 && + SizeAtLevel(2) < 4 * k1MB * 1.5); // Test max_bytes_for_level_multiplier and // max_bytes_for_level_base. Now, reduce both mulitplier and level base, @@ -8792,9 +8792,9 @@ TEST(DBTest, DynamicCompactionOptions) { gen_l0_kb(i, 64, 32); } dbfull()->TEST_WaitForCompact(); - ASSERT_TRUE(SizeAtLevel(1) < k128KB * 1.2); - ASSERT_TRUE(SizeAtLevel(2) < 2 * k128KB * 1.2); - ASSERT_TRUE(SizeAtLevel(3) < 4 * k128KB * 1.2); + uint64_t total_size = + SizeAtLevel(1) + SizeAtLevel(2) + SizeAtLevel(3); + ASSERT_TRUE(total_size < k128KB * 7 * 1.5); // Test level0_stop_writes_trigger. // Clean up memtable and L0. Block compaction threads. If continue to write @@ -8883,7 +8883,7 @@ TEST(DBTest, DynamicCompactionOptions) { // L1 - L3. Then thrink max_bytes_for_level_base and disable auto compaction // at the same time, we should see some level with score greater than 2. ASSERT_TRUE(dbfull()->SetOptions({ - {"max_bytes_for_level_base", std::to_string(k256KB) } + {"max_bytes_for_level_base", std::to_string(k1MB) } })); // writing 40 x 64KB = 10 x 256KB // (L1 + L2 + L3) = (1 + 2 + 4) * 256KB @@ -8891,12 +8891,12 @@ TEST(DBTest, DynamicCompactionOptions) { gen_l0_kb(i, 64, 32); } dbfull()->TEST_WaitForCompact(); - ASSERT_TRUE(SizeAtLevel(1) > k256KB * 0.8 && - SizeAtLevel(1) < k256KB * 1.2); - ASSERT_TRUE(SizeAtLevel(2) > 2 * k256KB * 0.8 && - SizeAtLevel(2) < 2 * k256KB * 1.2); - ASSERT_TRUE(SizeAtLevel(3) > 4 * k256KB * 0.8 && - SizeAtLevel(3) < 4 * k256KB * 1.2); + ASSERT_TRUE((SizeAtLevel(1) > k1MB * 0.8 && + SizeAtLevel(1) < k1MB * 1.2) || + (SizeAtLevel(2) > 2 * k1MB * 0.8 && + SizeAtLevel(2) < 2 * k1MB * 1.2) || + (SizeAtLevel(3) > 4 * k1MB * 0.8 && + SizeAtLevel(3) < 4 * k1MB * 1.2)); // Reduce max_bytes_for_level_base and disable compaction at the same time // This should cause score to increase ASSERT_TRUE(dbfull()->SetOptions({