Redesign the Ractor/Knucleotide benchmark #451
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.
This PR rebuilds the knucleotide Ractor benchmark to use Ractors internally, rather than doing the internal work sequentially and running the whole workload in multiple Ractors using the Ractor harness.
This makes it directly comparable to the process-based implementation, so we can measure the forking approach directly against the Ractor approach, instead of measuring ractor overhead on a single threaded workload, which we have other benchmarks to do.
The old
benchmarks-ractor/knucleotidehas been removed.To support this properly, we've rethought how benchmark categories work:
All benchmarks have been consolidated back into the single
benchmarksdirectory andbenchmarks-ractorhas been removed.Benchmarks that were previously in the
benchmarks-ractordirectory no haveractor_only: trueinbenchmarks.ymland theractor_onlycategory will run only these benchmarks.Additionally, the new key
default_harnesshas been introduced intobenchmarks.yml. This lets individual benchmarks specify their own harness, independent of category. This has been done to facilitate running benchmarks like the newknucleotide-ractorintroduced in this commit - which needs to run when--category=ractoris specified, but should use thedefaultharness, unlike otherractorcategory benchmarks, which generally require the ractor harness.The category filtering now works as follows:
ractor_only: true. Uses each benchmark'sdefault_harness, falling back to thedefaultharness.--category=ractor: Runs benchmarks with ractor: true orractor_only: true. Uses each benchmark'sdefault_harness, falling back toharness-ractor.--category=ractor-only: Runs only benchmarks withractor_only: true. Uses each benchmark'sdefault_harness, falling back toharness-ractor.