summaryrefslogtreecommitdiff
path: root/site/docs/documentation/Input/Topology.md
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2024-03-05 16:50:35 +0100
committerGitHub <noreply@github.com>2024-03-05 16:50:35 +0100
commit960b3d8a13c67ac4b7f479d5764b0b618fc9ea09 (patch)
tree4f103bcf6635341827d9cfa10c10cfde9543f04f /site/docs/documentation/Input/Topology.md
parent5864cbcbfe2eb8c36ca05c3a39c7e5916aeecaec (diff)
Cpu fix (#208)
* Updated the topology format to JSON. Updated TopologyReader.kt to handle JSON filed. Added documentation for the new format. * applied spotless kotlin * small update * Updated for spotless apply * Updated for spotless apply
Diffstat (limited to 'site/docs/documentation/Input/Topology.md')
-rw-r--r--site/docs/documentation/Input/Topology.md184
1 files changed, 184 insertions, 0 deletions
diff --git a/site/docs/documentation/Input/Topology.md b/site/docs/documentation/Input/Topology.md
new file mode 100644
index 00000000..e5419078
--- /dev/null
+++ b/site/docs/documentation/Input/Topology.md
@@ -0,0 +1,184 @@
+The topology of a datacenter is defined using a JSON file. A topology consist of one or more clusters.
+Each cluster consist of at least one host on which jobs can be executed. Each host consist of one or more CPUs, a memory unit and a power model.
+
+## Schema
+The schema for the topology file is provided in [schema](TopologySchema).
+In the following section, we describe the different components of the schema.
+
+### Cluster
+
+| variable | type | required? | default | description |
+|----------|---------------------|-----------|---------|-----------------------------------------------------------------------------------|
+| name | string | no | Cluster | The name of the cluster. This is only important for debugging and post-processing |
+| count | integer | no | 1 | The amount of clusters of this type are in the data center |
+| hosts | List[[Host](#host)] | yes | N/A | A list of the hosts in a cluster. |
+
+### Host
+
+| variable | type | required? | default | description |
+|-------------|-----------------------------|-----------|---------|--------------------------------------------------------------------------------|
+| name | string | no | Host | The name of the host. This is only important for debugging and post-processing |
+| count | integer | no | 1 | The amount of hosts of this type are in the cluster |
+| cpus | List[[CPU](#cpu)] | yes | N/A | A list of the hosts in a cluster. |
+| memory | [Memory](#memory) | yes | N/A | The memory used by the host |
+| power model | [Power Model](#power-model) | yes | N/A | The power model used to determine the power draw of the host |
+
+### CPU
+
+| variable | type | Unit | required? | default | description |
+|-----------|---------|-------|-----------|---------|--------------------------------------------------|
+| name | string | N/A | no | unknown | The name of the CPU. |
+| vendor | string | N/A | no | unknown | The vendor of the CPU |
+| arch | string | N/A | no | unknown | the micro-architecture of the CPU |
+| count | integer | N/A | no | 1 | The amount of cpus of this type used by the host |
+| coreCount | integer | count | yes | N/A | The number of cores in the CPU |
+| coreSpeed | Double | Mhz | yes | N/A | The speed of each core in Mhz |
+
+### Memory
+
+| variable | type | Unit | required? | default | description |
+|-------------|---------|------|-----------|---------|--------------------------------------------------------------------------|
+| name | string | N/A | no | unknown | The name of the CPU. |
+| vendor | string | N/A | no | unknown | The vendor of the CPU |
+| arch | string | N/A | no | unknown | the micro-architecture of the CPU |
+| count | integer | N/A | no | 1 | The amount of cpus of this type used by the host |
+| memorySize | integer | Byte | yes | N/A | The number of cores in the CPU |
+| memorySpeed | Double | ? | no | -1 | The speed of each core in Mhz. PLACEHOLDER: this currently does nothing. |
+
+### Power Model
+
+| variable | type | Unit | required? | default | description |
+|-----------|---------|------|-----------|---------|----------------------------------------------------------------------------|
+| modelType | string | N/A | yes | N/A | The type of model used to determine power draw |
+| power | string | Watt | no | 400 | The constant power draw when using the 'constant' power model type in Watt |
+| maxPower | string | Watt | yes | N/A | The power draw of a host when using max capacity in Watt |
+| idlePower | integer | Watt | yes | N/A | The power draw of a host when idle in Watt |
+
+
+## Examples
+In the following section, we discuss several examples of topology files. Any topology file can be verified using the
+JSON schema defined in [schema](TopologySchema).
+
+### Simple
+
+The simplest data center that can be provided to OpenDC is shown below:
+```json
+{
+ "clusters":
+ [
+ {
+ "hosts" :
+ [
+ {
+ "cpus":
+ [
+ {
+ "coreCount": 16,
+ "coreSpeed": 1000
+ }
+ ],
+ "memory": {
+ "memorySize": 100000
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+This is creates a data center with a single cluster containing a single host. This host consist of a single 16 core CPU
+with a speed of 1 Ghz, and 100 MiB RAM memory.
+
+### Count
+Duplicating clusters, hosts, or CPUs is easy using the "count" keyword:
+```json
+{
+ "clusters":
+ [
+ {
+ "count": 2,
+ "hosts" :
+ [
+ {
+ "count": 5,
+ "cpus":
+ [
+ {
+ "coreCount": 16,
+ "coreSpeed": 1000,
+ "count": 10
+ }
+ ],
+ "memory": {
+ "memorySize": 100000
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+This topology creates a datacenter consisting of 2 clusters, both containing 5 hosts. Each host contains 10 16 core CPUs.
+Using "count" saves a lot of copying.
+
+### Complex
+Following is an example of a more complex topology:
+
+```json
+{
+ "clusters":
+ [
+ {
+ "name": "C01",
+ "count": 2,
+ "hosts" :
+ [
+ {
+ "name": "H01",
+ "count": 2,
+ "cpus":
+ [
+ {
+ "coreCount": 16,
+ "coreSpeed": 1000
+ }
+ ],
+ "memory": {
+ "memorySize": 1000000
+ },
+ "powerModel":
+ {
+ "modelType": "linear",
+ "idlePower": 200.0,
+ "maxPower": 400.0
+ }
+ },
+ {
+ "name": "H02",
+ "count": 2,
+ "cpus":
+ [
+ {
+ "coreCount": 8,
+ "coreSpeed": 3000
+ }
+ ],
+ "memory": {
+ "memorySize": 100000
+ },
+ "powerModel":
+ {
+ "modelType": "square",
+ "idlePower": 300.0,
+ "maxPower": 500.0
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+This topology defines two types of hosts with different coreCount, and coreSpeed.
+Both types of hosts are created twice.