Introduction to BOINC
Berkeley Open Infrastructure for Network Computing (BOINC) is a
software platform for public-participation distributed computing
projects like distributed.net and SETI@home. BOINC supports applications
that can be divided into large parallel parts with few data
dependencies; it is not presently intended for fine-grained parallel
applications.
The features of BOINC include:
-
Multiple Independent Projects
BOINC allows multiple independent projects to share
participants. Participants download a single core client program,
which in turn downloads and executes project-specific executables.
Participants can control how their resources are divided among the
projects and which projects they participate in. Participants may also
control how many applications are running at once, thereby taking
advantage of multiple CPU systems. Since the projects are independent,
any downtime for one project will merely result in temporary extra
processing power for another.
-
Comprehensive Security
All file transfers to the host computer are validated with an
MD5 checksum, and all executable files are signed with RSA
public/private key encryption (1024 bit default). See the security page for more details.
-
Host Work Caching
The BOINC core client will download enough work to keep the host
busy for a user specifiable amount of time. This will allow the client
to continue to function during project downtimes, as well as decrease
the frequency of connections to servers.
-
Multiple Platform Support
The BOINC core client can run on almost any platform (Mac OS X,
Windows 95 and later, Linux and other Unix systems) and provides OpenGL
based graphics support on Mac OS X, Windows 95 and up, and X Windows.
-
Multiple Server Support
The BOINC architecture supports multiple scheduling and data
servers. If one server is temporarily unavailable, clients will
automatically try alternate servers. If all servers are unavailable,
clients will perform random exponential backoff to avoid flooding the
server.
-
Open Source
BOINC is fully open source and is distributed under the Mozilla
Public License version 1.0. Under this license, projects that utilize
BOINC are not required to release the source code of their project
specific applications, though they are encouraged to do so. This means
BOINC is well suited for private, commercial, or public distributed
computing projects.
-
Support for Large Data Computations
BOINC supports applications that produce or consume large
amounts of data (on the order of gigabytes). It allows data distribution
and collection to be spread across many servers, and it allows
participant hosts to do large data transfers unobtrusively. Users are
able to specify maximum storage usage so that BOINC doesn't fill up
their disk. BOINC also handles network disconnections and allows
user-specifiable network bandwidth restrictions.
-
Extreme Resource Requirement Support
BOINC supports applications with extreme requirements for
memory, disk, cache or other resources. Work is dispatched only to hosts
able to handle it.
-
Application Program Interface
An Application Program Interface (API) is provided to
application developers to ease integration with BOINC. See the API page for details.
-
Support for Applications in any Language
BOINC applications can be developed in any language (C++,
Fortran, Perl). An application can consist of several files (e.g.
multiple programs and a coordinating script). New versions of
applications can be deployed without requiring participants to download.
-
Web Based User and Administrative Interfaces
A set of PHP scripts is included to provide interfaces for user
and administrative tasks. These include preference editing, account
creation and user information display.
-
Database and Server Architecture
BOINC provides a SQL schema, database functions, a simple server
architecture, web based user interfaces and server administration tools.
Each project must provide and maintain its own server systems and
backend result processing but these systems can be set up easily and
require only open-source components (MySQL, PHP, Apache, and Linux). The
BOINC scheduling server also supports FastCGI for enhanced server
performance.