From a543773bbc9f6cc6be500477da312b48eb6b4e07 Mon Sep 17 00:00:00 2001 From: Guido Tagliavini Ponce Date: Fri, 15 Jul 2022 09:33:32 -0700 Subject: [PATCH] Add lean option to cache_bench (#10363) Summary: Sometimes we may not want to include extra computation in our cache_bench experiments. Here we add a flag to avoid any extra work. We also moved the timer start after the key generation. Pull Request resolved: https://github.com/facebook/rocksdb/pull/10363 Test Plan: Run cache_bench with and without the new flag and check that the appropriate code is being executed. Reviewed By: pdillinger Differential Revision: D37870416 Pulled By: guidotag fbshipit-source-id: f853207b6643b9328e774251c3f679b1fd78a11a --- cache/cache_bench_tool.cc | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/cache/cache_bench_tool.cc b/cache/cache_bench_tool.cc index 61818cb34de..2fc5ed34b8b 100644 --- a/cache/cache_bench_tool.cc +++ b/cache/cache_bench_tool.cc @@ -74,6 +74,11 @@ DEFINE_uint32( DEFINE_uint32(gather_stats_entries_per_lock, 256, "For Cache::ApplyToAllEntries"); DEFINE_bool(skewed, false, "If true, skew the key access distribution"); + +DEFINE_bool(lean, false, + "If true, no additional computation is performed besides cache " + "operations."); + #ifndef ROCKSDB_LITE DEFINE_string(secondary_cache_uri, "", "Full URI for creating a custom secondary cache object"); @@ -522,7 +527,6 @@ class CacheBench { StopWatchNano timer(clock); for (uint64_t i = 0; i < FLAGS_ops_per_thread; i++) { - timer.Start(); Slice key = gen.GetRand(thread->rnd, max_key_, max_log_); uint64_t random_op = thread->rnd.Next(); Cache::CreateCallback create_cb = [](const void* buf, size_t size, @@ -534,6 +538,8 @@ class CacheBench { return Status::OK(); }; + timer.Start(); + if (random_op < lookup_insert_threshold_) { if (handle) { cache_->Release(handle); @@ -543,9 +549,11 @@ class CacheBench { handle = cache_->Lookup(key, &helper2, create_cb, Cache::Priority::LOW, true); if (handle) { - // do something with the data - result += NPHash64(static_cast(cache_->Value(handle)), - FLAGS_value_bytes); + if (!FLAGS_lean) { + // do something with the data + result += NPHash64(static_cast(cache_->Value(handle)), + FLAGS_value_bytes); + } } else { // do insert Status s = cache_->Insert(key, createValue(thread->rnd), &helper2, @@ -570,9 +578,11 @@ class CacheBench { handle = cache_->Lookup(key, &helper2, create_cb, Cache::Priority::LOW, true); if (handle) { - // do something with the data - result += NPHash64(static_cast(cache_->Value(handle)), - FLAGS_value_bytes); + if (!FLAGS_lean) { + // do something with the data + result += NPHash64(static_cast(cache_->Value(handle)), + FLAGS_value_bytes); + } } } else if (random_op < erase_threshold_) { // do erase