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
- BOINC is designed to be a free structure for anyone wishing to start a distributed computing project.
- BOINC consists of a server system and client software that communicate with each other to distribute, process, and return workunits.
Server structure
Scientific computations run on participants' computers. After uploading from the user's client to a science investigator's database, the backend server validates and analyzes the results. The validation process involves running all tasks on multiple contributor PCs and comparing the results.
BOINC servers also provide these features:
- homogeneous redundancy
- workunit trickling
- locality scheduling
- work distribution based on host parameters
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, a feeder daemon 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 perform a bitwise comparison. If the validator determines that at least some of the results are valid, it marks the work unit and the valid results as 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 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.
Server design weaknesses
- BOINC Servers are not as simple to deploy as the BOINC Client as they require a large number of scripts.
- The BOINC Server project website does a bad job of storing a compiled database of server-side scripts for those wishing to create a BOINC project.
- The BOINC Server can be deployed on Windows Vista systems but the design structure of Windows makes this difficult and more expensive than just using "off-the-shelf" Linux.
Client structure
These component applications are:
- The program is the core client.
- The core client is a process which:
- * Takes care of communications between the client and the server.
- * The core client also downloads science applications, provides a unified logging mechanism, makes sure science application binaries are up-to-date, and schedules CPU resources between science applications.
- * Although the core client is capable of downloading new science applications, it does not update itself. BOINC's authors felt doing so posed an unacceptable security risk, as well as all of the risks that automatic update procedures have in computing.
- * On Unix, the core client is generally run as a daemon.
- * On Windows, BOINC initially was not a Windows service, but an ordinary application. BOINC Client for Windows, Versions 5.2.13 and higher add, during installation, the option of "Service Installation".
- * Depending on how the BOINC client software was installed, it can either run in the background like a daemon, or starts when an individual user logs in. The software version management and work-unit handling provided by the core client greatly simplifies the coding of science applications.
- One or several science applications. Science applications perform the core scientific computation. There is a specific science application for each of the distributed computation projects which use the BOINC framework. Science applications use the BOINC daemon to upload and download workunits, and to exchange statistics with the server.
- , a GUI which communicates with the core application using remote procedure calls. By default a core client only allows connections from the same computer, but it can be configured to allow connections from other computers ; this mechanism allows one person to manage a farm of BOINC installations from a single workstation. A drawback to the use of RPC mechanisms is that they are often felt to be security risks because they can be the route by which hackers can intrude upon targeted computers.
- The GUI is written using the cross-platform WxWidgets toolkit, providing the same user experience on different platforms. Users can connect to BOINC core clients, can instruct those clients to install new science applications, can monitor the progress of ongoing calculations, and can view the BOINC system message logs.
- The BOINC screensaver. This provides a framework whereby science applications can display graphics in the user's screensaver window. BOINC screensavers are coded using the BOINC graphics API, Open GL, and the GLUT toolkit. Typically BOINC screensavers show animated graphics detailing the work underway, perhaps showing graphs or charts or other data visualisation graphics.
- Some science applications do not provide screensaver functionality. In this circumstance the screensaver shows a small BOINC logo which bounces around the screen.
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 | PCs and servers | 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 | PCs and servers | 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 | ARM | Raspberry Pi | Very few client applications available |
Android | ARM, MIPS, or IA-32 | Smartphones and tablets | Few client applications available. Some projects may require unofficial clients |