RT-BOINC stands for a Real-Time BOINC
It was designed for managing highly-interactive, short-term, and massively-parallel
real-time applications. We designed and implemented RT-BOINC on top of BOINC server source codes.
Contact information: Sangho Yi and Derrick Kondo
Support This Project
** Note: We are looking for
sponsors on this project.

Data format in the original BOINC
BOINC uses APP, PLATFORM, USER, RESULT, WORKUNIT, HOST, TEAM, MSG_FROM_HOST, MSG_TO_HOST, and some other data formats. The data formats directly match to the tables and fields in BOINC database.
- in db/boinc_db.h, db/boinc_db.cpp, db/db_base.h, and db/db_base.cpp

For example, each RESULT data record requires almost 200KB in the original BOINC. This means that when we have '10,000' RESULT records, the size of RESULT becomes almost 2.0GB. In case of BOINC, such a huge amount of data does not have significant problems, because it uses database (MySQL) as the main storage. However in case of RT-BOINC, every information is in-memory.
This is the reason why we made compaction of the data formats.

Compaction of data formats
Reduction of size of the large block fields:
BLOB_SIZE(64KB) to 1/8 size (8KB)
- in db/boinc_db.h, WORKUNIT, RESULT, USER, and TEAM structures
- in sched/sched_types.h, SCHEDULER_REQUEST structure

APP_VERSION_XML_BLOB_SIZE(256KB) to 1/4 size (64KB)
- in db/boinc_db.h, APP_VERSION structure

MSG_FROM_HOST_BLOB_SIZE(256KB) to 1/4 size (64KB)
- in db/boinc_db.h, MSG_FROM_HOST structure

MSG_TO_HOST_BLOB_SIZE(256KB) to 1/4 size (64KB)
- in db/boinc_db.h, MSG_TO_HOST structure

The size of name field(string: 256B) to 1/8 size (32B) or 1/4 size (64B)
- in db/boinc_db.h, APP, PLATFORM, USER, TEAM, HOST, WORKUNIT, RESULT, and the other structures

Exclusion of unique name management in RESULT and WORKUNIT structures:
We now use the 'id' as the unique name for RESULT and WORKUNIT records. By using number rather using string, we removed the 'string name lookup' operation from the scheduler. This makes it possible to reduce the size of 'name' field in RESULT and WORKUNIT significantly. (Less than 10B is also possible.) To do this, we modified server-side work distribution and client-side work requesting codes. (We inserted a new field, "" to the client-side XML format, and "" to the "" which is a part of XML format between hosts and server.)
- in client/app.cpp, client/app_control.cpp, client/cs_trickle.cpp, client/gui_rpc_server_ops.cpp (client-side)
- in sched/sched_types.cpp, sched/sched_types.h (server-side)

Notes for developers:
We still don't use the whole large block space. If it is required, we can reduce a little bit more.

Related links
Unofficial BOINC Wiki
BOINC Statistics
World Community Grid

Last modified: Wednesday, 10 Feb. 2010.