From 6db52b525ab57983d2791dfc8a73df24d3995770 Mon Sep 17 00:00:00 2001 From: Jim Paton Date: Mon, 29 Jul 2013 15:46:36 -0700 Subject: [PATCH] Don't use redundant Env::NowMicros() calls Summary: After my patch for stall histograms, there are redundant calls to NowMicros() by both the stop watches and DBImpl::MakeRoomForWrites. So I removed the redundant calls such that the information is gotten from the stopwatch. Test Plan: make clean make -j32 check Reviewers: dhruba, haobo, MarkCallaghan Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D11883 --- db/db_impl.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/db/db_impl.cc b/db/db_impl.cc index 4ba270e91..dbc6f71d3 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -2442,12 +2442,12 @@ Status DBImpl::MakeRoomForWrite(bool force) { // this delay hands over some CPU to the compaction thread in // case it is sharing the same core as the writer. mutex_.Unlock(); - uint64_t t1 = env_->NowMicros(); + uint64_t delayed; { StopWatch sw(env_, options_.statistics, STALL_L0_SLOWDOWN_COUNT); env_->SleepForMicroseconds(1000); + delayed = sw.ElapsedMicros(); } - uint64_t delayed = env_->NowMicros() - t1; RecordTick(options_.statistics, STALL_L0_SLOWDOWN_MICROS, delayed); stall_level0_slowdown_ += delayed; stall_level0_slowdown_count_++; @@ -2469,13 +2469,13 @@ Status DBImpl::MakeRoomForWrite(bool force) { // ones are still being compacted, so we wait. DelayLoggingAndReset(); Log(options_.info_log, "wait for memtable compaction...\n"); - uint64_t t1 = env_->NowMicros(); + uint64_t stall; { StopWatch sw(env_, options_.statistics, STALL_MEMTABLE_COMPACTION_COUNT); bg_cv_.Wait(); + stall = sw.ElapsedMicros(); } - const uint64_t stall = env_->NowMicros() -t1; RecordTick(options_.statistics, STALL_MEMTABLE_COMPACTION_MICROS, stall); stall_memtable_compaction_ += stall; stall_memtable_compaction_count_++; @@ -2483,13 +2483,13 @@ Status DBImpl::MakeRoomForWrite(bool force) { options_.level0_stop_writes_trigger) { // There are too many level-0 files. DelayLoggingAndReset(); - uint64_t t1 = env_->NowMicros(); Log(options_.info_log, "wait for fewer level0 files...\n"); + uint64_t stall; { StopWatch sw(env_, options_.statistics, STALL_L0_NUM_FILES_COUNT); bg_cv_.Wait(); + stall = sw.ElapsedMicros(); } - const uint64_t stall = env_->NowMicros() - t1; RecordTick(options_.statistics, STALL_L0_NUM_FILES_MICROS, stall); stall_level0_num_files_ += stall; stall_level0_num_files_count_++; @@ -2500,12 +2500,12 @@ Status DBImpl::MakeRoomForWrite(bool force) { // Delay a write when the compaction score for any level is too large. int max_level = versions_->MaxCompactionScoreLevel(); mutex_.Unlock(); - uint64_t t1 = env_->NowMicros(); + uint64_t delayed; { StopWatch sw(env_, options_.statistics, RATE_LIMIT_DELAY_COUNT); env_->SleepForMicroseconds(1000); + delayed = sw.ElapsedMicros(); } - uint64_t delayed = env_->NowMicros() - t1; stall_leveln_slowdown_[max_level] += delayed; stall_leveln_slowdown_count_[max_level]++; // Make sure the following value doesn't round to zero. -- GitLab