Benchmark WorkerState._ensure_communicating #50
Merged
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.
Partially closes dask/distributed#6497
This line in https://asv.readthedocs.io/en/stable/writing_benchmarks.html:
is false - the setup is not rerun for each repeat. So there's no way to run without the
--quick
flag, short of implementing pickling/unpickling in the test itself. Upstream issue to follow.Highlights
Benchmark highlights from my computer (with an additional 1k workers, 10k tasks parameter which I removed in the PR out of mercy for the CI hosts), of
88e1fe08086f41e771aa6317ec4de7a2a356b278
vs.c82bba52070093e4bf3ffe7da36dbfdd18974d81
, which addsNote: the drastic speedup in some benchmarks from 49 to 50 workers is because total_out_connections=50.
Create 10k tasks and transition them to fetch
HeapSet.add()
Call _ensure_communicating from idle, while there are 10k tasks in fetch state
Call _ensure_communicating when all workers are already in flight (10k tasks)
Call _ensure_communicating when all but one workers are in flight (10k tasks)
Note that this last benchmark indicates that further work to avoid the O(n) iteration on the busy workers would be superfluous.
Raw output