offset \ˈȯf-ˌset\ noun

a force or influence that makes an opposing force ineffective or less effective

BOINC on DigitalOcean

I already described the purpose of BOINC in the post titled Contributing to society. To expand a bit on it, but still keep it rudimentary, BOINC works by crunching numbers for a project of your own choosing. It will wait for the system to get idle and activate. If you're doing something else, it will wait. This enables you to use your system as usual and when you're doing nothing, it will progress the project a bit. For BOINC to work, you have to have a working internet connection so it can download the files it needs to process before returning the result back to the server. This is the basis of grid computing.

If you're on DigitalOcean or a similar provider, you pay money to have your instance up and running. Most of the time, for a small user, the instance will idle. It would be better utilized if it was doing something. For the record, this instance is processing some data but this blog itself is static. The utilization of the system is miniscule as can be seen in the usage graphs on the DigitalOcean account page. To get the most out of it and contribute to the society, you can put your system to do some work.

This tutorial is written for the Ubuntu droplet, but your setup might differ. The ideas are taken from Scott Miller and Logan Marchione.

For starters, I have been running BOINC for some time so I already have an account. The same goes for the droplet so I don't have to go through initial setup for those. You can refer to the official documentation on both sides.

I installed a BOINC client via terminal. Since the droplet is headless, I don't need a GUI.:

sudo apt-get install boinc-client

I already have an account crunching numbers for the Malaria disease behaviour so I need the account key from it. I can see the key on the account page.


/media/images/boinc1.png

Using that account key, I can attach the droplet instance to it.:

boinccmd --project_attach http://www.malariacontrol.net/ account_key

When you attach a project like that, BOINC will start working immediately. By default, it will use 100% of the CPU which is bad for the other VMs running on the same KVM. You must not be a "noisy neighbour". Otherwise you will most likely get banned from your DigitalOcean account. YMMV at this point since you might be using your droplet instance for other things. I'll set up my limit to 65% since I'm not using a lot of CPU and I've asked their support about running BOINC. The 65% came as a recommendation from them.

For this to take effect, on my account page, under computing preferences, I'll set up separate settings for this machine. I add the profiles for "work" and set the CPU usage to 65%. Idle detection is somewhat problematic, so I'll set the suspend work unrestricted.


/media/images/boinc2.png

And then, when checking the machines under "computers on this account" details, I can associate the droplet instance with the new profile with the location setting.


/media/images/boinc3.png

Next time it connects, it will pick up those settings. However, you can update and restart the process with the following commands.:

boinccmd --project http://www.malariacontrol.net/ update
sudo service boinc-client restart

Soon enough, the results should be visible on the account pages for both BOINC and DigitalOcean. Happy crunching.