-
Notifications
You must be signed in to change notification settings - Fork 468
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
Add basic stress testing framework + counter.add test #1045
Conversation
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## main #1045 +/- ##
=======================================
- Coverage 55.1% 54.9% -0.2%
=======================================
Files 149 151 +2
Lines 18143 18242 +99
=======================================
+ Hits 10006 10025 +19
- Misses 8137 8217 +80
☔ View full report in Codecov by Sentry. |
Running this locally looks like most of the time is spent waiting on the mutex contention when aggregating, we could consider more optimized methods for updating those sums. e.g. I can get more than 2x the current throughput by switching to a SkipMap for the sum's value map so there is likely quite a bit of headroom here. Also the conversion into attribute sets will quickly become a bottleneck too once a test is added for that case, so we may want to consider an API change that allows the attribute sets to be precomputed. |
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.
looks good start. we can iterate this in follow ups.
I was not able to get any improvements when trying out SkipMap, perhaps I implemented it incorrectly. Could you maybe paste your code/submit a pr for an improvement on the current implementation? |
Discussed in the weekly Rust SIG, creates a stress testing framework under the folder
stress
to test throughput of functions in our API.Measures the amount of times a certain function is called within a sliding window (2 seconds, can be configured in the future) to using the max number of cpus available.
Note this provides basic functionality and only prints to the console.
Sample output: