diff options
Diffstat (limited to 'site/docs/documentation/Input/Experiment.md')
| -rw-r--r-- | site/docs/documentation/Input/Experiment.md | 136 |
1 files changed, 33 insertions, 103 deletions
diff --git a/site/docs/documentation/Input/Experiment.md b/site/docs/documentation/Input/Experiment.md index a4212ddf..8d3462a9 100644 --- a/site/docs/documentation/Input/Experiment.md +++ b/site/docs/documentation/Input/Experiment.md @@ -5,113 +5,40 @@ In this page, we will discuss how to properly define experiments for OpenDC. :::info Code All code related to reading and processing Experiment files can be found [here](https://github.com/atlarge-research/opendc/tree/master/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment) - -The code used to run a given experiment can be found [here](https://github.com/atlarge-research/opendc/tree/master/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner) +The code used to run experiments can be found [here](https://github.com/atlarge-research/opendc/tree/master/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner) ::: ## Schema -The schema for the scenario file is provided in [schema](ExperimentSchema) -In the following section, we describe the different components of the schema. -Some components of an experiment are not single values, but lists. This is used to run multiple scenarios using -a single experiment file. OpenDC will execute all permutations of the different values. -This means that if all list based values have a single value, only one Scenario will be run. - -| Variable | Type | Required? | Default | Description | -|---------------------|----------------------------------------------|-----------|----------|-------------------------------------------------------------------| -| name | string | no | "" | Name of the scenario, used for identification and referencing. | -| outputFolder | string | no | "output" | Directory where the simulation outputs will be stored. | -| initialSeed | integer | no | 0 | Seed used for random number generation to ensure reproducibility. | -| runs | integer | no | 1 | Number of times the scenario should be run. | -| exportModels | List[[ExportModel](#exportmodel)] | no | Default | Specifications for exporting data from the simulation. | -| maxNumFailures | List[integer] | no | [10] | The max number of times a task can fail before being terminated. | -| topologies | List[[Topology](#topology)] | yes | N/A | List of topologies used in the scenario. | -| workloads | List[[Workload](#workload)] | yes | N/A | List of workloads to be executed within the scenario. | -| allocationPolicies | List[[AllocationPolicy](#allocation-policy)] | yes | N/A | Allocation policies used for resource management in the scenario. | -| failureModels | List[[FailureModel](#failuremodel)] | no | Default | List of failure models to simulate various types of failures. | -| checkpointModels | List[[CheckpointModel](#checkpointmodel)] | no | null | Paths to carbon footprint trace files. | -| carbonTracePaths | List[string] | no | null | Paths to carbon footprint trace files. | - - -Many of the input fields of the experiment file are complex objects themselves. Next, we will describe the required input -type of each of these fields. - -### ExportModel - -| Variable | Type | Required? | Default | Description | -|---------------------|-----------------------------------------|-----------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| -| exportInterval | Int64 | no | 300 | The duration between two exports in seconds | -| computeExportConfig | [ComputeExportConfig](#checkpointmodel) | no | Default | The features that should be exported during the simulation | -| filesToExport | List[string] | no | all files | List of the files that should be exported during simulation. The elements should be picked from the set ("host", "task", "powerSource", "battery", "service") | - - - -### ComputeExportConfig -The features that should be exported by OpenDC - -| Variable | Type | Required? | Default | Description | -|--------------------------|--------------|-----------|--------------|-----------------------------------------------------------------------| -| hostExportColumns | List[String] | no | All features | The features that should be exported to the host output file. | -| taskExportColumns | List[String] | no | All features | The features that should be exported to the task output file. | -| powerSourceExportColumns | List[String] | no | All features | The features that should be exported to the power source output file. | -| serviceExportColumns | List[String] | no | All features | The features that should be exported to the service output file. | - - -### Topology -Defines the topology on which the workload will be run. - -:::info -For more information about the Topology go [here](Topology) -::: - -| Variable | Type | Required? | Default | Description | -|-------------|--------|-----------|---------|---------------------------------------------------------------------| -| pathToFile | string | yes | N/A | Path to the JSON file defining the topology. | - -### Workload -Defines the workload that needs to be executed. - -:::info -For more information about workloads go [here](Workload) -::: - -| Variable | Type | Required? | Default | Description | -|-------------|--------|-----------|---------|---------------------------------------------------------------------| -| pathToFile | string | yes | N/A | Path to the file containing the workload trace. | -| type | string | yes | N/A | Type of the workload (e.g., "ComputeWorkload"). | - -### Allocation Policy -Defines the allocation policy that should be used to decide on which host each task should be executed - -:::info Code -The different allocation policies that can be used can be found [here](https://github.com/atlarge-research/opendc/blob/master/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/ComputeSchedulers.kt) -::: - -| Variable | Type | Required? | Default | Description | -|------------|--------|-----------|---------|----------------------------| -| policyType | string | yes | N/A | Type of allocation policy. | - -### FailureModel -The failure model that should be used during the simulation -See [FailureModels](FailureModel) for detailed instructions. - -### CheckpointModel -The checkpoint model that should be used to create snapshots. - -| Variable | Type | Required? | Default | Description | -|---------------------------|--------|-----------|---------|---------------------------------------------------------------------------------------------------------------------| -| checkpointInterval | Int64 | no | 3600000 | The time between checkpoints in ms | -| checkpointDuration | Int64 | no | 300000 | The time to create a snapshot in ms | -| checkpointIntervalScaling | Double | no | 1.0 | The scaling of the checkpointInterval after each succesful checkpoint. The default of 1.0 means no scaling happens. | - +In the following section, we describe the different components of an experiment. Following is a table with all experiment components: + +| Variable | Type | Required? | Default | Description | +|--------------------|----------------------------------------------------------------------|-----------|---------------|-------------------------------------------------------------------------------------------------------| +| name | string | no | "" | Name of the scenario, used for identification and referencing. | +| outputFolder | string | no | "output" | Directory where the simulation outputs will be stored. | +| runs | integer | no | 1 | Number of times the same scenario should be run. Each scenario is run with a different seed. | +| initialSeed | integer | no | 0 | The seed used for random number generation during a scenario. Setting a seed ensures reproducability. | +| topologies | List[path/to/file] | yes | N/A | Paths to the JSON files defining the topologies. | +| workloads | List[[Workload](/docs/documentation/Input/Workload)] | yes | N/A | Paths to the files defining the workloads executed. | +| allocationPolicies | List[[AllocationPolicy](/docs/documentation/Input/AllocationPolicy)] | yes | N/A | Allocation policies used for resource management in the scenario. | +| failureModels | List[[FailureModel](/docs/documentation/Input/FailureModel)] | no | List[null] | List of failure models to simulate various types of failures. | +| maxNumFailures | List[integer] | no | [10] | The max number of times a task can fail before being terminated. | +| checkpointModels | List[[CheckpointModel](/docs/documentation/Input/CheckpointModel)] | no | List[null] | Paths to carbon footprint trace files. | +| exportModels | List[[ExportModel](/docs/documentation/Input/ExportModel)] | no | List[default] | Specifications for exporting data from the simulation. | + +Most components of an experiment are not single values, but lists of values. +This allows users to run multiple scenarios using a single experiment file. +OpenDC will generate and execute all permutations of the different values. + +Some of the components in an experiment file are paths to files, or complicated objects. The format of these components +are defined in their respective pages. ## Examples -In the following section, we discuss several examples of Scenario files. Any scenario file can be verified using the -JSON schema defined in [schema](TopologySchema). +In the following section, we discuss several examples of experiment files. ### Simple -The simplest scneario that can be provided to OpenDC is shown below: +The simplest experiment that can be provided to OpenDC is shown below: ```json { "topologies": [ @@ -127,18 +54,19 @@ The simplest scneario that can be provided to OpenDC is shown below: ], "allocationPolicies": [ { - "policyType": "Mem" + "type": "prefab", + "policyName": "Mem" } ] } ``` -This scenario creates a simulation from file topology1, located in the topologies folder, with a workload trace from the +This experiment creates a simulation from file topology1, located in the topologies folder, with a workload trace from the bitbrains-small file, and an allocation policy of type Mem. The simulation is run once (by default), and the default name is "". ### Complex -Following is an example of a more complex topology: +Following is an example of a more complex experiment: ```json { "topologies": [ @@ -164,10 +92,12 @@ Following is an example of a more complex topology: ], "allocationPolicies": [ { - "policyType": "Mem" + "type": "prefab", + "policyName": "Mem" }, { - "policyType": "Mem-Inv" + "type": "prefab", + "policyName": "Mem-Inv" } ] } |
