-
Notifications
You must be signed in to change notification settings - Fork 4.3k
[v2] Add support for chunking performance tests #9485
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When I saw the new /tests
directory, I thought those would be unit/integration/etc. tests for the performance framework. I'd rather keep in the top level if it's still just implementation.
- `mode` (string) **(optional)**: The write mode to use for writing the | ||
file contents. | ||
- Default: `w` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is anything actually using this? It looks hardcoded below in _create_file_with_size
and begin_iteration
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is used in line 136 of simple_stubbed_tests.py
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, I just saw the w
and thought it was hardcoded, but that's just the fallback.
Context:
The main purpose of this PR is adding 'chunking' support to performance tests to enable sharding of the tests across parallel workers in a distributed workflow. The secondary purpose of this PR is to refactor the architecture of the performance testing code to make it easier to integrate more complex performance tests. The architectural decisions were led by implementing more complex RPCv2 CBOR performance test cases and observing points of friction.
Description of changes:
BaseBenchmarkSuite
class which defines the abstract functions that must be implemented to define new performance tests. The default performance test cases were abstracted out into aJSONStubbedBenchmarkSuite
implementation.JSONStubbedBenchmarkSuite
dimensions
format to require the usage ofname
andvalue
keys to reflect the CloudWatch Metrics model.mode
key onfile_literals
definition.BenchmarkResultsSerializer
class. This makes it easier to override this class for one-off performance testing when a different output format is expected.Summarizer
to return metric results in a newMetric
data model, which includes additional data like description and unit.Description of tests:
./scripts/performance/run-benchmarks --num-iterations 20
and observed expected results.By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.