Module: workloads/update_large_documents

Measures the performance of updates on large documents.

This workload exerts pressure on WiredTiger's cache management and cache eviction policy.

Test

The following operations are tested:

  • Initially, the collection is populated with a fixed number of large documents (using a single 10 MB-long string field).
  • Each document contains a non-id numerical field that will be modified by the update operations in the workload.
  • The workload to be measured is comprised exclusively of update operations that repeatedly increment the numerical field in every document in the collection.
  • The document sized wll remain unchanged because the long string field is left intact by the updates.
  • Since the targets of the update operations are not randomized, all documents will contain the same value for the numerical field at the end of the workload.

Results are reported as ops / sec.

Setup

  • A fixed number of large documents are inserted as part of the test initialization.

Notes

  1. For all the tests, a varying number of threads is used.
  • We also use varying durations for the the runtime for the test.
  • The minimum size of each document can also be varied (defaults to 10 MB).
  • This test was motivated by a performance regression reported in 3.6 (see SERVER-36221).

Owning-team

mongodb/product-query

Source:

Members

(inner) doc_counts

The number of large documents to insert into the collection during setup. The default is [1].

The actual values in use are injected by run_workloads.py, which gets it from the config file, see test_control.misc_workloads.yml.

Source:

(inner) doc_sizes_mb

The size in MB of each large document in the collection. The default is [10]. This should be treated as a minimum rather than an exact size due to the BSON overhead and the additional numerical field incremented by the update operations.

Source:

(inner) runtime_secs

The duration of each test iteration in seconds. The default is [180].

Source:

(inner) thread_levels

The number of threads to run in parallel. The default is [1].

Source: