I'm thinking about taking on this
Client
- Change prefs from "if CPU load > X, suspend works"
to "if CPU load is X, use N-X CPUs".
The goal is to run ans much boinc as possible without boinc pushing the load average over threshold. I was thinking along the lines of
load = 0;
load2 = 0;
tick(cpu,time)
{
usage = cpu/time;
x = exp(-time/TIME_CONSTANT);
load = x * load + (1 - x) * usage;
load2 = x * load2 + (1 - x) * usage * usage;
sd = sqrt(load2 - load * load);
if (load > threshold + sd)
if(boinc_running())
stop_one_boinc();
if (load < threshold - 2 * sd)
if (boinc_waiting())
start_one_boinc();
}
In theory I know how to get (cpu,time) on ubuntu/debian mac and windows but I don't have a Mac development environment and haven't done windows system programming in decades.