summaryrefslogtreecommitdiff
path: root/src/mongo/db/stats/resource_consumption_metrics.cpp
diff options
context:
space:
mode:
authorLouis Williams <louis.williams@mongodb.com>2020-12-07 14:56:57 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-12-08 01:43:05 +0000
commit58febe4996944263d331c3f8deb8cefd10ace9a6 (patch)
tree079f31c9e8a81b97dd7702b4a974ba4155ee5682 /src/mongo/db/stats/resource_consumption_metrics.cpp
parentd92d9ef00751254aeec402374ba359911c3d85af (diff)
downloadmongo-58febe4996944263d331c3f8deb8cefd10ace9a6.tar.gz
SERVER-51030 Collect document units returned in command responses
Diffstat (limited to 'src/mongo/db/stats/resource_consumption_metrics.cpp')
-rw-r--r--src/mongo/db/stats/resource_consumption_metrics.cpp78
1 files changed, 38 insertions, 40 deletions
diff --git a/src/mongo/db/stats/resource_consumption_metrics.cpp b/src/mongo/db/stats/resource_consumption_metrics.cpp
index bf689584759..88d4d4cfeaf 100644
--- a/src/mongo/db/stats/resource_consumption_metrics.cpp
+++ b/src/mongo/db/stats/resource_consumption_metrics.cpp
@@ -116,22 +116,35 @@ ResourceConsumption::MetricsCollector& ResourceConsumption::MetricsCollector::ge
return getMetricsCollector(opCtx);
}
+void ResourceConsumption::UnitCounter::observeOne(size_t datumBytes) {
+ _units += std::ceil(datumBytes / static_cast<float>(unitSize()));
+ _bytes += datumBytes;
+}
+
+int ResourceConsumption::DocumentUnitCounter::unitSize() const {
+ return gDocumentUnitSizeBytes;
+}
+
+int ResourceConsumption::IdxEntryUnitCounter::unitSize() const {
+ return gIndexEntryUnitSizeBytes;
+}
+
void ResourceConsumption::ReadMetrics::toBson(BSONObjBuilder* builder) const {
- builder->appendNumber(kDocBytesRead, docBytesRead);
- builder->appendNumber(kDocUnitsRead, docUnitsRead);
- builder->appendNumber(kIdxEntryBytesRead, idxEntryBytesRead);
- builder->appendNumber(kIdxEntryUnitsRead, idxEntryUnitsRead);
+ builder->appendNumber(kDocBytesRead, docsRead.bytes());
+ builder->appendNumber(kDocUnitsRead, docsRead.units());
+ builder->appendNumber(kIdxEntryBytesRead, idxEntriesRead.bytes());
+ builder->appendNumber(kIdxEntryUnitsRead, idxEntriesRead.units());
builder->appendNumber(kKeysSorted, keysSorted);
builder->appendNumber(kSorterSpills, sorterSpills);
- builder->appendNumber(kDocUnitsReturned, docUnitsReturned);
+ builder->appendNumber(kDocUnitsReturned, docsReturned.units());
builder->appendNumber(kCursorSeeks, cursorSeeks);
}
void ResourceConsumption::WriteMetrics::toBson(BSONObjBuilder* builder) const {
- builder->appendNumber(kDocBytesWritten, docBytesWritten);
- builder->appendNumber(kDocUnitsWritten, docUnitsWritten);
- builder->appendNumber(kIdxEntryBytesWritten, idxEntryBytesWritten);
- builder->appendNumber(kIdxEntryUnitsWritten, idxEntryUnitsWritten);
+ builder->appendNumber(kDocBytesWritten, docsWritten.bytes());
+ builder->appendNumber(kDocUnitsWritten, docsWritten.units());
+ builder->appendNumber(kIdxEntryBytesWritten, idxEntriesWritten.bytes());
+ builder->appendNumber(kIdxEntryUnitsWritten, idxEntriesWritten.units());
}
void ResourceConsumption::AggregatedMetrics::toBson(BSONObjBuilder* builder) const {
@@ -160,22 +173,22 @@ void ResourceConsumption::OperationMetrics::toBson(BSONObjBuilder* builder) cons
}
void ResourceConsumption::OperationMetrics::toBsonNonZeroFields(BSONObjBuilder* builder) const {
- appendNonZeroMetric(builder, kDocBytesRead, readMetrics.docBytesRead);
- appendNonZeroMetric(builder, kDocUnitsRead, readMetrics.docUnitsRead);
- appendNonZeroMetric(builder, kIdxEntryBytesRead, readMetrics.idxEntryBytesRead);
- appendNonZeroMetric(builder, kIdxEntryUnitsRead, readMetrics.idxEntryUnitsRead);
+ appendNonZeroMetric(builder, kDocBytesRead, readMetrics.docsRead.bytes());
+ appendNonZeroMetric(builder, kDocUnitsRead, readMetrics.docsRead.units());
+ appendNonZeroMetric(builder, kIdxEntryBytesRead, readMetrics.idxEntriesRead.bytes());
+ appendNonZeroMetric(builder, kIdxEntryUnitsRead, readMetrics.idxEntriesRead.units());
appendNonZeroMetric(builder, kKeysSorted, readMetrics.keysSorted);
appendNonZeroMetric(builder, kSorterSpills, readMetrics.sorterSpills);
- appendNonZeroMetric(builder, kDocUnitsReturned, readMetrics.docUnitsReturned);
+ appendNonZeroMetric(builder, kDocUnitsReturned, readMetrics.docsReturned.units());
appendNonZeroMetric(builder, kCursorSeeks, readMetrics.cursorSeeks);
if (cpuTimer) {
appendNonZeroMetric(builder, kCpuNanos, durationCount<Nanoseconds>(cpuTimer->getElapsed()));
}
- appendNonZeroMetric(builder, kDocBytesWritten, writeMetrics.docBytesWritten);
- appendNonZeroMetric(builder, kDocUnitsWritten, writeMetrics.docUnitsWritten);
- appendNonZeroMetric(builder, kIdxEntryBytesWritten, writeMetrics.idxEntryBytesWritten);
- appendNonZeroMetric(builder, kIdxEntryUnitsWritten, writeMetrics.idxEntryUnitsWritten);
+ appendNonZeroMetric(builder, kDocBytesWritten, writeMetrics.docsWritten.bytes());
+ appendNonZeroMetric(builder, kDocUnitsWritten, writeMetrics.docsWritten.units());
+ appendNonZeroMetric(builder, kIdxEntryBytesWritten, writeMetrics.idxEntriesWritten.bytes());
+ appendNonZeroMetric(builder, kIdxEntryUnitsWritten, writeMetrics.idxEntriesWritten.units());
}
template <typename Func>
@@ -187,19 +200,11 @@ inline void ResourceConsumption::MetricsCollector::_doIfCollecting(Func&& func)
}
void ResourceConsumption::MetricsCollector::incrementOneDocRead(size_t docBytesRead) {
- _doIfCollecting([&]() {
- size_t docUnits = std::ceil(docBytesRead / static_cast<float>(gDocumentUnitSizeBytes));
- _metrics.readMetrics.docBytesRead += docBytesRead;
- _metrics.readMetrics.docUnitsRead += docUnits;
- });
+ _doIfCollecting([&]() { _metrics.readMetrics.docsRead.observeOne(docBytesRead); });
}
void ResourceConsumption::MetricsCollector::incrementOneIdxEntryRead(size_t bytesRead) {
- _doIfCollecting([&]() {
- size_t units = std::ceil(bytesRead / static_cast<float>(gIndexEntryUnitSizeBytes));
- _metrics.readMetrics.idxEntryBytesRead += bytesRead;
- _metrics.readMetrics.idxEntryUnitsRead += units;
- });
+ _doIfCollecting([&]() { _metrics.readMetrics.idxEntriesRead.observeOne(bytesRead); });
}
void ResourceConsumption::MetricsCollector::incrementKeysSorted(size_t keysSorted) {
@@ -210,24 +215,17 @@ void ResourceConsumption::MetricsCollector::incrementSorterSpills(size_t spills)
_doIfCollecting([&]() { _metrics.readMetrics.sorterSpills += spills; });
}
-void ResourceConsumption::MetricsCollector::incrementDocUnitsReturned(size_t returned) {
- _doIfCollecting([&]() { _metrics.readMetrics.docUnitsReturned += returned; });
+void ResourceConsumption::MetricsCollector::incrementDocUnitsReturned(
+ DocumentUnitCounter docUnits) {
+ _doIfCollecting([&]() { _metrics.readMetrics.docsReturned += docUnits; });
}
void ResourceConsumption::MetricsCollector::incrementOneDocWritten(size_t bytesWritten) {
- _doIfCollecting([&] {
- size_t docUnits = std::ceil(bytesWritten / static_cast<float>(gDocumentUnitSizeBytes));
- _metrics.writeMetrics.docBytesWritten += bytesWritten;
- _metrics.writeMetrics.docUnitsWritten += docUnits;
- });
+ _doIfCollecting([&] { _metrics.writeMetrics.docsWritten.observeOne(bytesWritten); });
}
void ResourceConsumption::MetricsCollector::incrementOneIdxEntryWritten(size_t bytesWritten) {
- _doIfCollecting([&] {
- size_t idxUnits = std::ceil(bytesWritten / static_cast<float>(gIndexEntryUnitSizeBytes));
- _metrics.writeMetrics.idxEntryBytesWritten += bytesWritten;
- _metrics.writeMetrics.idxEntryUnitsWritten += idxUnits;
- });
+ _doIfCollecting([&] { _metrics.writeMetrics.idxEntriesWritten.observeOne(bytesWritten); });
}
void ResourceConsumption::MetricsCollector::beginScopedCollecting(OperationContext* opCtx,