Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-8571

Improve performance of configuration parsing via precompiling

    • Type: Icon: Improvement Improvement
    • Resolution: Won't Do
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None

      Summary

      We use configuration strings for flexibility in many parts of the WiredTiger API.  The APIs that use it were not really intended to be in performance critical paths, but sometimes that has occurred.  Our current configuration parsing routines potentially examine the entire configuration string multiple times.

      This ticket tracks an approach to "pre-compile" a configuration string.

      Motivation

      This approach will improve the performance of WT for certain workloads.  Also, tickets like HELP-28951 show that this may be a particular problem for the Graviton ARM processor.  There may be mitigation techniques (WT-8366 or WT-8365) for that particular help ticket, so we may be able to take some time with the approach in this ticket.  That is, urgency may be low at the moment.

      It's hard to know what kinds of speedups we would see, in what workloads, without trying out the approach.  We expect for many typical workloads, the speedups would be negligible because we've already mitigated many of these problems when we notice them in performance profiling.  However, particular workloads may show noticeable improvements.

      Acceptance Criteria (Definition of Done)

      This is considered done, when we have a general approach to speeding up all (or most) of the configuration strings in the API, and that we have applied it at least to the WT_SESSION::timestamp_transaction API, which was hit by HELP-28951.  Getting WT_SESSION::open_cursor to use this approach could be a bonus, but is not required.

      Testing

      We'll need a new test that tests timestamp_transaction using precompiled configuration.  Also, we'll need to do a performance comparison.

      Suggested Solution

      A solution is written up here:

      https://docs.google.com/document/d/1WVwFNIDAh_MkSHXjCQl6ui7dcaUJgjqJdGh1I5975-A/edit?usp=sharing

            Assignee:
            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            donald.anderson@mongodb.com Donald Anderson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: