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

Project Priorities #5589

Open
sr1gh opened this issue Apr 18, 2024 · 2 comments
Open

Project Priorities #5589

sr1gh opened this issue Apr 18, 2024 · 2 comments

Comments

@sr1gh
Copy link

sr1gh commented Apr 18, 2024

Currently, projects use a resource share to determine how to get work. If the resource share is greater than zero, the project sends enough work to fill the user set work buffer if there is enough work available. If the resource share is zero, the project only sends enough work to use the available CPUs and GPUs, and only sends work if there is no work available from projects with a resource share greater than zero. This is good, but there is no way to prioritize projects so that work is received for one or more projects before other ones. If someone only wants to get work from a project only if there isn't any work from other projects, the resource share can be set to zero, but if multiple projects are set to zero, work is received from all of them equally.

With project priorities, projects can be prioritized in groups, using resource shares to divide the work in each priority group. Here is an example:

Project A (CPU Only): Resource share = 100 (25%), Priority = 1
Project B (CPU/GPU): Resource share = 100 (25%), Priority = 1
Project C (CPU Only): Resource share = 100 (25%), Priority = 2
Project D (CPU Only): Resource share = 50 (12.5%), Priority = 2
Project E (CPU/GPU): Resource share = 50 (12.5%), Priority = 2
Project F (CPU Only): Resource share = 0, Priority = 2
Project G (CPU/GPU): Resource share = 0, Priority = 3
Project H (CPU/GPU): Resource share = 0, Priority = 4
Project I (CPU/GPU): Resource share = 0, Priority = 4

Work would be received from Projects A and B first. If there is no work for Project B, get GPU work from Project E, because it is the next priority project with GPU work. If none is available, get from Project G, then H or I.
If there is no work for Project A or B, get from Projects C, D, and E, then F. If no work is available from these, then G, and then H or I.

Resource share would still be global, not per priority, since work could be received from projects of different priorities.

@AenBleidd
Copy link
Member

@sr1gh, resource share works a little bit different, please read the docs: https://github.com/BOINC/boinc/wiki/ClientSched#project-scheduling-priority

@davidpanderson
Copy link
Contributor

Nice idea but the implementation would be complex; probably not worth doing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Backlog
Development

No branches or pull requests

3 participants