Distributed Computing with BOINC
If you’ve never heard of BOINC, it’s short for Berkeley Open Infrastructure for Network Computing:
(BOINC, pronounced /bɔɪŋk/ – rhymes with “oink”) is an open-source middleware system for volunteer computing and grid computing. Originally developed to support the SETI@home project,
..according to Wikipedia. In short, it is software enabling you to connect to projects and volunteer your computer to do work. There are many projects out there, some more useful than others. I personally do not care to search for alien life, but I like to support projects that focus on health, genetics and the environment. I’ve been participating in the World Community Grid project (WCG) since around 2011. I won’t get into details on projects, but just want to show how you can quickly get up and running, if you wish donate some CPU or GPU cycles for the benefit of science.
I believe most distros have it packaged already, and if you are running arch (like me):
$ sudo apt install boinc-nox
*NOTE: this is the non-gui version. There is a GUI for BOINC (just ‘boinc’), but I do not use it personally.
..and yes, there’s a Windows and Mac version as well, unsure if there is a cli version.
The command line client is
boinccmd. On archlinux you probably need to start the service, as it does not by
systemctl start boinc-client, and probably enable it with,
systemctl enable boinc-client to
Check if everything is working with something like
$ boinccmd --get_project_status
As you do not have any projects, it will not show anything too useful, obviously. Now it’s time to find a project. Once you have done so, you likely need to create an account with the project. Some can be done via the client calls, others you have to sign up via the website. The syntax for doing it via command line is:
$boinccmd --create_account URL email passwd name
Once signed up, you need to retrieve a token, which is used to access or attaching to projects. You can usually find them on the profile pages, or look it up via the client:
$ boinccmd --lookup_account URL email password
Make sure you pick the projects that suits you (some sites has multiple you can pick on the profile pages, or just sign up for all) and attach to the project:
$ boinccmd --project_attach URL auth
auth above is the token you retrieved earlier).
If all that worked, then check the logs that all is running with
journalctl -f -u boinc-client.
Can't get RPC password: gui_rpc_auth.cfg not found. Try reinstalling BOINC.
If you receive the error above it’s likely not finding a password file it needs to talk
to the local service
(/var/lib/boinc/gui_rpc_auth.cfg). It contains a password for the service
and you need to make sure your user can read it, and that it finds it. I tend to symlink to it in
my $HOME dir. It’s owned by
boinc:boinc by default, so you might want to add yourself to that
sudo usermod -G -a boinc. You can also pass the password in that file via the
Once running, the client will ask the project(s) for work, and if any available, it will download image files, and start processing. When completed, it will upload the results back to the project. You will only get credit for completed work (results returned). Most workloads have a deadline, so you may not get credit for partial work.
You can check your current tasks with:
$ boinccmd --get_tasks ======== Tasks ======== 4) ----------- name: 211747_Hs_T002731-C10orf125_wu-182_16580131451_1 WU name: 211747_Hs_T002731-C10orf125_wu-182_16577801451 project URL: http://gene.disi.unitn.it/test/ received: Thu Jul 14 12:57:27 2022 report deadline: Tue Jul 19 12:57:26 2022 ready to report: no state: downloaded scheduler state: scheduled active_task_state: EXECUTING app version num: 110 resources: 1 CPU estimated CPU time remaining: 10524.318852 elapsed task time: 215.117988 slot: 0 PID: 20226 CPU time at last checkpoint: 183.557300 current CPU time: 211.647100 fraction done: 0.018333 swap size: 55 MB working set size: 53 MB
There are many options you can tweak, to tell boinc how much time and cpu/gpu to use, when to run, and so forth. On the profile pages, there are usually 3 profiles (Home, Work, Default), that you can tweak to your preference, and apply to client(s). Most projects will support windows and Linux, and some android and raspberry PI (arm). I personally never ran this on my phone, as it drains the battery too much and just keeps it running hot. I do run this on a few couple of Pis, as well as a couple of x86 systems.
Projects I’m currently contributing to:
Rosetta@Home master URL: https://boinc.bakerlab.org/rosetta/ TN-Grid master URL: http://gene.disi.unitn.it/test/ World Community Grid master URL: https://master.worldcommunitygrid.org/ SiDock@Home master URL: https://www.sidock.si/sidock/
As of August 3, WCG is still not giving out work units after the migration to Krembl Institute.
If you want to detach from a project (make sure you’re all caught up before doing):
$ boinccmd --project URL detach
Feel free to use my recruitment link if you want to join WCG.
If you’d like to join a team, I created a
fediverse team here. (the recruitment link
will add you to it as well).