You can do your part to help tackle such global issues as disease control and climate prediction simply by volunteering your computer's resources to solve complex computational problems. The concept, known as volunteer computing, benefits universities and research institutions around the world, who conduct projects that often have humanitarian goals, such as predicting and controlling the spread of malaria in Africa.
To get involved, you download and install client software, which periodically downloads tasks for your computer to process using otherwise idle CPU cycles, memory, and disk space. Once a task has been completed, your computer sends the results back to the project's coordinating computers to form part of the greater project solution. By using computers from around the world, the projects involved gain massive computing power that would otherwise be well beyond their reach, and as a result, achieve their goals far more quickly. This form of computing was made popular with the SETI@home and Folding@home projects, but many other projects are now available, with goals as varied as finding cures for human diseases to rendering 3-D animations. Let's look at some of the options that are available for volunteer computing on Linux.
The Berkeley Open Infrastructure for Network Computing (BOINC) is a full platform for distributed computing that includes both advanced client software to enable users to participate in volunteer computing and server software for organizations who want to conduct such projects. You can even set up your own volunteer computing project if you have a Linux server and the skills and manpower to get it going. Many volunteer computing projects around the world use the BOINC platform, including the World Community Grid. The list of available BOINC projects and World Community Grid projects is long enough to satisfy anyone's desire to accomplish something worthwhile.
To run the BOINC client, you need at minimum a 500MHz Pentium processor, 64MB of RAM, and 50MB of disk space. The BOINC client is available from the repositories of some Linux distributions, such as Gentoo, Fedora, Debian, and Ubuntu. In Debian and Ubuntu, use Synaptic to install the boinc-client and boinc-manager packages, or type on the command line:
sudo apt-get install boinc-client boinc-manager
This command installs the BOINC client as a service that runs in the background. If the BOINC client is not in your repository, you can download it from the Web site; follow the instructions in the release notes to install it.
When installed on Ubuntu, the BOINC manager can be started from Applications -> Accessories -> BOINC Manager. Unlike the Windows and Mac versions of the BOINC client, the Linux version doesn't come with the option of a screensaver. All work is done silently and unobtrusively in the background, whether your screensaver is running or not.
You join a project by running the BOINC manager, then selecting Advanced View -> Advanced -> Attach to Project. Enter the URL of the project you want to join, your email address, and a password. If all goes well, you will be joined to the project. Some initial project tasks will be downloaded, and your BOINC client will start processing.
Configure how your BOINC client should use your computer's resources by navigating to the Preferences dialog in the BOINC manager. Here you can limit the hours when the client runs, set how much processor time it should use, set limits on how much disk space and memory the client is allowed to use, and determine how much network traffic it should generate.
You can use an account manager to donate your computer's resources to work on more than a single project at a time. Two are available: BOINC Account Manager and GridRepublic. An account manager is a Web site that allows you to manage your BOINC client preferences, choose which projects you participate in, and view statistics on the work your clients have performed. You can also set up your account to run on multiple computers, each with a different set of preferences for how and when resources will be used.
Once you set up your account manager, you can configure the local BOINC manager on your computer to connect to your account manager. The BOINC client on your computer then uses the preferences you set for it in the account manager to determine how it should run. This is great if you install the BOINC client on both your work computer and home computer, because it gives you a central place to manage how each computer's resources are used and to view how you're contributing to the overall project's progress.
I configured my BOINC client to run only after three minutes of inactivity, so it doesn't interfere at all with my normal work. Even after it starts running, I am still able to use OpenOffice.org Writer and the GIMP, browse the Web, and play music with no noticeable performance loss. Once my processor and memory demands reach a certain threshold, the BOINC client puts itself into a suspended state until it next detects three minutes of idle time. I wouldn't even notice it's there were it not for my system monitor panel applet showing increased processor usage while the BOINC client is running.
The Folding@home client for Linux is a command-line-only application, offering no user interface or screensaver options as it does for the Windows and Mac versions of its client. It runs only a single project, the aim of which is "to understand protein folding, misfolding, and related disease." Installation involves downloading the binary, giving it executable permissions, and running it. The Folding@home wiki offers excellent instructions.
The first time you run the client, it asks you a series of configuration questions, including how much memory it should use and what priority it should run at. It then downloads the first of its tasks and starts processing them.
The Folding@home client is not as configurable as the BOINC client, and on my machine, it runs continuously, no matter what demands I place on my computer. It doesn't go into a suspended state when I use processor- or memory-intensive applications. However, I notice no discernable performance degradation while performing such everyday tasks as word processing, Web browsing, and listening to music.
The distributed.net client is also a command-line-only application on Linux. It participates in only two projects: finding optimal Golomb rulers (see project for the complicated explanation), and breaking the RC5-72 encryption algorithm.
When you first run the client after installation, you're presented with a series of configuration options. Here you provide your email address to identify yourself within the project, determine whether the client should run when your computer is using batteries, create a list of applications that should cause the client to pause when they're running, set up the client priority, determine the number of processors to use, and configure the networking options, amongst others.
According to my system monitor, the distributed.net client uses all available cycles of both of my processing cores. It maxes out both cores and doesn't go into a suspended mode when I start using applications. Surprisingly, when my system monitor reports the distributed.net client using 95-100% processor usage, I don't notice any degradation in my overall machine performance while using everyday desktop applications. However, the Baobab disk usage analyzer takes longer than normal to scan my file system.
Volunteer computing gives external applications access to your computer's resources, so you need to be aware of any security implications this might involve. Folding@home assures its users that it takes all possible measures to maintain security, including using 2,048-bit digital signatures on all data entering and leaving your computer. distributed.net, on the other hand, openly admits that its clients have been maliciously used as Trojans to infect other computers. BOINC's page on security issues describes some of the possible dangers you should be aware of. The company tries to address each of these issues, and it uses public key encryption to protect against viruses. However, BOINC also admits that "participants must understand that when they join a BOINC project, they are entrusting the security of their systems to that project." Obviously, it is beneficial for you to research the clients and projects you wish to join before participating.
For further information on volunteer computing, check out the GridCafe site, which discusses other forms of distributed computing, including some commercial options.
All of the clients discussed in this article allow you to participate in volunteer computing on Linux. The Folding@Home client contributes work to a noble cause: research toward the treatment of protein-related disease. Of the clients listed here it is the least configurable, but on my computer, it went about its work with little impact on my desktop computing experience. The distributed.net client focuses on solving mathematical problems. I had it set up to use both of my processor cores, and it used both intensively, but still allowed me to use my day-to-day applications with little noticeable performance impact. For ease of installation and use, you can't beat the BOINC client. Its availability in some existing package repositories means you can install it in a supported configuration with a minimum of fuss. It features a user interface to manage client configuration options, and it allows users to set it up to suit the resource limitations of their computer. Finally, the many projects available for this client make it easy to begin participating in volunteer computing.