forked from atlarge-research/opendc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Documentation update (atlarge-research#224)
- Loading branch information
1 parent
f7e374a
commit d8ac0fd
Showing
5 changed files
with
236 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,9 @@ database/opendc_testing/* | |
# Old credential setup file | ||
keys.json | ||
|
||
# Demo | ||
/demo/ | ||
|
||
# Traces | ||
/traces/ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
The scenario of a simulation is defined using a JSON file. A scenario consists of one or more topologies, one or more | ||
workloads, one or more allocation policies, a name and a number of times the simulation is being run. | ||
|
||
## Schema | ||
|
||
The schema for the scenario file is provided in [schema](ScenarioSchema) | ||
In the following section, we describe the different components of the schema. | ||
|
||
### General Structure | ||
|
||
| Variable | Type | Required? | Default | Description | | ||
|----------------------|----------------------------------------------|-----------|-------|--------------------------------------------------------------------------| | ||
| name | string | no | "" | Name of the scenario, used for identification and referencing. | | ||
| 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](#allocationpolicy)] | yes | N/A | Allocation policies used for resource management in the scenario. | | ||
| failureModels | List[[FailureModel](#failuremodel)] | no | empty | List of failure models to simulate various types of failures. | | ||
| exportModels | List[[ExportModel](#exportmodel)] | no | empty | Specifications for exporting data from the simulation. | | ||
| carbonTracePaths | List[string] | no | null | Paths to carbon footprint trace files. | | ||
| 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. | | ||
|
||
### Topology | ||
|
||
| Variable | Type | Required? | Default | Description | | ||
|-------------|--------|-----------|---------|---------------------------------------------------------------------| | ||
| pathToFile | string | yes | N/A | Path to the JSON file defining the topology. | | ||
|
||
### 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"). | | ||
|
||
### AllocationPolicy | ||
|
||
| Variable | Type | Required? | Default | Description | | ||
|-------------|--------|-----------|---------|---------------------------------------------------------------------| | ||
| policyType | string | yes | N/A | Type of allocation policy (e.g., "BestFit", "FirstFit"). | | ||
|
||
### FailureModel | ||
|
||
| Variable | Type | Required? | Default | Description | | ||
|-------------|--------|-----------|---------|---------------------------------------------------------------------| | ||
| modelType | string | yes | N/A | Type of failure model to simulate specific operational failures. | | ||
|
||
### ExportModel | ||
|
||
| Variable | Type | Required? | Default | Description | | ||
|-------------|--------|-----------|---------|---------------------------------------------------------------------| | ||
| exportType | string | yes | N/A | Specifies the type of data export model for simulation results. | | ||
|
||
|
||
## 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). | ||
|
||
### Simple | ||
|
||
The simplest scneario that can be provided to OpenDC is shown below: | ||
```json | ||
{ | ||
"topologies": [ | ||
{ | ||
"pathToFile": "topologies/topology1.json" | ||
} | ||
], | ||
"workloads": [ | ||
{ | ||
"pathToFile": "traces/bitbrains-small", | ||
"type": "ComputeWorkload" | ||
} | ||
], | ||
"allocationPolicies": [ | ||
{ | ||
"policyType": "Mem" | ||
} | ||
] | ||
} | ||
``` | ||
|
||
This scenario 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: | ||
```json | ||
{ | ||
"topologies": [ | ||
{ | ||
"pathToFile": "topologies/topology1.json" | ||
}, | ||
{ | ||
"pathToFile": "topologies/topology2.json" | ||
}, | ||
{ | ||
"pathToFile": "topologies/topology3.json" | ||
} | ||
], | ||
"workloads": [ | ||
{ | ||
"pathToFile": "traces/bitbrains-small", | ||
"type": "ComputeWorkload" | ||
}, | ||
{ | ||
"pathToFile": "traces/bitbrains-large", | ||
"type": "ComputeWorkload" | ||
} | ||
], | ||
"allocationPolicies": [ | ||
{ | ||
"policyType": "Mem" | ||
}, | ||
{ | ||
"policyType": "Mem-Inv" | ||
} | ||
] | ||
} | ||
``` | ||
|
||
This scenario runs a total of 12 experiments. We have 3 topologies (3 datacenter configurations), each simulated with | ||
2 distinct workloads, each using a different allocation policy (either Mem or Mem-Inv). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
Below is the schema for the Scenario JSON file. This schema can be used to validate a scenario file. | ||
A scenario file can be validated using a JSON schema validator, such as https://www.jsonschemavalidator.net/. | ||
|
||
```json | ||
{ | ||
"$schema": "OpenDC/Scenario", | ||
"$defs": { | ||
"topology": { | ||
"type": "object", | ||
"properties": { | ||
"pathToFile": { | ||
"type": "string" | ||
} | ||
}, | ||
"required": [ | ||
"pathToFile" | ||
] | ||
}, | ||
"workload": { | ||
"type": "object", | ||
"properties": { | ||
"pathToFile": { | ||
"type": "string" | ||
}, | ||
"type": { | ||
"type": "string" | ||
} | ||
}, | ||
"required": [ | ||
"pathToFile", | ||
"type" | ||
] | ||
}, | ||
"allocationPolicy": { | ||
"type": "object", | ||
"properties": { | ||
"policyType": { | ||
"type": "string" | ||
} | ||
}, | ||
"required": [ | ||
"policyType" | ||
] | ||
} | ||
}, | ||
"properties": { | ||
"name": { | ||
"type": "string" | ||
}, | ||
"topologies": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/$defs/topology" | ||
}, | ||
"minItems": 1 | ||
}, | ||
"workloads": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/$defs/workload" | ||
}, | ||
"minItems": 1 | ||
}, | ||
"allocationPolicies": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/$defs/allocationPolicy" | ||
}, | ||
"minItems": 1 | ||
}, | ||
"runs": { | ||
"type": "integer" | ||
} | ||
}, | ||
"required": [ | ||
"topologies", | ||
"workloads", | ||
"allocationPolicies", | ||
] | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters