BOINC client–server technology[1] refers to the model under whichBOINC works. The BOINC framework consists of two layers which operate under theclient–serverarchitecture. Once the BOINC software is installed in a machine, theserver starts sending tasks to theclient. The operations are performedclient-side and the results are uploaded to theserver-side.
A major part of the BOINC system is the backend server. The server can run on one or many machines to allow BOINC to scale easily to projects of any size. BOINC servers run on Linux-based computers and useApache,PHP, andMySQL for their web anddatabase systems.
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:
The server consists of twoCGI programs and (normally) fivedaemons, written inC++. Computations to be performed by clients are calledworkunits. Aresult 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, afeeder daemon loads tasks from the database and keeps them in ashared-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, thevalidator 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 grantedcredit for it, and a "canonical result" is chosen. If the results don't agree, or if one of the results is not reported by its deadline, the server generates an additional instance of the job, and sends it to a third host. This is repeated until a quorum of matching results is found or a limit on the number of instances isreached.[3]
Next, theassimilator 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.
Thefile_deleter daemon deletes output files after the assimilator has processed them, and deletes input files that aren't needed anymore.
Thetransitioner 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).
BOINC on the client is structured into a number of separate applications. These intercommunicate using the BOINCremote procedure call (RPC) mechanism.
These component applications are:
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.
Operating system | Hardware | Examples | Status |
---|---|---|---|
Linux | IA-32 andAMD64 | 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. |
macOS | X86-64,ARMv8 | Different BOINC clients used to be available for PowerPC, IA-32, and AMD64. The AMD64 client was capable of running IA-32 applications if the BOINC server supports this. BOINC Manager 7.16.13 is for both X-86-64 and ARMv8. | |
Windows | IA-32 andAMD64 | 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, orIA-32 | Smartphones and tablets | Few client applications available. Some projects may require unofficial clients(NativeBOINC) |