Overview
For insert_vector workload, there was around 22% less throughput with retryability for single thread and around 17% less throughput for 16 threads. For mixed_insert workload, it was around 20% less throughput at 512 threads.
Here's the raw data from sysperf running insert_vector.js and mix.js (please ignore mix delete data since it is returning an error because multi remove is not supported with retryability) as of 18007ba100:
Baseline
+--------------------------------+----------+--------------+----------+------------------------------+ | "Test" | "Thread" | "Throughput" | "Pass?" | "Comment" | |--------------------------------+----------+--------------+----------+------------------------------| | "insert_vector_primary" | 1 | 101623.82574 | true | "" | | "insert_vector_secondary_load_ | 1 | 101623.82574 | true | "Sec. falling behind" | | "insert_vector_secondary_overa | 1 | 101036.71300 | true | "Sec. slower than primary" | | "insert_vector_primary" | 8 | 424946.67022 | true | "" | | "insert_vector_secondary_load_ | 8 | 424946.67022 | true | "Sec. falling behind" | | "insert_vector_secondary_overa | 8 | 424934.86726 | true | "Sec. slower than primary" | | "insert_vector_primary" | 16 | 453313.87210 | true | "" | | "insert_vector_secondary_load_ | 16 | 453313.87210 | true | "Sec. falling behind" | | "insert_vector_secondary_overa | 16 | 453291.20955 | true | "Sec. slower than primary" | +--------------------------------+----------+--------------+----------+------------------------------+
With Retryability
+--------------------------------+----------+--------------+----------+------------------------------+ | "Test" | "Thread" | "Throughput" | "Pass?" | "Comment" | |--------------------------------+----------+--------------+----------+------------------------------| | "insert_vector_primary" | 1 | 78814.477375 | true | "" | | "insert_vector_secondary_load_ | 1 | 78814.477375 | true | "Sec. falling behind" | | "insert_vector_secondary_overa | 1 | 78811.850386 | true | "Sec. slower than primary" | | "insert_vector_primary" | 8 | 359665.12811 | true | "" | | "insert_vector_secondary_load_ | 8 | 359665.12811 | true | "Sec. falling behind" | | "insert_vector_secondary_overa | 8 | 359657.13746 | true | "Sec. slower than primary" | | "insert_vector_primary" | 16 | 376030.41816 | true | "" | | "insert_vector_secondary_load_ | 16 | 376030.41816 | true | "Sec. falling behind" | | "insert_vector_secondary_overa | 16 | 376022.06323 | true | "Sec. slower than primary" | +--------------------------------+----------+--------------+----------+------------------------------+
baseline mix.js
+--------------------------------+----------+--------------+----------+------------------------------+ | "Test" | "Thread" | "Throughput" | "Pass?" | "Comment" | |--------------------------------+----------+--------------+----------+------------------------------| | "mixed_findOne" | 4 | 4472.6981911 | true | "" | | "mixed_insert" | 4 | 3805.9756593 | true | "" | | "mixed_update" | 4 | 3174.7460354 | true | "" | | "mixed_delete" | 4 | 2824.6050970 | true | "" | | "mixed_total" | 4 | 14278.024982 | true | "" | | "mixed_findOne" | 64 | 16525.438582 | true | "" | | "mixed_insert" | 64 | 11653.073597 | true | "" | | "mixed_update" | 64 | 7931.0945267 | true | "" | | "mixed_delete" | 64 | 5379.8694900 | true | "" | | "mixed_total" | 64 | 41489.476196 | true | "" | | "mixed_findOne" | 128 | 15840.411973 | true | "" | | "mixed_insert" | 128 | 11113.787840 | true | "" | | "mixed_update" | 128 | 7266.9542743 | true | "" | | "mixed_delete" | 128 | 4749.9851705 | true | "" | | "mixed_total" | 128 | 38971.139259 | true | "" | | "mixed_findOne" | 256 | 15766.881334 | true | "" | | "mixed_insert" | 256 | 9693.6542247 | true | "" | | "mixed_update" | 256 | 6585.9494255 | true | "" | | "mixed_delete" | 256 | 4372.4137097 | true | "" | | "mixed_total" | 256 | 36418.898694 | true | "" | | "mixed_findOne" | 512 | 25639.250408 | true | "" | | "mixed_insert" | 512 | 5669.6090450 | true | "" | | "mixed_update" | 512 | 3883.6152132 | true | "" | | "mixed_delete" | 512 | 2778.9162796 | true | "" | | "mixed_total" | 512 | 37971.390946 | true | "" | +--------------------------------+----------+--------------+----------+------------------------------+
mix.js with retryability
+--------------------------------+----------+--------------+----------+------------------------------+ | "Test" | "Thread" | "Throughput" | "Pass?" | "Comment" | |--------------------------------+----------+--------------+----------+------------------------------| | "mixed_findOne" | 4 | 4457.3807806 | true | "" | | "mixed_insert" | 4 | 2576.6019375 | true | "" | | "mixed_update" | 4 | 2090.2318381 | true | "" | | "mixed_delete" | 4 | 5116.3385612 | true | "" | | "mixed_total" | 4 | 14240.553117 | true | "" | | "mixed_findOne" | 64 | 17271.671427 | true | "" | | "mixed_insert" | 64 | 4781.4438353 | true | "" | | "mixed_update" | 64 | 4051.6637500 | true | "" | | "mixed_delete" | 64 | 26038.132693 | true | "" | | "mixed_total" | 64 | 52142.911706 | true | "" | | "mixed_findOne" | 128 | 17153.505938 | true | "" | | "mixed_insert" | 128 | 4596.0571971 | true | "" | | "mixed_update" | 128 | 3410.6137130 | true | "" | | "mixed_delete" | 128 | 28104.783343 | true | "" | | "mixed_total" | 128 | 53264.960192 | true | "" | | "mixed_findOne" | 256 | 16838.153379 | true | "" | | "mixed_insert" | 256 | 4982.6915083 | true | "" | | "mixed_update" | 256 | 3372.3365393 | true | "" | | "mixed_delete" | 256 | 29890.287152 | true | "" | | "mixed_total" | 256 | 55083.468579 | true | "" | | "mixed_findOne" | 512 | 16603.510566 | true | "" | | "mixed_insert" | 512 | 4504.9162216 | true | "" | | "mixed_update" | 512 | 3067.2317850 | true | "" | | "mixed_delete" | 512 | 34186.197248 | true | "" | | "mixed_total" | 512 | 58361.855821 | true | "" | +--------------------------------+----------+--------------+----------+------------------------------+
- depends on
-
SERVER-31863 Make TransactionHistoryIterator use oplogHack
- Closed
- related to
-
SERVER-31941 Disallow retryable writes in storage engines which do not support document-level locking
- Closed
-
SERVER-32043 Disallow users from creating new indexes in config.transactions
- Closed
-
SERVER-32055 Improve multi thread performance for retryable writes
- Closed