Tag Archives: idprio

BOINC projects using 100% of CPU on FreeBSD

uFluids doesn’t send to my platform. Quantum Monte Carlo does. And I’ve decided to give Rosetta@Home one more shot.

Reason? Oh, the reason is great news.

As I’ve written before, some projects somehow take up 100% of processor time, even though the settings unambiguously specify 50%. The reason for this, as I have accidentally found out by fooling around with Wine-emulated BOINC, is idprio.

Idle-time priority is being set to 31 in the /usr/local/etc/rc.d/boinc script. To a logical mind, this would mean that BOINC would only run its 50% share in the idlest of time, when no other process wants it. In reality, BOINC projects get 100% of idle time.

I guess this might be related to the fact that BOINC projects are run as separate threads. On the other hand, this might just be an idprio issue.

Right now, QMC@Home is running with priority nice 19, which it set by itself. The “Show graphics” button doesn’t do anything, probably graphics aren’t installed properly in my system.

It will take 150 hours to finish this workunit. I’d rather test result compatibility on a faster project.



Just for the record. A lot of people (that is, I) are having trouble with starting boinc_client without super-user priviledges. When trying to run

/usr/local/etc/rc.d/boinc start

an error is printed:

idprio: idprio: Operation not permitted

This is because the /usr/local/etc/rc.d/boinc uses idprio to set the idle priority of boinc_client to the lowest possible. See for yourself:

idprio 31 su - ${boinc_user} -c "${program_path} ${boinc_flags} >/dev/null &"

Now, notice the fact that the boinc_client itself is not run under root priviledges. Here, su is used to switch to whatever is set by the ${boinc_user} variable – by default, it happens to be boinc.

So, how do you run boinc_client? Why, under root, of course. Not directly though, but by executing this boinc start script.

Hint: the home directory of user boinc is /var/db/boinc/. See for yourself: try

sudo su boinc

Setting up BOINC is described nicely here.

P.S. They should put the Get up-to-date ports tree! sentence in bold, though.