-
Notifications
You must be signed in to change notification settings - Fork 246
DRIVERS-2917 - Standardized Performance Testing of ODMs and Integrations #1828
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
87ddf0a
0520372
f44d5a9
293443a
3b25a27
c1207dd
38b26bf
c07cd08
2567ac6
2a3fd94
2a023a6
b7e9fbb
373037b
fb86a14
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,8 +18,8 @@ different ODMs, and the relative performance of ODMs and their associated langua | |
|
|
||
| We expect substantial performance differences between ODMs based on both their language families (e.g. static vs. | ||
| dynamic or compiled vs. virtual-machine-based) as well as their inherent design (e.g. web frameworks such as Django vs. | ||
| application-agnostic such as Mongoose). However we still expect "vertical" comparison within families of ODMs to expose | ||
| outlier behavior that can be optimized away. | ||
| application-agnostic such as Mongoose). Within families of ODMs that use similar design and language families, these | ||
| comparisons could be used to identify potential areas of performance improvement. | ||
|
|
||
| ### Task Hierarchy | ||
|
|
||
|
|
@@ -34,9 +34,9 @@ The suite is intentionally kept small for several reasons: | |
|
|
||
| - ODM feature sets vary significantly across libraries, limiting the number of benchmarks that can be run across the | ||
| entire collection of extant ODMs. | ||
| - Several popular \`MongoDB ODMs are actively maintained by third-parties, such as Mongoose. By limiting the | ||
| benchmarking suite to a minimal set of representative tests that are easy to implement, we encourage adoption of the | ||
| suite by these third-party maintainers. | ||
| - Several popular MongoDB ODMs are actively maintained by third-parties, such as Mongoose. By limiting the benchmarking | ||
| suite to a minimal set of representative tests that are easy to implement, we encourage adoption of the suite by | ||
| these third-party maintainers. | ||
|
|
||
| ### Measurement | ||
|
|
||
|
|
@@ -368,14 +368,19 @@ supports. | |
| ### Benchmark Server | ||
|
|
||
| The MongoDB ODM Performance Benchmark must be run against a MongoDB replica set of size 1 running the latest stable | ||
| database version without authentication or SSL enabled. | ||
| database version without authentication or SSL enabled. The Benchmark should be run on the established internal | ||
| performance distro for the sake of consistency. | ||
|
|
||
| ### Benchmark placement and scheduling | ||
|
|
||
| The MongoDB ODM Performance Benchmark should be placed within the ODM's test directory as an independent test suite. Due | ||
| to the relatively long runtime of the benchmarks, including them as part of an automated suite that runs against every | ||
| PR is not recommended. Instead, scheduling benchmark runs on a regular cadence is the recommended method of automating | ||
| this suite of tests. | ||
| The MongoDB ODM Performance Benchmark should be placed in one of two places. For first-party ODMs, the Benchmark should | ||
| be placed within the ODM's test directory as an independent test suite. For third-party ODMs, if the external | ||
| maintainers do not wish to have the Benchmark included as part of the in-repo test suite, it should be included in the | ||
| ODM performance testing repository created explicitly for this purpose. | ||
|
|
||
| Due to the relatively long runtime of the benchmarks, including them as part of an automated suite that runs against | ||
| every PR is not recommended. Instead, scheduling benchmark runs on a regular cadence is the recommended method of | ||
| automating this suite of tests. | ||
|
|
||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we have a dedicated, isolated perf lab, with machines that won't get changes unless we know about it? My experience with perf testing over many years is that unless you have such a system, then the noise makes it very difficult to see when things really change. For example, OS updates, platform/language changes, virus checking, auto-updates kicking in mid run, and so on, all make the data hard to interpret. How do you currently handle driver perf test machines? Can you point me to charts, or even raw data I guess, that should variation/noise over time? Also, how often do they run? Is there only a single change between each run so that it's feasible to trace back a perf difference to a single change, be that external or a code change?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here's an example of what the Python driver perf tests output. The driver perf tests have experienced all of the issues you've stated, but still provide useful metrics that let us catch regressions and identify places for improvement. Running on Evergreen doesn't allow us (AFAIK) to have our own dedicated set of machines. The Python driver perf tests run weekly.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Drivers do have access to a special host in evergreen to run dedicated performance tasks on to ensure stability and consistency (
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should the dedicated Evergreen hosts be discussed in this document? Alternatively, if it's already discussed in the general driver benchmarks spec we can reference that.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @NoahStapp let me know if this is also an internal document or something we can easily reference. Feel free to resolve accordingly.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is in an internal document titled "Drivers Performance Testing Infrastructure Guidelines". |
||
| ## ODM-specific benchmarking | ||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.