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. |
BOINC Unofficial BOINC Wiki BOINC Statistics World Community Grid |