BOINC: My experience with distributed computing projects

Introduction

Hi everyone,

A while ago (as in last year!), I decided I’d see if I could participate in some distributed computing projects. I have a raspberry pi, and a pretty powerful desktop PC at my disposal, so why not? I quickly found that one of the most popular methods of doing this was with a program called BOINC (Berkely Open Infrastructure for Network Computing). BOINC has lots of settings so that your computer can contribute, but doesn’t slow down doing your daily work. As I found out though, the settings don’t always work as well as they should!

How Does BOINC Work?

It’s sort of simple, but also complicated. BOINC is a program that you can download and run on your computer, be it a PC or a Mac, or even a raspberry pi. They even have an android app that will contribute CPU power when you device is charging! The main interface is quite complex, and there are a lot of settings and other informational things to look at:

BOINC's Main Screen
BOINC’s Main Screen
BOINC Computing Preferences
BOINC Computing Preferences
Statistics in BOINC
Statistics in BOINC

Some of the most helpful settings are the ones that specify how much CPU power BOINC can use. You can also set whether it can use it when you’re using the computer. You can also do GPU computing. Unfortunately, setting the amount of CPU power doesn’t work at all for either of my systems; each core was locked at 100%. That’s okay because I’m in Britain, and Britain is cold, though I can at least specify the number of cores it can use on my desktop. The other two settings didn’t work for me either, but I probably set it up wrong or something. I wouldn’t draw any real conclusions from that, knowing me :P.

What does work though, it setting BOINC to automatically stop computing if other processes are using a significant (user-definable) amount of CPU power, so it won’t get in your way too much. This is an excellent feature, especially on my raspberry pi, because even though I overclocked it to 1.05GHz, it’s still quite slow 😉

So Why Would You Do It?

Well, distributed computing allows you to contribute to lots of interesting and useful projects, such as http://www.asteroidsathome.net/ and https://www.worldcommunitygrid.org/research/mcm1/overview.do, and you also also contribute to SETI@Home (Search For Extraterrestrial Intelligence) (http://setiathome.ssl.berkeley.edu/) if you’re into that kind of thing. It isn’t just limited to medical and space-related applications though: you can contribute mathematics research as well, or even things like Enigma@Home (http://www.enigmaathome.net/), which is an attempt to decode three enigma messages that are believed to have never been broken!

First Screen when Adding a Project In BOINC
First Screen when Adding a Project In BOINC
Selecting Which Project To Add in BOINC
Selecting Which Project To Add in BOINC

Please note, though, that not all of the projects work on all systems. Quite a lot of them won’t run on Raspberry Pis, but most seem to run on Windows, macOS, and Linux.

To see what projects are compatible with your system, visit http://boinc.berkeley.edu/projects.php

What are the risks?

This is the more difficult bit. Essentially, what you’re doing when you do distributed computing is letting arbitrary code run on your system (which may be connected to a local network with other systems too). This means if the code is malicious, it could potentially hack the system BOINC is running on, or even worse, your entire home network. Now don’t get me wrong, I’m very pro distributed computing, but there are serious concerns here. Fortunately, the BOINC project has a lot of security features, including:

  • All BOINC programs run as the unprivileged user. This isn’t enabled by default on Windows so that GPU computing works, but it can be enabled.
  • BOINC servers use code signing, so even if someone breaks into the project’s server, they shouldn’t be able to inject arbitrary code onto people’s systems.
  • Virtual Machine sandboxing is also used, but not widely.

Note: If you add projects that aren’t on the official project page (http://boinc.berkeley.edu/projects.php), be especially careful to make sure they are genuine!

For the full details, see the security page here (https://boinc.berkeley.edu/wiki/BOINC_Security).

Conclusion

In conclusion, I love my Raspberry Pi, and what better use for it than distributed computing? I used to use it to host by website while it was in development, but it’s now out (see the other new post)!

I hope you enjoyed this post, and let me know what you thought in the comments 🙂
Hamish

Tagged , , . Bookmark the permalink.

About Hamish McIntyre-Bhatty

I'm a self-employed software developer working on Free Software projects, as well as studying for my degree with the Open University. Being pedantic when it comes to detail is fortunately useful for both of these things! A strong believer in free software, I have a few pay-for programs available under the GPLv3 and enjoy reporting bugs and helping to improve various open source projects, including volunteering at Wimborne Model Town to work on their river control system.

One Response to BOINC: My experience with distributed computing projects

  1. The National Science Foundation has funded a 3-year project by UC Berkeley, Purdue University, and Texas Advanced Computing Center to develop a new framework for BOINC-based volunteer computing, in which volunteers sign up for science goals rather than projects.

Leave a Reply

Your email address will not be published. Required fields are marked *