| 1 | = BOINC client simulator = |
| 2 | |
| 3 | 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. The simulator can be built with 'makefile_sim' on Unix or the 'sim' project on Windows. |
| 4 | == Usage == |
| 5 | |
| 6 | {{{ |
| 7 | sim [--duration X] [--delta X] [--dirs d1 ...] |
| 8 | }}} |
| 9 | runs the simulator with the given duration and time step. When run with --dirs, chdirs 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. |
| 10 | |
| 11 | |
| 12 | == Output files == |
| 13 | 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. |
| 14 | |
| 15 | |
| 16 | == Input files == |
| 17 | The input consists of four files. |
| 18 | === sim_projects.xml === |
| 19 | This describes a set of attached projects. |
| 20 | {{{ |
| 21 | <projects> |
| 22 | <project> |
| 23 | <project_name>P1</project_name> |
| 24 | <resource_share>100</resource_share> |
| 25 | <app> |
| 26 | <latency_bound>1000</latency_bound> |
| 27 | <fpops_est>1e9</fpops_est> |
| 28 | <fpops> |
| 29 | <mean>1e9</mean> |
| 30 | <stdev>1e5</stdev> |
| 31 | </fpops> |
| 32 | <working_set>100000000</working_set> |
| 33 | </app> |
| 34 | ... |
| 35 | <available> |
| 36 | <frac>.7</frac> |
| 37 | <lambda>1000</lambda> |
| 38 | </available> |
| 39 | </project> |
| 40 | ... |
| 41 | </projects> |
| 42 | }}} |
| 43 | 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. |
| 44 | |
| 45 | |
| 46 | === sim_host.xml === |
| 47 | This describes the host hardware and availability. |
| 48 | {{{ |
| 49 | <host> |
| 50 | <p_fpops>x</p_fpops> |
| 51 | <m_nbytes>x</m_nbytes> |
| 52 | <p_ncpus>x</p_ncpus> |
| 53 | <available> |
| 54 | <frac>.7</frac> |
| 55 | <lambda>1000</lambda> |
| 56 | </available> |
| 57 | <idle> |
| 58 | <frac>.7</frac> |
| 59 | <lambda>1000</lambda> |
| 60 | </idle> |
| 61 | </host> |
| 62 | }}} |
| 63 | 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. |
| 64 | === sim_prefs.xml === |
| 65 | Same format as the global_prefs.xml file. |
| 66 | === cc_config.xml === |
| 67 | Same format as the client's cc_config.xml file. |