BOINC client–server technology

BOINC client–server technology refers to the model under which BOINC works. The BOINC framework consists of two layers which operate under the client–server architecture. Once the BOINC software is installed in a machine, the server starts sending tasks to the client. The operations are performed client-side and the results are uploaded to the server-side.

Design and structure of BOINC

Server structure

A major part of BOINC is the backend server. The server can be run on one or many machines to allow BOINC to be easily scalable to projects of any size. BOINC servers run on Linux based computers and use Apache, PHP, and MySQL as a basis for its web and database systems.

Scientific computations are run on participants' computers and results are analyzed after they are uploaded from the user PC to a science investigator's database and validated by the backend server. The validation process involves running all tasks on multiple contributor PCs and comparing the results.

BOINC servers also provide these features

The server consists of two CGI programs and (normally) five daemons, written in C++. Computations to be performed by clients are called workunits. A result describes an instance of a workunit, even if it hasn't been completed. A project does not explicitly create results; the server creates them automatically from workunits.

The scheduler CGI program handles requests from clients, receiving completed results and sending new work to compute. The scheduler doesn't get available results directly from the database. Instead, there is a feeder daemon that loads tasks from the database, and keeps them in a shared memory block, which the scheduler reads. The feeder periodically fills empty "slots" in the shared memory block after the scheduler has sent those results to a client.

When all the results from a workunit are completed and returned, the validator checks them. One popular method would be to compare the results against each other. The validator can have custom project code to do fuzzy comparison between results, or it can be just a bitwise comparison. If the validator decides that at least some of the results are valid, the work unit and the valid results are marked valid, users who returned legitimate results are granted credit for it, and a "canonical result" is chosen. If the validator cannot determine which results are valid or declares all of the results as invalid, new results can be generated and the cycle is repeated until the validator can determine which results are valid.

Next, the assimilator daemon processes the canonical result using project-specific code. For example, some projects may parse the file and store information in a database, others may just copy the file somewhere else. An assimilator may also generate more workunits based on the returned data.

The file_deleter daemon deletes output files after the assimilator has processed them, and deletes input files that aren't needed anymore.

The transitioner daemon handles state transitions of workunits and results. It also generates results from workunits when they are first created, and when more are needed (for example, if a result turns out invalid).

Server design weaknesses

Client structure

A screenshot of the BOINC manager application

BOINC on the client is structured into a number of separate applications. These intercommunicate using the BOINC remote procedure call (RPC) mechanism.

These component applications are:

A BOINC network is similar to a hacker/spammers botnet. In BOINC's case, however, it is hoped that the software is installed and operated with the consent of the computer's owner.

Since BOINC has features that can render it invisible to the typical user, there is risk that unauthorized and difficult to detect installations may occur. This would aid the accumulation of BOINC-credit points by hobbyists who are competing with others for status within the BOINC-credit subculture.

Client platforms

Operating system Hardware Examples Status
Linux IA-32 and AMD64 PCs and servers Most Linux projects require 64-bit Linux. 32-bit Linux projects could require installation of 32-bit libraries if they are run on 64-bit Linux.
Mac OS X PowerPC, IA-32, and AMD64 Different BOINC clients are available for PowerPC, IA-32, and AMD64. The AMD64 client is capable of running IA-32 applications if the BOINC server supports this.
Windows IA-32 and AMD64 Different BOINC clients are available for IA-32 and AMD64. The 64-bit client will run 32-bit applications if the BOINC server supports this.
Raspbian (Linux) ARM Raspberry Pi Very few client applications available
Android (Linux) ARM, MIPS, or IA-32 Smartphones and tablets Few client applications available. Some projects may require unofficial clients(NativeBOINC)

See also

References

This article is issued from Wikipedia - version of the Wednesday, February 03, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.