-
Type: Improvement
-
Resolution: Won't Do
-
Priority: 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
- related to
-
WT-8573 Update Architecture guide for configuration precompiling
- Backlog