From 3a6948c199313fa7e3e38d6ecbfb0366eb5194da Mon Sep 17 00:00:00 2001 From: Xiaoge Su <magichp@gmail.com> Date: Thu, 12 Nov 2020 17:03:41 -0800 Subject: [PATCH] Report histogram periodically --- fdbserver/Knobs.cpp | 1 + fdbserver/Knobs.h | 1 + fdbserver/fdbserver.actor.cpp | 12 ++++++++++++ flow/SystemMonitor.cpp | 1 - 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/fdbserver/Knobs.cpp b/fdbserver/Knobs.cpp index f0225e6f08..8431be5149 100644 --- a/fdbserver/Knobs.cpp +++ b/fdbserver/Knobs.cpp @@ -540,6 +540,7 @@ ServerKnobs::ServerKnobs(bool randomize, ClientKnobs* clientKnobs, bool isSimula init( MAX_STATUS_REQUESTS_PER_SECOND, 256.0 ); init( CONFIGURATION_ROWS_TO_FETCH, 20000 ); init( DISABLE_DUPLICATE_LOG_WARNING, false ); + init( HISTOGRAM_REPORT_INTERVAL, 300.0 ); // IPager init( PAGER_RESERVED_PAGES, 1 ); diff --git a/fdbserver/Knobs.h b/fdbserver/Knobs.h index 87bedc51e0..0a5168397d 100644 --- a/fdbserver/Knobs.h +++ b/fdbserver/Knobs.h @@ -483,6 +483,7 @@ public: double MAX_STATUS_REQUESTS_PER_SECOND; int CONFIGURATION_ROWS_TO_FETCH; bool DISABLE_DUPLICATE_LOG_WARNING; + double HISTOGRAM_REPORT_INTERVAL; // IPager int PAGER_RESERVED_PAGES; diff --git a/fdbserver/fdbserver.actor.cpp b/fdbserver/fdbserver.actor.cpp index 94eb58e9dd..ef8c6f727c 100644 --- a/fdbserver/fdbserver.actor.cpp +++ b/fdbserver/fdbserver.actor.cpp @@ -373,6 +373,14 @@ void failAfter( Future<Void> trigger, Endpoint e ) { failAfter( trigger, g_simulator.getProcess( e ) ); } +ACTOR Future<Void> histogramReport() { + loop { + wait(delay(SERVER_KNOBS->HISTOGRAM_REPORT_INTERVAL)); + + GetHistogramRegistry().logReport(); + } +} + void testSerializationSpeed() { double tstart; double build = 0, serialize = 0, deserialize = 0, copy = 0, deallocate = 0; @@ -1658,6 +1666,8 @@ int main(int argc, char* argv[]) { if (role == Simulation) { TraceEvent("Simulation").detail("TestFile", testFile); + auto histogramReportActor = histogramReport(); + clientKnobs->trace(); flowKnobs->trace(); serverKnobs->trace(); @@ -1786,6 +1796,8 @@ int main(int argc, char* argv[]) { if (!dataFolder.size()) dataFolder = format("fdb/%d/", publicAddresses.address.port); // SOMEDAY: Better default + auto histogramReportActor = histogramReport(); + vector<Future<Void>> actors(listenErrors.begin(), listenErrors.end()); actors.push_back( fdbd(connectionFile, localities, processClass, dataFolder, dataFolder, storageMemLimit, metricsConnFile, metricsPrefix, rsssize, whitelistBinPaths) ); //actors.push_back( recurring( []{}, .001 ) ); // for ASIO latency measurement diff --git a/flow/SystemMonitor.cpp b/flow/SystemMonitor.cpp index a69662442a..f996d2cd5c 100644 --- a/flow/SystemMonitor.cpp +++ b/flow/SystemMonitor.cpp @@ -60,7 +60,6 @@ SystemStatistics customSystemMonitor(std::string eventName, StatisticsState *sta netData.init(); if (!DEBUG_DETERMINISM && currentStats.initialized) { { - GetHistogramRegistry().logReport(); TraceEvent(eventName.c_str()) .detail("Elapsed", currentStats.elapsed) .detail("CPUSeconds", currentStats.processCPUSeconds)