perf: double the round robin batch size, improve queue filtering #3063
+488
−69
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
benchmarks
improve add to table logic by reducing queue iterations and leaning on pattern matching for faster filtering
double round robin chunk size to reduce reductions by half
filter out full queues so that we don't add more events to them. Add them to startup queue instead to let DynamicPipeline resolver know that we need another pipeline queue
removes unnecessary telemetry from QueueJanitor
traverse_queues moves towards using :ets.match instead, minor memory improvement
add_to_table moves towards reducing tid lookups -> large speedup
list_counts shifts towards using direct match with list_counts_with_tids -> moderate ips improvement
Notable speedups:
add_to_table
before:
after:
traverse_queues - memory improvements and 1% speedup in ips
list_counts
Before:
After: