Skip to content
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

scx_rusty: Make load balancing decision executed reliably #611

Open
htejun opened this issue Sep 5, 2024 · 4 comments
Open

scx_rusty: Make load balancing decision executed reliably #611

htejun opened this issue Sep 5, 2024 · 4 comments
Assignees
Labels
bpf help wanted Extra attention is needed scx_rusty

Comments

@htejun
Copy link
Contributor

htejun commented Sep 5, 2024

Right now, after the userland loadbalancer makes migration decisions (move task X to domain N), the decision is recorded in the lb_data map which is a map from pid_t to destination domain number. Then, on the enqueue path, rusty_enqueue() checks whether the task has a matching entry in lb_data and if so executes the requested migration. This means that the application of LB decisions isn't reliable - it depends on the task being migrated running in the following period. Otherwise, the decision is ignored.

While this works okay in practice as the LB just keep retrying until the domains are balanced, this makes the behavior less predictable. It'd be great to make the load balancing decisions executed reliably. Maybe test_run can be used to execute migrations immediately - see set_power_profile() in scx_lavd for an example.

@htejun htejun added the help wanted Extra attention is needed label Sep 5, 2024
@vax-r
Copy link
Contributor

vax-r commented Sep 25, 2024

Is it still available ? If so I would love to help

@vax-r
Copy link
Contributor

vax-r commented Oct 31, 2024

The draft PR is ready but I've encountered a problem which might need some help. The machine I'm running on now is using AMD Ryzen 7 5700X3D 8-Core Processor and under rusty, it has only 1 NUMA node and 1 domain, so the load balancing step would be stopped before it can actually do anything. That way I can't test whether my change has made some improvement or not, maybe someone would be so kind to test the PR for me ?

If that would do I'll send a draft PR first and see what's the testing result, otherwise I'll try to think of other ways to test it.

@htejun
Copy link
Contributor Author

htejun commented Oct 31, 2024

You can use -C option to define arbitrary LB domains, which should be sufficient for testing.

@vax-r
Copy link
Contributor

vax-r commented Nov 3, 2024

You can use -C option to define arbitrary LB domains, which should be sufficient for testing.

Thank you ! I can test it now and found some problems, I'll figure it out and send a PR later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bpf help wanted Extra attention is needed scx_rusty
Projects
None yet
Development

No branches or pull requests

3 participants