diff --git a/db/compaction/compaction_job.cc b/db/compaction/compaction_job.cc index 524968b168d2d194dd0fd3d9d07ea8cd0deadb18..23b1c60d09bb3c3491363ea29e430e7330113a47 100644 --- a/db/compaction/compaction_job.cc +++ b/db/compaction/compaction_job.cc @@ -1315,7 +1315,7 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) { } #endif // !ROCKSDB_LITE - uint64_t prev_cpu_micros = db_options_.clock->CPUNanos() / 1000; + uint64_t prev_cpu_micros = db_options_.clock->CPUMicros(); ColumnFamilyData* cfd = sub_compact->compaction->column_family_data(); @@ -1669,7 +1669,7 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) { } sub_compact->compaction_job_stats.cpu_micros = - db_options_.clock->CPUNanos() / 1000 - prev_cpu_micros; + db_options_.clock->CPUMicros() - prev_cpu_micros; if (measure_io_stats_) { sub_compact->compaction_job_stats.file_write_nanos += diff --git a/db/flush_job.cc b/db/flush_job.cc index 8f916035439bafcdd6bb3db967668b4b15e55fc3..d81ddb03ade977461eceaea923dacc2971718525 100644 --- a/db/flush_job.cc +++ b/db/flush_job.cc @@ -361,7 +361,7 @@ Status FlushJob::MemPurge() { // Measure purging time. const uint64_t start_micros = clock_->NowMicros(); - const uint64_t start_cpu_micros = clock_->CPUNanos() / 1000; + const uint64_t start_cpu_micros = clock_->CPUMicros(); MemTable* new_mem = nullptr; // For performance/log investigation purposes: @@ -614,7 +614,7 @@ Status FlushJob::MemPurge() { TEST_SYNC_POINT("DBImpl::FlushJob:MemPurgeUnsuccessful"); } const uint64_t micros = clock_->NowMicros() - start_micros; - const uint64_t cpu_micros = clock_->CPUNanos() / 1000 - start_cpu_micros; + const uint64_t cpu_micros = clock_->CPUMicros() - start_cpu_micros; ROCKS_LOG_INFO(db_options_.info_log, "[%s] [JOB %d] Mempurge lasted %" PRIu64 " microseconds, and %" PRIu64 @@ -800,7 +800,7 @@ Status FlushJob::WriteLevel0Table() { ThreadStatus::STAGE_FLUSH_WRITE_L0); db_mutex_->AssertHeld(); const uint64_t start_micros = clock_->NowMicros(); - const uint64_t start_cpu_micros = clock_->CPUNanos() / 1000; + const uint64_t start_cpu_micros = clock_->CPUMicros(); Status s; std::vector blob_file_additions; @@ -993,7 +993,7 @@ Status FlushJob::WriteLevel0Table() { // Note that here we treat flush as level 0 compaction in internal stats InternalStats::CompactionStats stats(CompactionReason::kFlush, 1); const uint64_t micros = clock_->NowMicros() - start_micros; - const uint64_t cpu_micros = clock_->CPUNanos() / 1000 - start_cpu_micros; + const uint64_t cpu_micros = clock_->CPUMicros() - start_cpu_micros; stats.micros = micros; stats.cpu_micros = cpu_micros; diff --git a/env/env_posix.cc b/env/env_posix.cc index ca54b01cad05550522fab0352d460e0f6ddd0560..609d169f2e3e49b2199fcb1e095fdcdfe239b9e9 100644 --- a/env/env_posix.cc +++ b/env/env_posix.cc @@ -166,7 +166,7 @@ class PosixClock : public SystemClock { defined(OS_AIX) || (defined(__MACH__) && defined(__MAC_10_12)) struct timespec ts; clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts); - return static_cast(ts.tv_sec) * 1000000000; + return (static_cast(ts.tv_sec) * 1000000000 + ts.tv_nsec) / 1000; #endif return 0; }