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

Implement solution to infeasible weights problem #129

Merged
merged 2 commits into from
Feb 9, 2024
Merged

Conversation

Byte-Lab
Copy link
Contributor

@Byte-Lab Byte-Lab commented Feb 6, 2024

As described in this paper, there is an open problem in load balancing
called the "infeasible weights" problem. Essentially, the problem boils
down to the fact that a task with disproportionately high load can be
granted more CPU time than they can actually consume per their duty
cycle.

This patch implements a solution to that problem, wherein we apply the
algorithm described in this paper to adjust all infeasible weights in
the system down to a feasible wight that gives them their full duty
cycle, while allowing the remaining feasible tasks on the system to
share the remaining compute capacity on the machine.

Signed-off-by: David Vernet <void@manifault.com>
@Byte-Lab
Copy link
Contributor Author

Byte-Lab commented Feb 9, 2024

Updated to address bug where we'd sometimes fail to find an infeasible threshold.

Copy link
Contributor

@htejun htejun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't followed each step but generally looks good to me. Left a couple minor comments.

scheds/rust/scx_rusty/src/main.rs Outdated Show resolved Hide resolved
scheds/rust/scx_rusty/src/main.rs Outdated Show resolved Hide resolved
As described in [0], there is an open problem in load balancing called
the "infeasible weights" problem. Essentially, the problem boils down to
the fact that a task with disproportionately high load can be granted
more CPU time than they can actually consume per their duty cycle.

This patch implements a solution to that problem, wherein we apply the
algorithm described in this paper to adjust all infeasible weights in
the system down to a feasible wight that gives them their full duty
cycle, while allowing the remaining feasible tasks on the system to
share the remaining compute capacity on the machine.

[0]: https://drive.google.com/file/d/1fAoWUlmW-HTp6akuATVpMxpUpvWcGSAv/view?usp=drive_link

Signed-off-by: David Vernet <void@manifault.com>
@Byte-Lab Byte-Lab merged commit 1c00de9 into main Feb 9, 2024
1 check passed
@Byte-Lab Byte-Lab deleted the infeasible_weights branch February 9, 2024 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants