Merge pull request #1712 from tclinken/add-local-rk-to-status

Track the local ratekeeper rate in status
This commit is contained in:
A.J. Beamon 2019-07-15 15:17:11 -07:00 committed by GitHub
commit 2cd05e9ac9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 1 deletions

View File

@ -36,6 +36,7 @@
"roles":[ "roles":[
{ {
"query_queue_max":0, "query_queue_max":0,
"local_rate":0,
"input_bytes":{ "input_bytes":{
"hz":0.0, "hz":0.0,
"counter":0, "counter":0,

View File

@ -56,6 +56,7 @@ const KeyRef JSONSchemas::statusSchema = LiteralStringRef(R"statusSchema(
"roles":[ "roles":[
{ {
"query_queue_max":0, "query_queue_max":0,
"local_rate":0,
"input_bytes":{ "input_bytes":{
"hz":0.0, "hz":0.0,
"counter":0, "counter":0,

View File

@ -429,6 +429,7 @@ struct RolesInfo {
obj["keys_queried"] = StatusCounter(storageMetrics.getValue("RowsQueried")).getStatus(); obj["keys_queried"] = StatusCounter(storageMetrics.getValue("RowsQueried")).getStatus();
obj["mutation_bytes"] = StatusCounter(storageMetrics.getValue("MutationBytes")).getStatus(); obj["mutation_bytes"] = StatusCounter(storageMetrics.getValue("MutationBytes")).getStatus();
obj["mutations"] = StatusCounter(storageMetrics.getValue("Mutations")).getStatus(); obj["mutations"] = StatusCounter(storageMetrics.getValue("Mutations")).getStatus();
obj.setKeyRawNumber("local_rate", storageMetrics.getValue("LocalRate"));
Version version = storageMetrics.getInt64("Version"); Version version = storageMetrics.getInt64("Version");
Version durableVersion = storageMetrics.getInt64("DurableVersion"); Version durableVersion = storageMetrics.getInt64("DurableVersion");

View File

@ -472,6 +472,7 @@ public:
Counter updateBatches, updateVersions; Counter updateBatches, updateVersions;
Counter loops; Counter loops;
Counter fetchWaitingMS, fetchWaitingCount, fetchExecutingMS, fetchExecutingCount; Counter fetchWaitingMS, fetchWaitingCount, fetchExecutingMS, fetchExecutingCount;
Counter readsRejected;
LatencyBands readLatencyBands; LatencyBands readLatencyBands;
@ -500,6 +501,7 @@ public:
fetchWaitingCount("FetchWaitingCount", cc), fetchWaitingCount("FetchWaitingCount", cc),
fetchExecutingMS("FetchExecutingMS", cc), fetchExecutingMS("FetchExecutingMS", cc),
fetchExecutingCount("FetchExecutingCount", cc), fetchExecutingCount("FetchExecutingCount", cc),
readsRejected("ReadsRejected", cc),
readLatencyBands("ReadLatencyMetrics", self->thisServerID, SERVER_KNOBS->STORAGE_LOGGING_DELAY) readLatencyBands("ReadLatencyMetrics", self->thisServerID, SERVER_KNOBS->STORAGE_LOGGING_DELAY)
{ {
specialCounter(cc, "LastTLogVersion", [self](){ return self->lastTLogVersion; }); specialCounter(cc, "LastTLogVersion", [self](){ return self->lastTLogVersion; });
@ -508,7 +510,7 @@ public:
specialCounter(cc, "DurableVersion", [self](){ return self->durableVersion.get(); }); specialCounter(cc, "DurableVersion", [self](){ return self->durableVersion.get(); });
specialCounter(cc, "DesiredOldestVersion", [self](){ return self->desiredOldestVersion.get(); }); specialCounter(cc, "DesiredOldestVersion", [self](){ return self->desiredOldestVersion.get(); });
specialCounter(cc, "VersionLag", [self](){ return self->versionLag; }); specialCounter(cc, "VersionLag", [self](){ return self->versionLag; });
specialCounter(cc, "LocalRatekeeper", [self]{ return self->currentRate(); }); specialCounter(cc, "LocalRate", [self]{ return self->currentRate() * 100; });
specialCounter(cc, "FetchKeysFetchActive", [self](){ return self->fetchKeysParallelismLock.activePermits(); }); specialCounter(cc, "FetchKeysFetchActive", [self](){ return self->fetchKeysParallelismLock.activePermits(); });
specialCounter(cc, "FetchKeysWaiting", [self](){ return self->fetchKeysParallelismLock.waiters(); }); specialCounter(cc, "FetchKeysWaiting", [self](){ return self->fetchKeysParallelismLock.waiters(); });
@ -646,6 +648,7 @@ public:
if (rate < SERVER_KNOBS->STORAGE_DURABILITY_LAG_REJECT_THRESHOLD && deterministicRandom()->random01() > std::max(SERVER_KNOBS->STORAGE_DURABILITY_LAG_MIN_RATE, rate/SERVER_KNOBS->STORAGE_DURABILITY_LAG_REJECT_THRESHOLD)) { if (rate < SERVER_KNOBS->STORAGE_DURABILITY_LAG_REJECT_THRESHOLD && deterministicRandom()->random01() > std::max(SERVER_KNOBS->STORAGE_DURABILITY_LAG_MIN_RATE, rate/SERVER_KNOBS->STORAGE_DURABILITY_LAG_REJECT_THRESHOLD)) {
//request.error = future_version(); //request.error = future_version();
sendErrorWithPenalty(request.reply, server_overloaded(), getPenalty()); sendErrorWithPenalty(request.reply, server_overloaded(), getPenalty());
++counters.readsRejected;
return Void(); return Void();
} }
return fun(this, request); return fun(this, request);