Skip to content

Timeboxed push for simplifying work stealing #6993

@fjetter

Description

@fjetter

Work stealing is a known source of problems. It's current implementation is overly complex and has a couple of known problems, some of which are almost fixed.

Specifically, I propose to time box this to ~1-2weeks and try to wrap up a few known issues while pushing for a drastic simplification of the implementation. Once the dust settles, we can reevaluate how this feature has to evolve.

The short to mid term target of this effort should be to reduce the number of steal requests drastically such that we can afford spending more time on "good" decisions (e.g. reusing the actual scheduler decide_worker logic or something even better)

Even if we want to get rid of work stealing entirely, there is some need for it to balance inhomogeneous workloads and allow cluster upscaling, see #6600 The most valuable component of the current implementation is the handshake mechanism move_task_request / move_task_confirm that ensures consistent transitions without recomputing a key. I believe by tearing down the infrastructure around this handshake piece by piece we can iterate towards a more stable and maintainable implementation.

Previously I approached changes to this logic very carefully due to the lack of repeatable benchmarks. Therefore, I suggest that this effort should utilize benchmarks in coiled-runtime to the best of our abilities.

Metadata

Metadata

Labels

adaptiveAll things relating to adaptive scalingenhancementImprove existing functionality or make things work betterperformanceschedulerschedulingstabilityIssue or feature related to cluster stability (e.g. deadlock)stealing

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions