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
** Note: We are looking for
sponsors on this project.
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.
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, "
- 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.
Unofficial BOINC Wiki
World Community Grid