summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
authorEric Milkie <milkie@10gen.com>2021-05-03 14:22:15 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-03 20:30:23 +0000
commit960f5deb14520af3076c9164fbf8b3cbcca0560f (patch)
treec36a300cc4060449974eab032d197813034defb5 /jstests
parent20b86d14a58f5862fa0eeec1f2bfac3161797730 (diff)
downloadmongo-960f5deb14520af3076c9164fbf8b3cbcca0560f.tar.gz
SERVER-55556 add new totalUnitsWritten metric; add new localTime field to operationMetrics output
totalUnitsWritten is a metric that represents the number of bytes written to a document plus any index entries that follow, prior to writing another document; these bytes are then translated into Units as per the totalUnitWriteSizeBytes parameter. Additionally, a new field localTime will now appear in every BSONArray (per database) included in the $operationMetrics aggregation stage
Diffstat (limited to 'jstests')
-rw-r--r--jstests/hooks/run_aggregate_metrics_background.js1
-rw-r--r--jstests/noPassthrough/aggregate_operation_metrics.js5
-rw-r--r--jstests/noPassthrough/change_stream_operation_metrics.js10
-rw-r--r--jstests/noPassthrough/initial_sync_operation_metrics.js4
-rw-r--r--jstests/noPassthrough/profile_operation_metrics.js56
-rw-r--r--jstests/noPassthrough/ttl_operation_metrics.js4
6 files changed, 76 insertions, 4 deletions
diff --git a/jstests/hooks/run_aggregate_metrics_background.js b/jstests/hooks/run_aggregate_metrics_background.js
index e6d53b6a6f0..32335852fcd 100644
--- a/jstests/hooks/run_aggregate_metrics_background.js
+++ b/jstests/hooks/run_aggregate_metrics_background.js
@@ -25,6 +25,7 @@ const aggregateMetricsBackground = function(host) {
"docUnitsWritten",
"idxEntryBytesWritten",
"idxEntryUnitsWritten",
+ "totalUnitsWritten",
"cpuNanos",
"db",
"primaryMetrics",
diff --git a/jstests/noPassthrough/aggregate_operation_metrics.js b/jstests/noPassthrough/aggregate_operation_metrics.js
index aa42c967f2b..25d71d07bb4 100644
--- a/jstests/noPassthrough/aggregate_operation_metrics.js
+++ b/jstests/noPassthrough/aggregate_operation_metrics.js
@@ -20,6 +20,8 @@ const isLinux = getBuildInfo().buildEnvironment.target_os == "linux";
let assertMetricsExist = function(metrics) {
try {
assert.neq(metrics, undefined);
+ assert(metrics.hasOwnProperty("db"));
+ assert(metrics.hasOwnProperty("localTime"));
let primaryMetrics = metrics.primaryMetrics;
let secondaryMetrics = metrics.secondaryMetrics;
[primaryMetrics, secondaryMetrics].forEach((readMetrics) => {
@@ -38,6 +40,7 @@ let assertMetricsExist = function(metrics) {
assert.gte(metrics.docUnitsWritten, 0);
assert.gte(metrics.idxEntryBytesWritten, 0);
assert.gte(metrics.idxEntryUnitsWritten, 0);
+ assert.gte(metrics.totalUnitsWritten, 0);
} catch (e) {
print("caught exception while checking metrics output: " + tojson(metrics));
throw e;
@@ -249,4 +252,4 @@ const secondary = rst.getSecondary();
});
rst.stopSet();
-}()); \ No newline at end of file
+}());
diff --git a/jstests/noPassthrough/change_stream_operation_metrics.js b/jstests/noPassthrough/change_stream_operation_metrics.js
index a4f64917baf..bf7c75a9e24 100644
--- a/jstests/noPassthrough/change_stream_operation_metrics.js
+++ b/jstests/noPassthrough/change_stream_operation_metrics.js
@@ -81,6 +81,12 @@ assert.commandWorked(primaryDB.createCollection(collName));
assert.eq(metrics[dbName].docBytesWritten, 29 * nDocs);
assert.eq(metrics[dbName].docUnitsWritten, nDocs);
+ // With batch inserts, the index updates are all performed together after all the documents
+ // are inserted, so this has the effect of associating all the index bytes for the batch
+ // with one document, for the purposes of totalUnitsWritten. This effect causes the last
+ // document to have 3 units instead of 1 like the first 99.
+ assert.eq(metrics[dbName].totalUnitsWritten, nDocs + 2);
+
// The inserted keys will vary in size from 2 to 4 bytes depending on their value. Assert
// that the number of bytes fall within that range.
assert.gt(metrics[dbName].idxEntryBytesWritten, 2 * nDocs);
@@ -133,6 +139,7 @@ let nextId = nDocs;
assert.eq(metrics[dbName].docUnitsWritten, 1);
assert.eq(metrics[dbName].idxEntryBytesWritten, 3);
assert.eq(metrics[dbName].idxEntryUnitsWritten, 1);
+ assert.eq(metrics[dbName].totalUnitsWritten, 1);
assert.eq(metrics[dbName].primaryMetrics.docBytesRead, 0);
assert.eq(metrics[dbName].primaryMetrics.docUnitsRead, 0);
assert.eq(metrics[dbName].primaryMetrics.cursorSeeks, 0);
@@ -166,6 +173,7 @@ let nextId = nDocs;
assertMetrics(primary, (metrics) => {
assert.eq(metrics[dbName].docBytesWritten, 40);
assert.eq(metrics[dbName].docUnitsWritten, 1);
+ assert.eq(metrics[dbName].totalUnitsWritten, 1);
assert.eq(metrics[dbName].primaryMetrics.docBytesRead, 29);
assert.eq(metrics[dbName].primaryMetrics.docUnitsRead, 1);
assert.eq(metrics[dbName].primaryMetrics.idxEntryBytesRead, 3);
@@ -285,4 +293,4 @@ let nextId = nDocs;
});
})();
rst.stopSet();
-}()); \ No newline at end of file
+}());
diff --git a/jstests/noPassthrough/initial_sync_operation_metrics.js b/jstests/noPassthrough/initial_sync_operation_metrics.js
index 2b674b64a70..3b313c19d08 100644
--- a/jstests/noPassthrough/initial_sync_operation_metrics.js
+++ b/jstests/noPassthrough/initial_sync_operation_metrics.js
@@ -43,6 +43,8 @@ const getDBMetrics = (adminDB) => {
let allMetrics = {};
while (cursor.hasNext()) {
let doc = cursor.next();
+ // Remove localTime field as it stymies us from comparing objects since it always changes.
+ delete doc.localTime;
allMetrics[doc.db] = doc;
}
return allMetrics;
@@ -93,4 +95,4 @@ replSet.awaitReplication();
}
replSet.stopSet();
-})(); \ No newline at end of file
+})();
diff --git a/jstests/noPassthrough/profile_operation_metrics.js b/jstests/noPassthrough/profile_operation_metrics.js
index a70bdc1dbab..5f5e70742de 100644
--- a/jstests/noPassthrough/profile_operation_metrics.js
+++ b/jstests/noPassthrough/profile_operation_metrics.js
@@ -47,6 +47,7 @@ const assertMetricsExist = (profilerEntry) => {
assert.gte(metrics.docUnitsWritten, 0);
assert.gte(metrics.idxEntryBytesWritten, 0);
assert.gte(metrics.idxEntryUnitsWritten, 0);
+ assert.gte(metrics.totalUnitsWritten, 0);
};
const runInLegacyQueryMode = (db, func) => {
@@ -97,6 +98,7 @@ const operations = [
assert.gt(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.gt(profileDoc.totalUnitsWritten, 0);
assert.gt(profileDoc.cursorSeeks, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
@@ -121,6 +123,7 @@ const operations = [
assert.gt(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.gt(profileDoc.totalUnitsWritten, 0);
assert.gt(profileDoc.cursorSeeks, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
@@ -145,6 +148,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -167,6 +171,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 7);
assert.eq(profileDoc.idxEntryUnitsWritten, 2);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -200,6 +205,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -222,6 +228,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -244,6 +251,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -266,6 +274,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -298,6 +307,7 @@ const operations = [
// Deletes one index entry and writes another.
assert.eq(profileDoc.idxEntryBytesWritten, 9);
assert.eq(profileDoc.idxEntryUnitsWritten, 2);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -330,6 +340,7 @@ const operations = [
// Deletes one index entry and writes another.
assert.eq(profileDoc.idxEntryBytesWritten, 10);
assert.eq(profileDoc.idxEntryUnitsWritten, 2);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -371,6 +382,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -414,6 +426,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -436,6 +449,7 @@ const operations = [
assert.gt(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.gt(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -470,6 +484,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -501,6 +516,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 3);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -529,6 +545,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 3);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -557,6 +574,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 3);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.docUnitsReturned, 0);
}
},
@@ -577,6 +595,7 @@ const operations = [
assert.gt(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.gt(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -605,6 +624,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 5);
@@ -629,6 +649,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 150);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 10);
@@ -654,6 +675,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -679,6 +701,7 @@ const operations = [
// Deletes one entry and writes another.
assert.eq(profileDoc.idxEntryBytesWritten, 10);
assert.eq(profileDoc.idxEntryUnitsWritten, 2);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -708,6 +731,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 4);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -746,6 +770,7 @@ const operations = [
// Removes one entry and inserts another.
assert.eq(profileDoc.idxEntryBytesWritten, 11);
assert.eq(profileDoc.idxEntryUnitsWritten, 2);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -783,9 +808,11 @@ const operations = [
// comment about WT_MODIFY above.
assert.eq(profileDoc.docBytesWritten, 13);
assert.eq(profileDoc.docUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
} else {
assert.eq(profileDoc.docBytesWritten, 1061);
assert.eq(profileDoc.docUnitsWritten, 9);
+ assert.eq(profileDoc.totalUnitsWritten, 9);
}
// Removes one entry and inserts another.
assert.eq(profileDoc.idxEntryBytesWritten, 10);
@@ -827,6 +854,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -853,6 +881,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 3);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -876,6 +905,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -909,6 +939,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -938,6 +969,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.docUnitsReturned, 0);
}
},
@@ -965,6 +997,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 3);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -993,6 +1026,11 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 100);
assert.eq(profileDoc.idxEntryBytesWritten, 299);
assert.eq(profileDoc.idxEntryUnitsWritten, 100);
+ // This is 102 instead of 100 because all of the index bytes for the batch insert are
+ // lumped together and associated with the last document written in the batch, instead
+ // of being associated with each document written. This causes the last document+index
+ // bytes to exceed the unit size.
+ assert.eq(profileDoc.totalUnitsWritten, 102);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -1017,6 +1055,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 100);
@@ -1041,6 +1080,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 100);
@@ -1063,6 +1103,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 100);
@@ -1086,6 +1127,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 1);
@@ -1109,6 +1151,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 5);
@@ -1144,6 +1187,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 101);
assert.eq(profileDoc.docUnitsReturned, 100);
@@ -1168,6 +1212,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
if (isDebugBuild(db)) {
// In debug builds we sort and spill for each of the first 20 documents. Once we
// reach that limit, we stop spilling as often. This 26 is the sum of 20 debug sorts
@@ -1203,6 +1248,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.keysSorted, 100);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 10);
@@ -1227,6 +1273,7 @@ const operations = [
// The key size varies from 2 to 3 bytes.
assert.gte(profileDoc.idxEntryBytesWritten, 2 * 100);
assert.eq(profileDoc.idxEntryUnitsWritten, 100);
+ assert.gte(profileDoc.totalUnitsWritten, 100);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -1252,6 +1299,7 @@ const operations = [
// The key size varies from 2 to 3 bytes.
assert.gte(profileDoc.idxEntryBytesWritten, 2 * 100);
assert.eq(profileDoc.idxEntryUnitsWritten, 100);
+ assert.gte(profileDoc.totalUnitsWritten, 100);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
assert.eq(profileDoc.docUnitsReturned, 0);
@@ -1276,6 +1324,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 1);
assert.eq(profileDoc.idxEntryBytesWritten, 2);
assert.eq(profileDoc.idxEntryUnitsWritten, 1);
+ assert.eq(profileDoc.totalUnitsWritten, 1);
assert.eq(profileDoc.docUnitsReturned, 0);
}
},
@@ -1301,6 +1350,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 9);
assert.eq(profileDoc.idxEntryBytesWritten, 27);
assert.eq(profileDoc.idxEntryUnitsWritten, 9);
+ assert.eq(profileDoc.totalUnitsWritten, 9);
assert.eq(profileDoc.docUnitsReturned, 0);
}
},
@@ -1331,6 +1381,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 2);
assert.eq(profileDoc.idxEntryBytesWritten, 5);
assert.eq(profileDoc.idxEntryUnitsWritten, 2);
+ assert.eq(profileDoc.totalUnitsWritten, 2);
assert.eq(profileDoc.docUnitsReturned, 0);
}
},
@@ -1366,6 +1417,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 18);
assert.eq(profileDoc.idxEntryBytesWritten, 54);
assert.eq(profileDoc.idxEntryUnitsWritten, 18);
+ assert.eq(profileDoc.totalUnitsWritten, 18);
assert.eq(profileDoc.docUnitsReturned, 0);
}
},
@@ -1391,6 +1443,7 @@ const operations = [
assert.gte(profileDoc.docUnitsWritten, 0);
assert.gte(profileDoc.idxEntryBytesWritten, 0);
assert.gte(profileDoc.idxEntryUnitsWritten, 0);
+ assert.gte(profileDoc.totalUnitsWritten, 0);
assert.gt(profileDoc.cursorSeeks, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
@@ -1415,6 +1468,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 2);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 2);
assert.eq(profileDoc.cursorSeeks, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
@@ -1464,6 +1518,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 2);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 2);
assert.eq(profileDoc.cursorSeeks, 2);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
@@ -1511,6 +1566,7 @@ const operations = [
assert.eq(profileDoc.docUnitsWritten, 0);
assert.eq(profileDoc.idxEntryBytesWritten, 0);
assert.eq(profileDoc.idxEntryUnitsWritten, 0);
+ assert.eq(profileDoc.totalUnitsWritten, 0);
assert.eq(profileDoc.cursorSeeks, 0);
assert.eq(profileDoc.keysSorted, 0);
assert.eq(profileDoc.sorterSpills, 0);
diff --git a/jstests/noPassthrough/ttl_operation_metrics.js b/jstests/noPassthrough/ttl_operation_metrics.js
index 4b57fe9481f..0d24af78932 100644
--- a/jstests/noPassthrough/ttl_operation_metrics.js
+++ b/jstests/noPassthrough/ttl_operation_metrics.js
@@ -87,6 +87,7 @@ assertMetrics(primary, (metrics) => {
// Document size is 29 bytes.
assert.gte(metrics[dbName].docBytesWritten, 29 * 3);
assert.gte(metrics[dbName].docUnitsWritten, 3);
+ assert.gte(metrics[dbName].totalUnitsWritten, 3);
});
// Clear metrics and wait for a TTL pass to delete the documents.
@@ -103,6 +104,7 @@ assertMetrics(primary, (metrics) => {
assert.gte(metrics[dbName].primaryMetrics.docUnitsRead, 2);
assert.gte(metrics[dbName].docBytesWritten, 29 * 2);
assert.gte(metrics[dbName].docUnitsWritten, 2);
+ assert.gte(metrics[dbName].totalUnitsWritten, 2);
// Key size is 12 bytes.
assert.gte(metrics[dbName].primaryMetrics.idxEntryBytesRead, 12 * 2);
assert.gte(metrics[dbName].primaryMetrics.idxEntryUnitsRead, 2);
@@ -123,4 +125,4 @@ assert.eq(primaryDB[collName].count({}), 1);
assert.eq(secondaryDB[collName].count({}), 1);
rst.stopSet();
-}()); \ No newline at end of file
+}());