Distributed Computing with BOINC

Posted on Jul 13, 2022

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 default, systemctl start boinc-client, and probably enable it with, systemctl enable boinc-client to start automagically.

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 group sudo usermod -G -a boinc. You can also pass the password in that file via the --password parameter.

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/

If you want to detach from a project (make sure you’re all caught up before doing):

$ boinccmd --project URL detach

Due to electric prices being insane, i only do CPU crunching.

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).

Happy crunching!

=Jinxd=

Stats on WCG