Posts by Mark Tall

1) Message boards : BOINC client : bug in idle detection (Message 21706)
Posted 10 Dec 2008 by Mark Tall
Post:
BOINC is designed to make the load level 100% in normal situations so that could be a conflict. Also I don't think windows differentiates between normal processes and "nice" processes like *nix does so any kind of load level detection would cause problems in windows.


Based on my experience, the load level includes both normal and "nice" processes under Linux, so there is no conflict in terms of different functionality under Windows.

It's also not a problem that Boinc puts the load level to 100% per core. We are more interested if the load level considerably exceeds 100% (e.g. >150%), indicating that Boinc is running while a heavy-duty user program is also running. This is precisely when Boinc should suspend all computation.

As an example, let's say there has been no user activity for 30 minutes, but all eight cores on our machine are running user jobs. The load level is 800% (100% per core). The current version of Boinc thinks that nobody is using the machine, and hence starts its computation on all eight cores, raising the load level to 1600% (whether its niced or not). Boinc can already detect the number of cores, so normalising the load level by the number of cores is easy, and hence detection when computation should be suspended is also easy.


2) Message boards : BOINC client : bug in idle detection (Message 21697)
Posted 10 Dec 2008 by Mark Tall
Post:

c) Any platform specific additions to BOINC are a bit difficult to implement, because BOINC is a cross-platform application. This means that you should be able to download one source code and then directly compile it for Linux, or Windows or the Mac. When parts of BOINC are then dependent on a certain platform, this becomes difficult to maintain.


I understand the cross-platform maintanance issues (have to deal with them myself as well). However, the "load level detection" functionality brings a major benefit that outweighs the minor maintanance issues. Furthermore, it is not that difficult to implement under Linux and is likely to work under MacOS X as well.

method 1: getloadavg(). Present in glibc, Solaris and BSDs (hence likely in MacOS X).
method 2: /proc/loadavg (linux specific)

For cross-platform compilation, a wrapped version of getloadavg() can be used to abstract the functionality -- e.g. boinc_getloadavg(), with platform specific versions #ifdef'ed. Under Windows boinc_getloadavg() can either do nothing or call a suitable Windows function (there must be something similar).
3) Message boards : BOINC client : bug in idle detection (Message 21679)
Posted 8 Dec 2008 by Mark Tall
Post:

Coming in 6.4.x you will be able to define exclusive apps that when running will cause BOINC to suspend processing.


Why not just detect the load level ? Surely this is a more general solution than detecting particular programs.
4) Message boards : BOINC client : bug in idle detection (Message 21664)
Posted 7 Dec 2008 by Mark Tall
Post:
Hello,

A few days ago I've installed the boinc client (Linux) to use spare capacity on one of our number crunching machines. However, it seems that the boinc client doesn't properly detect the idleness of a machine -- it starts processes even when the load level is high.

The number crunching machine is used as follows: one or more users logs on, starts a job (on one or all cores) and then logs out. The jobs may last from one hour to one week.

Boinc seems to think that since no one is logged on, it can run. However, the reality is that all cores on the machine are being used by user jobs.

As a temporary work around I've reniced boinc to 20, so that processes with higher priority take more cpu time. I've also written a script that periodically checks the load level and freezes (kill -STOP) all boinc processes until the load level drops below a pre-defined limit.

However, the above solutions aren't entirely satisfactory -- i.e. they're hacks rather than addressing the cause of the problem. Is there a way to properly detect the load level within the boinc client itself ?





Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.