@@ -373,7 +373,7 @@ rocksdb::Options getOptions() {
373373 }
374374
375375 options.statistics = rocksdb::CreateDBStatistics ();
376- options.statistics ->set_stats_level (rocksdb::kExceptHistogramOrTimers );
376+ options.statistics ->set_stats_level (rocksdb::StatsLevel (SERVER_KNOBS-> ROCKSDB_STATS_LEVEL ) );
377377
378378 options.db_log_dir = SERVER_KNOBS->LOG_DIRECTORY ;
379379 return options;
@@ -477,10 +477,7 @@ class ReadIteratorPool {
477477 iteratorsMap.insert ({ readIteratorIndex, iter });
478478 mutex.unlock ();
479479 return iter;
480- } else if (SERVER_KNOBS->ROCKSDB_READ_RANGE_REUSE_BOUNDED_ITERATORS &&
481- iteratorsMap.size () < SERVER_KNOBS->ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT ) {
482- // Not storing more than ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT of iterators
483- // to avoid 'out of memory' issues.
480+ } else if (SERVER_KNOBS->ROCKSDB_READ_RANGE_REUSE_BOUNDED_ITERATORS ) {
484481 // TODO: Based on the datasize in the keyrange, decide whether to store the iterator for reuse.
485482 mutex.lock ();
486483 for (it = iteratorsMap.begin (); it != iteratorsMap.end (); it++) {
@@ -497,18 +494,13 @@ class ReadIteratorPool {
497494 mutex.unlock ();
498495
499496 ReadIterator iter (cf, readIteratorIndex, db, readRangeOptions, keyRange);
500- mutex.lock ();
501- iteratorsMap.insert ({ readIteratorIndex, iter });
502- mutex.unlock ();
503- return iter;
504- } else if (SERVER_KNOBS->ROCKSDB_READ_RANGE_REUSE_BOUNDED_ITERATORS ) {
505- // If the iterator size reaches the ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT.
506- mutex.lock ();
507- index++;
508- uint64_t readIteratorIndex = index;
509- mutex.unlock ();
510-
511- ReadIterator iter (cf, readIteratorIndex, db, readRangeOptions, keyRange);
497+ if (iteratorsMap.size () < SERVER_KNOBS->ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT ) {
498+ // Not storing more than ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT of iterators
499+ // to avoid 'out of memory' issues.
500+ mutex.lock ();
501+ iteratorsMap.insert ({ readIteratorIndex, iter });
502+ mutex.unlock ();
503+ }
512504 return iter;
513505 } else {
514506 index++;
@@ -899,14 +891,19 @@ ACTOR Future<Void> rocksDBMetricLogger(UID id,
899891 { " CountIterSkippedKeys" , rocksdb::NUMBER_ITER_SKIP, 0 },
900892 };
901893
894+ // To control the rocksdb::StatsLevel, use ROCKSDB_STATS_LEVEL knob.
902895 state std::vector<std::pair<const char *, uint32_t >> histogramStats = {
903- { " CompactionTime" , rocksdb::COMPACTION_TIME },
904- { " CompactionCPUTime" , rocksdb::COMPACTION_CPU_TIME },
905- { " CompressionTimeNanos" , rocksdb::COMPRESSION_TIMES_NANOS },
906- { " DecompressionTimeNanos" , rocksdb::DECOMPRESSION_TIMES_NANOS },
907- { " HardRateLimitDelayCount" , rocksdb::HARD_RATE_LIMIT_DELAY_COUNT },
908- { " SoftRateLimitDelayCount" , rocksdb::SOFT_RATE_LIMIT_DELAY_COUNT },
909- { " WriteStall" , rocksdb::WRITE_STALL },
896+ { " CompactionTime" , rocksdb::COMPACTION_TIME }, // enabled if rocksdb::StatsLevel > kExceptTimers(2)
897+ { " CompactionCPUTime" , rocksdb::COMPACTION_CPU_TIME }, // enabled if rocksdb::StatsLevel > kExceptTimers(2)
898+ { " CompressionTimeNanos" ,
899+ rocksdb::COMPRESSION_TIMES_NANOS }, // enabled if rocksdb::StatsLevel > kExceptDetailedTimers(3)
900+ { " DecompressionTimeNanos" ,
901+ rocksdb::DECOMPRESSION_TIMES_NANOS }, // enabled if rocksdb::StatsLevel > kExceptDetailedTimers(3)
902+ { " HardRateLimitDelayCount" ,
903+ rocksdb::HARD_RATE_LIMIT_DELAY_COUNT }, // enabled if rocksdb::StatsLevel > kExceptHistogramOrTimers(1)
904+ { " SoftRateLimitDelayCount" ,
905+ rocksdb::SOFT_RATE_LIMIT_DELAY_COUNT }, // enabled if rocksdb::StatsLevel > kExceptHistogramOrTimers(1)
906+ { " WriteStall" , rocksdb::WRITE_STALL }, // enabled if rocksdb::StatsLevel > kExceptHistogramOrTimers(1)
910907 };
911908 state std::vector<std::pair<const char *, std::string>> intPropertyStats = {
912909 { " NumImmutableMemtables" , rocksdb::DB::Properties::kNumImmutableMemTable },
@@ -959,11 +956,14 @@ ACTOR Future<Void> rocksDBMetricLogger(UID id,
959956 cum = stat;
960957 }
961958
962- for (auto & [name, histogram] : histogramStats) {
963- rocksdb::HistogramData histogram_data;
964- statistics->histogramData (histogram, &histogram_data);
965- e.detail (format (" %s%d" , name, " P95" ), histogram_data.percentile95 );
966- e.detail (format (" %s%d" , name, " P99" ), histogram_data.percentile99 );
959+ // None of the histogramStats are enabled unless the ROCKSDB_STATS_LEVEL > kExceptHistogramOrTimers(1)
960+ if (SERVER_KNOBS->ROCKSDB_STATS_LEVEL > rocksdb::kExceptHistogramOrTimers ) {
961+ for (auto & [name, histogram] : histogramStats) {
962+ rocksdb::HistogramData histogram_data;
963+ statistics->histogramData (histogram, &histogram_data);
964+ e.detail (format (" %s%s" , name, " P95" ), histogram_data.percentile95 );
965+ e.detail (format (" %s%s" , name, " P99" ), histogram_data.percentile99 );
966+ }
967967 }
968968
969969 for (const auto & [name, property] : intPropertyStats) {
0 commit comments