summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/profile_operation_metrics.js
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 22:13:32 +0000
commita58447691485ec04d39d7b9d42dc28cd6900da6c (patch)
tree88a9360a4bcaea1fc5562841bc082e59a60711b2 /jstests/noPassthrough/profile_operation_metrics.js
parent48531fdbd58769200b279ed5e31c2111376903ac (diff)
downloadmongo-a58447691485ec04d39d7b9d42dc28cd6900da6c.tar.gz
SERVER-55556 add new totalUnitsWritten metric; add new localTime field to operationMetrics outputr4.9.0-rc1
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 (cherry picked from commit 960f5deb14520af3076c9164fbf8b3cbcca0560f)
Diffstat (limited to 'jstests/noPassthrough/profile_operation_metrics.js')
-rw-r--r--jstests/noPassthrough/profile_operation_metrics.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/jstests/noPassthrough/profile_operation_metrics.js b/jstests/noPassthrough/profile_operation_metrics.js
index 0ed01728a91..d905d89ebac 100644
--- a/jstests/noPassthrough/profile_operation_metrics.js
+++ b/jstests/noPassthrough/profile_operation_metrics.js
@@ -46,6 +46,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) => {
@@ -96,6 +97,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);
@@ -120,6 +122,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);
@@ -144,6 +147,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);
@@ -166,6 +170,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);
@@ -199,6 +204,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);
@@ -221,6 +227,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);
@@ -243,6 +250,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);
@@ -265,6 +273,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);
@@ -297,6 +306,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);
@@ -329,6 +339,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);
@@ -370,6 +381,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);
@@ -413,6 +425,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);
@@ -435,6 +448,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);
@@ -469,6 +483,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);
@@ -500,6 +515,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);
@@ -528,6 +544,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);
@@ -556,6 +573,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);
}
},
@@ -576,6 +594,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);
@@ -604,6 +623,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);
@@ -628,6 +648,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);
@@ -653,6 +674,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);
@@ -678,6 +700,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);
@@ -707,6 +730,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);
@@ -745,6 +769,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);
@@ -782,9 +807,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);
@@ -826,6 +853,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);
@@ -852,6 +880,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);
@@ -875,6 +904,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);
@@ -908,6 +938,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);
@@ -937,6 +968,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);
}
},
@@ -964,6 +996,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);
@@ -992,6 +1025,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);
@@ -1016,6 +1054,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);
@@ -1040,6 +1079,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);
@@ -1062,6 +1102,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);
@@ -1085,6 +1126,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);
@@ -1108,6 +1150,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);
@@ -1143,6 +1186,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);
@@ -1167,6 +1211,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
@@ -1202,6 +1247,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);
@@ -1226,6 +1272,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);
@@ -1251,6 +1298,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);
@@ -1275,6 +1323,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);
}
},
@@ -1300,6 +1349,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);
}
},
@@ -1329,6 +1379,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);
}
},
@@ -1363,6 +1414,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);
}
}