From eba77d78f47a0f74eae4e42d901241acd83713d8 Mon Sep 17 00:00:00 2001 From: Jingyu Zhou Date: Mon, 8 Aug 2022 14:30:16 -0700 Subject: [PATCH] Add knobs for min/max Ratekeeper limit The default has no effects. --- fdbclient/ServerKnobs.cpp | 4 +++- fdbclient/include/fdbclient/ServerKnobs.h | 2 ++ fdbserver/Ratekeeper.actor.cpp | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fdbclient/ServerKnobs.cpp b/fdbclient/ServerKnobs.cpp index b64807fa55..99fe446562 100644 --- a/fdbclient/ServerKnobs.cpp +++ b/fdbclient/ServerKnobs.cpp @@ -611,9 +611,11 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi init( SLOW_SMOOTHING_AMOUNT, 10.0 ); if( slowRatekeeper ) SLOW_SMOOTHING_AMOUNT = 50.0; init( METRIC_UPDATE_RATE, .1 ); if( slowRatekeeper ) METRIC_UPDATE_RATE = 0.5; init( DETAILED_METRIC_UPDATE_RATE, 5.0 ); - init (RATEKEEPER_DEFAULT_LIMIT, 1e6 ); if( randomize && BUGGIFY ) RATEKEEPER_DEFAULT_LIMIT = 0; + init( RATEKEEPER_DEFAULT_LIMIT, 1e6 ); if( randomize && BUGGIFY ) RATEKEEPER_DEFAULT_LIMIT = 0; init( RATEKEEPER_LIMIT_REASON_SAMPLE_RATE, 0.1 ); init( RATEKEEPER_PRINT_LIMIT_REASON, false ); if( randomize && BUGGIFY ) RATEKEEPER_PRINT_LIMIT_REASON = true; + init( RATEKEEPER_MIN_RATE, 0.0 ); + init( RATEKEEPER_MAX_RATE, 1e9 ); bool smallStorageTarget = randomize && BUGGIFY; init( TARGET_BYTES_PER_STORAGE_SERVER, 1000e6 ); if( smallStorageTarget ) TARGET_BYTES_PER_STORAGE_SERVER = 3000e3; diff --git a/fdbclient/include/fdbclient/ServerKnobs.h b/fdbclient/include/fdbclient/ServerKnobs.h index 552491d988..1f42a5d6b8 100644 --- a/fdbclient/include/fdbclient/ServerKnobs.h +++ b/fdbclient/include/fdbclient/ServerKnobs.h @@ -550,6 +550,8 @@ public: double RATEKEEPER_DEFAULT_LIMIT; double RATEKEEPER_LIMIT_REASON_SAMPLE_RATE; bool RATEKEEPER_PRINT_LIMIT_REASON; + double RATEKEEPER_MIN_RATE; + double RATEKEEPER_MAX_RATE; int64_t TARGET_BYTES_PER_STORAGE_SERVER; int64_t SPRING_BYTES_STORAGE_SERVER; diff --git a/fdbserver/Ratekeeper.actor.cpp b/fdbserver/Ratekeeper.actor.cpp index 13a7f61ae3..cade67f945 100644 --- a/fdbserver/Ratekeeper.actor.cpp +++ b/fdbserver/Ratekeeper.actor.cpp @@ -19,6 +19,7 @@ */ #include "fdbserver/DataDistribution.actor.h" +#include "fdbserver/Knobs.h" #include "fdbserver/Ratekeeper.h" #include "fdbserver/TagThrottler.h" #include "fdbserver/WaitFailure.h" @@ -912,6 +913,11 @@ void Ratekeeper::updateRate(RatekeeperLimits* limits) { limits->tpsLimitMetric = std::min(limits->tpsLimit, 1e6); limits->reasonMetric = limitReason; + if (limits->priority == TransactionPriority::DEFAULT) { + limits->tpsLimit = std::max(limits->tpsLimit, SERVER_KNOBS->RATEKEEPER_MIN_RATE); + limits->tpsLimit = std::min(limits->tpsLimit, SERVER_KNOBS->RATEKEEPER_MAX_RATE); + } + if (deterministicRandom()->random01() < 0.1) { const std::string& name = limits->rkUpdateEventCacheHolder.getPtr()->trackingKey; TraceEvent(name.c_str(), id)