Add estimated compute duration
This commit is contained in:
parent
f13a8df5d9
commit
802c45f843
|
@ -685,6 +685,11 @@ bool canReject(const std::vector<CommitTransactionRequest>& trs) {
|
|||
return true;
|
||||
}
|
||||
|
||||
double computeReleaseDelay(CommitBatchContext* self, double latencyBucket) {
|
||||
return std::min(SERVER_KNOBS->MAX_PROXY_COMPUTE,
|
||||
self->batchOperations * self->pProxyCommitData->commitComputePerOperation[latencyBucket]);
|
||||
}
|
||||
|
||||
ACTOR Future<Void> preresolutionProcessing(CommitBatchContext* self) {
|
||||
|
||||
state ProxyCommitData* const pProxyCommitData = self->pProxyCommitData;
|
||||
|
@ -737,10 +742,7 @@ ACTOR Future<Void> preresolutionProcessing(CommitBatchContext* self) {
|
|||
return Void();
|
||||
}
|
||||
|
||||
self->releaseDelay =
|
||||
delay(std::min(SERVER_KNOBS->MAX_PROXY_COMPUTE,
|
||||
self->batchOperations * pProxyCommitData->commitComputePerOperation[latencyBucket]),
|
||||
TaskPriority::ProxyMasterVersionReply);
|
||||
self->releaseDelay = delay(computeReleaseDelay(self, latencyBucket), TaskPriority::ProxyMasterVersionReply);
|
||||
|
||||
if (debugID.present()) {
|
||||
g_traceBatch.addEvent(
|
||||
|
@ -1388,6 +1390,22 @@ ACTOR Future<Void> postResolution(CommitBatchContext* self) {
|
|||
if (self->batchOperations > 0) {
|
||||
double computePerOperation =
|
||||
std::min(SERVER_KNOBS->MAX_COMPUTE_PER_OPERATION, self->computeDuration / self->batchOperations);
|
||||
|
||||
double estimatedDelay = computeReleaseDelay(self, self->latencyBucket);
|
||||
if (estimatedDelay >= SERVER_KNOBS->MAX_COMPUTE_DURATION_LOG_CUTOFF ||
|
||||
self->computeDuration >= SERVER_KNOBS->MAX_COMPUTE_DURATION_LOG_CUTOFF) {
|
||||
TraceEvent(SevInfo, "LongComputeDuration")
|
||||
.suppressFor(5.0)
|
||||
.detail("EstimatedComputeDuration", estimatedDelay)
|
||||
.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);
|
||||
}
|
||||
|
||||
if (computePerOperation <= pProxyCommitData->commitComputePerOperation[self->latencyBucket]) {
|
||||
pProxyCommitData->commitComputePerOperation[self->latencyBucket] = computePerOperation;
|
||||
} else {
|
||||
|
@ -1402,18 +1420,6 @@ ACTOR Future<Void> postResolution(CommitBatchContext* self) {
|
|||
pProxyCommitData->stats.minComputeNS =
|
||||
std::min<int64_t>(pProxyCommitData->stats.minComputeNS,
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue