From 2b1fb5b01d48d0608125165c64fc4ec332810de6 Mon Sep 17 00:00:00 2001 From: Haobo Xu Date: Thu, 30 May 2013 22:57:22 -0700 Subject: [PATCH] [RocksDB] Add score column to leveldb.stats Summary: Added the 'score' column to the compaction stats output, which shows the level total size devided by level target size. Could be useful when monitoring compaction decisions... Test Plan: make check; db_bench Reviewers: dhruba CC: leveldb, MarkCallaghan Differential Revision: https://reviews.facebook.net/D11025 --- db/db_impl.cc | 8 +++++--- db/version_set.h | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/db/db_impl.cc b/db/db_impl.cc index 84bc1ed2f..fecbd83be 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -2388,8 +2388,8 @@ bool DBImpl::GetProperty(const Slice& property, std::string* value) { // Pardon the long line but I think it is easier to read this way. snprintf(buf, sizeof(buf), " Compactions\n" - "Level Files Size(MB) Time(sec) Read(MB) Write(MB) Rn(MB) Rnp1(MB) Wnew(MB) Amplify Read(MB/s) Write(MB/s) Rn Rnp1 Wnp1 NewW Count Ln-stall\n" - "----------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" + "Level Files Size(MB) Score Time(sec) Read(MB) Write(MB) Rn(MB) Rnp1(MB) Wnew(MB) Amplify Read(MB/s) Write(MB/s) Rn Rnp1 Wnp1 NewW Count Ln-stall\n" + "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" ); value->append(buf); for (int level = 0; level < NumberLevels(); level++) { @@ -2407,10 +2407,12 @@ bool DBImpl::GetProperty(const Slice& property, std::string* value) { total_bytes += bytes_read + stats_[level].bytes_written; snprintf( buf, sizeof(buf), - "%3d %8d %8.0f %9.0f %9.0f %9.0f %9.0f %9.0f %9.0f %7.1f %9.1f %11.1f %8d %8d %8d %8d %8d %9.1f\n", + "%3d %8d %8.0f %5.1f %9.0f %9.0f %9.0f %9.0f %9.0f %9.0f %7.1f %9.1f %11.1f %8d %8d %8d %8d %8d %9.1f\n", level, files, versions_->NumLevelBytes(level) / 1048576.0, + versions_->NumLevelBytes(level) / + versions_->MaxBytesForLevel(level), stats_[level].micros / 1e6, bytes_read / 1048576.0, stats_[level].bytes_written / 1048576.0, diff --git a/db/version_set.h b/db/version_set.h index e8a611384..c596a5857 100644 --- a/db/version_set.h +++ b/db/version_set.h @@ -381,6 +381,8 @@ class VersionSet { // Get the max file size in a given level. uint64_t MaxFileSizeForLevel(int level); + double MaxBytesForLevel(int level); + private: class Builder; struct ManifestWriter; @@ -410,8 +412,6 @@ class VersionSet { bool ManifestContains(const std::string& record) const; - double MaxBytesForLevel(int level); - int64_t ExpandedCompactionByteSizeLimit(int level); int64_t MaxGrandParentOverlapBytes(int level);