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

BOINC utilizes more resources than allowed by the settings #5997

Open
AenBleidd opened this issue Jan 8, 2025 · 1 comment
Open

BOINC utilizes more resources than allowed by the settings #5997

AenBleidd opened this issue Jan 8, 2025 · 1 comment

Comments

@AenBleidd
Copy link
Member

AenBleidd commented Jan 8, 2025

Describe the bug

With the combination of multithreaded and singlethreaded applications in queue, sometimes BOINC client utilizes more cores than allowed by settings.
This happens when multithreaded task has lower priority than the singlethreaded task(s), and thus when it's scheduled to run, there are already other running applications that leads to the overuse of the available resources (sometimes even more cores than exist of the system).

Steps to reproduce

  1. Add several projects with both singlethreaded and multithreaded applications (e.g. Einstein@home and MilkyWay@home).
  2. Wait for several days to have priority balanced (this also could be achieved by changing the settings, but it depends of the available resources and internal priority, so it's quite hard to provide 100%-reproducible steps.

Expected behavior

BOINC client doesn't use more CPU resources than allowed by the settings.

Screenshots

Image

System information

I have this reproducible on Windows with BOINC 8.0.2 but this is quite an old issue.

Additional context

No response

@davidpanderson
Copy link
Contributor

Suppose there's a 16-core machine,
and it has two jobs: one uses 1 thread, the other uses 16.
The client can either
a) enforce the CPU limit; 15 cores will be idle half the time.
b) don't enforce the limit: run 17 threads all the time.

Which is better?
We've been back and forth on this.
My impression has been that a) produces more volunteer complaints than b).
So currently we do b).

Note: in this case there are 14 1-thread jobs,
so the choice is between a) having 2 idle cores half the time
and b) running 30 threads.
In this case a) seems preferable.
But where is the transition point?

Note 2: you might ask, why not fetch some more 1-thread jobs,
enough to use all the cores?
This would be a major change to the work-fetch algorithm.
Also currently there's no way to asks projects for only 1-thread jobs.

So: I'm not sure how to proceed. Suggestions welcome.

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

2 participants