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:
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 [email protected] (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 [email protected] (http://www.enigmaathome.net/), which is an attempt to decode three enigma messages that are believed to have never been broken!
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 they they are genuine!
For the full details, see the security page here (https://boinc.berkeley.edu/wiki/BOINC_Security).
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 🙂