mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-21 22:33:17 +08:00
Add logging measuring commit compute duration
This commit is contained in:
parent
02fc80f12e
commit
f13a8df5d9
@ -450,6 +450,7 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi
|
|||||||
init( MAX_COMMIT_UPDATES, 2000 ); if( randomize && BUGGIFY ) MAX_COMMIT_UPDATES = 1;
|
init( MAX_COMMIT_UPDATES, 2000 ); if( randomize && BUGGIFY ) MAX_COMMIT_UPDATES = 1;
|
||||||
init( MAX_PROXY_COMPUTE, 2.0 );
|
init( MAX_PROXY_COMPUTE, 2.0 );
|
||||||
init( MAX_COMPUTE_PER_OPERATION, 0.1 );
|
init( MAX_COMPUTE_PER_OPERATION, 0.1 );
|
||||||
|
init( MAX_COMPUTE_DURATION_LOG_CUTOFF, 0.15 );
|
||||||
init( PROXY_COMPUTE_BUCKETS, 20000 );
|
init( PROXY_COMPUTE_BUCKETS, 20000 );
|
||||||
init( PROXY_COMPUTE_GROWTH_RATE, 0.01 );
|
init( PROXY_COMPUTE_GROWTH_RATE, 0.01 );
|
||||||
init( TXN_STATE_SEND_AMOUNT, 4 );
|
init( TXN_STATE_SEND_AMOUNT, 4 );
|
||||||
|
@ -374,6 +374,7 @@ public:
|
|||||||
int MAX_COMMIT_UPDATES;
|
int MAX_COMMIT_UPDATES;
|
||||||
double MAX_PROXY_COMPUTE;
|
double MAX_PROXY_COMPUTE;
|
||||||
double MAX_COMPUTE_PER_OPERATION;
|
double MAX_COMPUTE_PER_OPERATION;
|
||||||
|
double MAX_COMPUTE_DURATION_LOG_CUTOFF;
|
||||||
int PROXY_COMPUTE_BUCKETS;
|
int PROXY_COMPUTE_BUCKETS;
|
||||||
double PROXY_COMPUTE_GROWTH_RATE;
|
double PROXY_COMPUTE_GROWTH_RATE;
|
||||||
int TXN_STATE_SEND_AMOUNT;
|
int TXN_STATE_SEND_AMOUNT;
|
||||||
|
@ -708,6 +708,7 @@ ACTOR Future<Void> preresolutionProcessing(CommitBatchContext* self) {
|
|||||||
// Pre-resolution the commits
|
// Pre-resolution the commits
|
||||||
TEST(pProxyCommitData->latestLocalCommitBatchResolving.get() < localBatchNumber - 1); // Wait for local batch
|
TEST(pProxyCommitData->latestLocalCommitBatchResolving.get() < localBatchNumber - 1); // Wait for local batch
|
||||||
wait(pProxyCommitData->latestLocalCommitBatchResolving.whenAtLeast(localBatchNumber - 1));
|
wait(pProxyCommitData->latestLocalCommitBatchResolving.whenAtLeast(localBatchNumber - 1));
|
||||||
|
pProxyCommitData->stats.computeLatency.addMeasurement(now() - timeStart);
|
||||||
double queuingDelay = g_network->now() - timeStart;
|
double queuingDelay = g_network->now() - timeStart;
|
||||||
pProxyCommitData->stats.commitBatchQueuingDist->sampleSeconds(queuingDelay);
|
pProxyCommitData->stats.commitBatchQueuingDist->sampleSeconds(queuingDelay);
|
||||||
if ((queuingDelay > (double)SERVER_KNOBS->MAX_READ_TRANSACTION_LIFE_VERSIONS / SERVER_KNOBS->VERSIONS_PER_SECOND ||
|
if ((queuingDelay > (double)SERVER_KNOBS->MAX_READ_TRANSACTION_LIFE_VERSIONS / SERVER_KNOBS->VERSIONS_PER_SECOND ||
|
||||||
@ -1401,6 +1402,18 @@ ACTOR Future<Void> postResolution(CommitBatchContext* self) {
|
|||||||
pProxyCommitData->stats.minComputeNS =
|
pProxyCommitData->stats.minComputeNS =
|
||||||
std::min<int64_t>(pProxyCommitData->stats.minComputeNS,
|
std::min<int64_t>(pProxyCommitData->stats.minComputeNS,
|
||||||
1e9 * pProxyCommitData->commitComputePerOperation[self->latencyBucket]);
|
1e9 * pProxyCommitData->commitComputePerOperation[self->latencyBucket]);
|
||||||
|
|
||||||
|
if (self->computeDuration >= SERVER_KNOBS->MAX_COMPUTE_DURATION_LOG_CUTOFF) {
|
||||||
|
TraceEvent(SevInfo, "LongComputeDuration")
|
||||||
|
.suppressFor(5.0)
|
||||||
|
.detail("ComputeDuration", self->computeDuration)
|
||||||
|
.detail("ComputePerOperation", computePerOperation)
|
||||||
|
.detail("LatencyBucket", self->latencyBucket)
|
||||||
|
.detail("UpdatedComputePerOperationEstimate",
|
||||||
|
pProxyCommitData->commitComputePerOperation[self->latencyBucket])
|
||||||
|
.detail("BatchBytes", self->batchBytes)
|
||||||
|
.detail("BatchOperations", self->batchOperations);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pProxyCommitData->stats.processingMutationDist->sampleSeconds(now() - postResolutionQueuing);
|
pProxyCommitData->stats.processingMutationDist->sampleSeconds(now() - postResolutionQueuing);
|
||||||
|
@ -73,6 +73,8 @@ struct ProxyStats {
|
|||||||
|
|
||||||
LatencySample commitBatchingWindowSize;
|
LatencySample commitBatchingWindowSize;
|
||||||
|
|
||||||
|
LatencySample computeLatency;
|
||||||
|
|
||||||
Future<Void> logger;
|
Future<Void> logger;
|
||||||
|
|
||||||
int64_t maxComputeNS;
|
int64_t maxComputeNS;
|
||||||
@ -126,6 +128,10 @@ struct ProxyStats {
|
|||||||
id,
|
id,
|
||||||
SERVER_KNOBS->LATENCY_METRICS_LOGGING_INTERVAL,
|
SERVER_KNOBS->LATENCY_METRICS_LOGGING_INTERVAL,
|
||||||
SERVER_KNOBS->LATENCY_SAMPLE_SIZE),
|
SERVER_KNOBS->LATENCY_SAMPLE_SIZE),
|
||||||
|
computeLatency("ComputeLatency",
|
||||||
|
id,
|
||||||
|
SERVER_KNOBS->LATENCY_METRICS_LOGGING_INTERVAL,
|
||||||
|
SERVER_KNOBS->LATENCY_SAMPLE_SIZE),
|
||||||
maxComputeNS(0), minComputeNS(1e12),
|
maxComputeNS(0), minComputeNS(1e12),
|
||||||
commitBatchQueuingDist(Histogram::getHistogram(LiteralStringRef("CommitProxy"),
|
commitBatchQueuingDist(Histogram::getHistogram(LiteralStringRef("CommitProxy"),
|
||||||
LiteralStringRef("CommitBatchQueuing"),
|
LiteralStringRef("CommitBatchQueuing"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user