Fix write metrics for interleaved implementation
This commit is contained in:
@@ -4099,6 +4099,7 @@ struct Context {
|
|||||||
Node *root;
|
Node *root;
|
||||||
InternalVersionT writeVersion;
|
InternalVersionT writeVersion;
|
||||||
Result *results;
|
Result *results;
|
||||||
|
int64_t iterations = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
PRESERVE_NONE void keepGoing(Job *job, Context *context) {
|
PRESERVE_NONE void keepGoing(Job *job, Context *context) {
|
||||||
@@ -4142,6 +4143,7 @@ template <class NodeT> void iter(Job *job, Context *context) {
|
|||||||
context->results[job->index] = {job->n, job->remaining};
|
context->results[job->index] = {job->n, job->remaining};
|
||||||
MUSTTAIL return complete(job, context);
|
MUSTTAIL return complete(job, context);
|
||||||
}
|
}
|
||||||
|
++context->iterations;
|
||||||
job->continuation = iterTable[child->getType()];
|
job->continuation = iterTable[child->getType()];
|
||||||
__builtin_prefetch(job->n);
|
__builtin_prefetch(job->n);
|
||||||
MUSTTAIL return keepGoing(job, context);
|
MUSTTAIL return keepGoing(job, context);
|
||||||
@@ -4731,6 +4733,8 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
|||||||
// are done
|
// are done
|
||||||
inProgress->continuation(inProgress, &context);
|
inProgress->continuation(inProgress, &context);
|
||||||
|
|
||||||
|
writeContext.accum.insert_iterations += context.iterations;
|
||||||
|
|
||||||
// Phase 2: Perform insertions. Nodes may be upsized during this phase, but
|
// Phase 2: Perform insertions. Nodes may be upsized during this phase, but
|
||||||
// old nodes get forwarding pointers installed and are released after
|
// old nodes get forwarding pointers installed and are released after
|
||||||
// phase 2.
|
// phase 2.
|
||||||
@@ -4791,6 +4795,11 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < count; ++i) {
|
||||||
|
const auto &w = writes[i];
|
||||||
|
writeContext.accum.write_bytes += w.begin.len + w.end.len;
|
||||||
|
}
|
||||||
|
|
||||||
#if __has_attribute(preserve_none) && __has_attribute(musttail)
|
#if __has_attribute(preserve_none) && __has_attribute(musttail)
|
||||||
bool allPointWrites = true;
|
bool allPointWrites = true;
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
@@ -4807,7 +4816,6 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
|||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
const auto &w = writes[i];
|
const auto &w = writes[i];
|
||||||
writeContext.accum.write_bytes += w.begin.len + w.end.len;
|
|
||||||
auto begin = std::span<const uint8_t>(w.begin.p, w.begin.len);
|
auto begin = std::span<const uint8_t>(w.begin.p, w.begin.len);
|
||||||
auto end = std::span<const uint8_t>(w.end.p, w.end.len);
|
auto end = std::span<const uint8_t>(w.end.p, w.end.len);
|
||||||
if (w.end.len > 0) {
|
if (w.end.len > 0) {
|
||||||
|
Reference in New Issue
Block a user