= BOINC client simulator =
The BOINC client simulator simulates the CPU scheduling and work-fetch policies of the BOINC client. It uses the same source code as the core client for these policies. You can use the simulator in either of two ways:
* Through a [http://boinc.berkeley.edu/sim_form.php web interface]. This lets you do one simulation at a time, and shows you results graphically.
* Compile it your self. This provides a more flexible, but less convenient, interface.
== Input files ==
The input consists of four files.
=== sim_projects.xml ===
This describes a set of attached projects.
{{{
P1
100
1000
1e9
1e9
1e5
100000000
...
.7
1000
[N]
...
}}}
A project has one or more applications. Each application has a given latency bound and working-set size. The number of FP ops is a truncated normal distribution with the given mean and standard deviation.
The availability of the projects (i.e. the periods when scheduler RPCs succeed) is modeled with two parameters: the duration of available periods are exponentially distributed with the given mean, and the unavailable periods are exponentially distributed achieving the given available fraction.
max_infeasible_count specifies how many jobs that are infeasible (due to deadline/workload)
to tolerate over before giving up in work-send loop. Default is 0.
=== sim_host.xml ===
This describes the host hardware and availability.
{{{
x
x
x
.7
1000
.7
1000
}}}
The available periods (i.e., when BOINC is running) and the idle periods (i.e. when there is no user input) are modeled as above.
=== sim_prefs.xml ===
Same format as the global_prefs.xml file.
=== cc_config.xml ===
Same format as the client's cc_config.xml file.
== Building and running the simulator ==
The simulator can be built with 'makefile_sim' on Unix or the 'sim' project on Windows.
The usage is:
{{{
sim [--duration X] [--delta X] [--server_uses_workload] [--dirs d1 ...]
}}}
--duration::
simulate this much time.
--delta::
time step of simulation.
--server_uses_workload::
servers take existing workload into account when deciding whether to send jobs.
--dcf_dont_use::
Duration correction factor (DCF) is one.
--dcf_stats::
Use formula for DCF based on completion time mean/stdev.
--dirs d1 ...::
chdir into each of the given directories, and runs a simulation based on the input files there. Prints summaries of each one separately, and a total summary.
== Output files ==
The simulator creates two output files:
'''sim_log.txt''': This is the message log (same as would be generated by the client). Its contents are controlled by cc_config.xml.
'''sim_out.html''': When viewed in a web browser, a 'time line' showing what's running when.