EmBOINC (Emulator of BOINC Projects) is a trace-driven emulator that models heterogeneous hosts and their interaction with a real BOINC server. By plugging into a BOINC server, EmBOINC triggers the server's daemons to generate and distribute jobs to the EmBOINC hosts. EmBOINC uses statistical information obtained from real BOINC traces to characterize volatile, heterogeneous, and error-prone hosts. A discrete event simulator is used in EmBOINC to accurately model the hosts' behavior. EmBOINC also interacts with the BOINC daemons and triggers the collection and validation of completed job instances.
Contrary to what happens in BOINC projects, EmBOINC simulated hosts do not execute the job instances. To maximize fidelity, the actual BOINC production code has been adapted to use simulated time instead of real time when running EmBOINC simulations. For these simulations, signals are used to synchronize the several daemons with the simulated time and maintain the correct flow of events at the server level. Figure 1 shows a general comparison between BOINC and EmBOINC
|Figure 2. EmBOINC settings|
|An EmBOINC simulation depends on the modeling of the volunteer community with their hosts and their workload, as well as on the BOINC server settings. As shown in Figure 3, EmBOINC can simulate different scenarios by changing one or more of these parameters|
- Host modeling: EmBOINC can characterize a host community from a real BOINC database, extracting and storing this information in traces Note that in this context traces are data including: host attributes, volunteer attributes, and statistical attributes.
- Workload characterization: EmBOINC allows the user to have heterogeneous or homogeneous workloads for each application. Jobs generated can have different length, number of replicas, quorum, and sensitivity to OS and architecture. EmBOINC can either generate real job characterization by readying data from a BOINC database or synthetic job characterization by using a set of parameters given by the user through an interface.
- BOINC settings: By plugging in a real BOINC server, EmBOINC uses the BOINC setting in its configuration, as defined by the BOINC administrator. The BOINC setting parameters drive the simulation and ultimately they affect the BOINC scheduler. Relevant setting parameters include the size of the shared memory, homogeneous redundancy level, and maximum number of job instances assigned per request, and the selection of the scheduling policy used.
EmBOINC administrative interfaceAmong its several features, BOINC has an administrative interface that project administrators use to access the BOINC database, add or remove platforms, check the status of the jobs. This interface has been extended to allow the EmBOINC user to monitor simulated project in a familiar environment as in real BOINC projects, as well as to generate synthetic and real traces. A snapshot of the interface is shown in figure 3.
Final remarksEmBOINC is easy to install: as easy as creating a new BOINC project. It is also easy to use: the selection of host population and parameters can be done through the BOINC interface. The analysis of results can also be done through the BOINC Web interface. Last but not least EmBOINC is easy to maintain: EmBOINC is integrated directly into BOINC code and can be used with the very last version of the BOINC server (BOINC scheduler and daemons). Its integration in BOINC makes EmBOINC convenient for testing and tuning: every policy tested or tuned with EmBOINC works unchanged with BOINC. The comparison of EmBOINC generated BOINC project with real BOINC traces shows its accuracy in capturing the behavior of the real projects.
Overall EmBOINC supports the project administrator in answer important questions such as: Given an application, what replication and scheduling policy are best? Can we detect malicious attackers? What if attackers team? Given a set of jobs and hosts, how much time do scientists shall wait to get all their results?