wiki:ClientSim

Version 3 (modified by davea, 17 years ago) (diff)

--

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. The simulator can be built with 'makefile_sim' on Unix or the 'sim' project on Windows.

Usage

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.
--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.

Input files

The input consists of four files.

sim_projects.xml

This describes a set of attached projects.

<projects>
    <project>
        <project_name>P1</project_name>
        <resource_share>100</resource_share>
        <app>
            <latency_bound>1000</latency_bound>
            <fpops_est>1e9</fpops_est>
            <fpops>
                <mean>1e9</mean>
                <stdev>1e5</stdev>
            </fpops>
            <working_set>100000000</working_set>
        </app>
        ...
        <available>
            <frac>.7</frac>
            <lambda>1000</lambda>
        </available>
        [<max_infeasible_count>N</max_infeasible_count>]
    </project>
    ...
</projects>

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.

<host>
    <p_fpops>x</p_fpops>
    <m_nbytes>x</m_nbytes>
    <p_ncpus>x</p_ncpus>
    <available>
        <frac>.7</frac>
        <lambda>1000</lambda>
    </available>
    <idle>
        <frac>.7</frac>
        <lambda>1000</lambda>
    </idle>
</host>

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.