From d70312f122d9ef7c31b05757239ffc66af832dee Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Fri, 16 May 2025 10:32:08 +0200 Subject: Updated website documentation (#334) * Updated website documentation * Updated some documentation and fixed links * small updates * small updates --- site/docs/getting-started/1-first-experiment.md | 212 --------------------- .../docs/getting-started/1-start-using-intellij.md | 172 +++++++++++++++++ site/docs/getting-started/2-first-experiment.md | 211 ++++++++++++++++++++ site/docs/getting-started/3-whats-next.md | 2 +- .../docs/getting-started/4-start-using-intellij.md | 172 ----------------- 5 files changed, 384 insertions(+), 385 deletions(-) delete mode 100644 site/docs/getting-started/1-first-experiment.md create mode 100644 site/docs/getting-started/1-start-using-intellij.md create mode 100644 site/docs/getting-started/2-first-experiment.md delete mode 100644 site/docs/getting-started/4-start-using-intellij.md (limited to 'site/docs/getting-started') diff --git a/site/docs/getting-started/1-first-experiment.md b/site/docs/getting-started/1-first-experiment.md deleted file mode 100644 index 9c84c435..00000000 --- a/site/docs/getting-started/1-first-experiment.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -description: Designing a simple experiment ---- - -# First Experiment -Now that you have downloaded OpenDC, we will start creating a simple experiment. -In this experiment we will compare the performance of a small, and a big data center on the same workload. - -
-Expand this - -This is content -
- -:::tip Answer -
-Expand for the Answer -
-::: - -:::info Learning goal -During this tutorial, we will learn how to create and execute a simple experiment in OpenDC. -::: - -## Designing a Data Center - -The first requirement to run an experiment in OpenDC is a **topology**. -A **topology** defines the hardware on which a **workload** is executed. -Larger topologies will be capable of running more workloads, and will often quicker. - -A **topology** is defined using a JSON file. A **topology** contains one or more _clusters_. -_clusters_ are groups of _hosts_ on a specific location. Each cluster consists of one or more _hosts_. -A _host_ is a machine on which one or more tasks can be executed. _hosts_ are composed of a _cpu_ and a _memory_ unit. - -### Simple Data Center -in this experiment, we are comparing two data centers. Below is an example of the small **topology** file: - -```json -{ - "clusters": - [ - { - "name": "C01", - "hosts" : - [ - { - "name": "H01", - "cpu": - { - "coreCount": 12, - "coreSpeed": 3300 - }, - "memory": { - "memorySize": 140457600000 - } - } - ] - } - ] -} -``` - -This **topology** consist of a single _cluster_, with a single _host_. - -:::tip -To use this **topology** in experiment copy the content to a new JSON file, or download it [here](documents/topologies/small.json "download") -::: - -### Simple Data Center -in this experiment, we are comparing two data centers. Below is an example of the bigger **topology** file: - -```json -{ - "clusters": - [ - { - "name": "C01", - "hosts" : - [ - { - "name": "H01", - "cpu": - { - "coreCount": 32, - "coreSpeed": 3200 - }, - "memory": { - "memorySize": 256000 - } - } - ] - }, - { - "name": "C02", - "hosts" : - [ - { - "name": "H02", - "count": 6, - "cpu": - { - "coreCount": 8, - "coreSpeed": 2930 - }, - "memory": { - "memorySize": 64000 - } - } - ] - }, - { - "name": "C03", - "hosts" : - [ - { - "name": "H03", - "count": 2, - "cpu": - { - "coreCount": 16, - "coreSpeed": 3200 - }, - "memory": { - "memorySize": 128000 - } - } - ] - } - ] -} -``` - -Compared to the small topology, the big topology consist of three clusters, all consisting of a single host. - -:::tip -To use this **topology** in experiment copy the content to a new JSON file, or download it [here](documents/topologies/big.json "download") -::: - -:::info -For more in depth information about Topologies, see [Topology](../documentation/Input/Topology) -::: - -## Workloads - -Next to the topology, we need a workload to simulate on the data center. -In OpenDC, workloads are defined as a bag of tasks. Each task is accompanied by one or more fragments. -These fragments define the computational requirements of the task over time. -For this experiment, we will use the bitbrains-small workload. This is a small workload of 50 tasks, -spanning over a bit more than a month time. You can download the workload [here](documents/workloads/bitbrains-small.zip "download") - -:::info -For more in depth information about Workloads, see [Workload](../documentation/Input/Workload) -::: - -## Executing an experiment - -To run an experiment, we need to create an **experiment** file. This is a JSON file, that defines what should be executed -by OpenDC, and how. Below is an example of a simple **experiment** file: - -```json -{ - "name": "simple", - "topologies": [{ - "pathToFile": "topologies/small.json" - }, - { - "pathToFile": "topologies/big.json" - }], - "workloads": [{ - "pathToFile": "traces/bitbrains-small", - "type": "ComputeWorkload" - }] -} -``` - -In this **experiment**, three things are defined. First, is the `name`. This defines how the experiment is called -in the output folder. Second, is the `topologies`. This defines where OpenDC can find the topology files. -Finally, the `workloads`. This defines which workload OpenDC should run. You can download the experiment file [here](documents/experiments/simple_experiment.json "download") - -As you can see, `topologies` defines two topologies. In this case OpenDC will run two simulations, one with the small -topology, and one with the big topology. - -:::info -For more in depth information about Experiments, see [Experiment](../documentation/Input/Experiment) -::: - -## Running OpenDC -At this point, we should have all components to run an experiment. To make sure every file can be used by OpenDC, -please create an experiment folder such as the one shown below: -``` -── {simulation-folder-name} 📁 🔧 - ├── topologies 📁 🔒 - │ └── small.json 📄 🔧 - │ └── big.json 📄 🔧 - ├── experiments 📁 🔒 - │ └── simple_experiment.json 📄 🔧 - ├── workloads 📁 🔒 - │ └── bitbrains-small 📁 🔒 - │ └── fragments.parquet 📄 🔧 - │ └── tasks.parquet 📄 🔧 - ├── OpenDCExperimentRunner 📁 🔒 - │ └── lib 📁 🔒 - │ └── bin 📁 🔒 - ├── output 📁 🔒 -``` - -Executing the experiment can be done directly from the terminal. -Execute the following code from the terminal in simulation-folder-name - -``` -$ ./OpenDCExperimentRunner/bin/OpenDCExperimentRunner.sh --experiment-path "experiments/simple_experiment.json" -``` diff --git a/site/docs/getting-started/1-start-using-intellij.md b/site/docs/getting-started/1-start-using-intellij.md new file mode 100644 index 00000000..6aec91f1 --- /dev/null +++ b/site/docs/getting-started/1-start-using-intellij.md @@ -0,0 +1,172 @@ + + +# In this How-To we explain how you setup IntelliJ IDEA + +First of all you can download IntelliJ here: https://lp.jetbrains.com/intellij-idea-promo/ + +# Basic steps + +``` +git clone git@github.com:atlarge-research/opendc +``` + +Check if you have a compatible java version available. Make sure to have one of these versions available: [21] + +If not install a supported version! + +On a MAC + +``` +/usr/libexec/java_home -V +``` + +On Debian + +``` +update-alternatives --list java +``` + +On Redhat/Centos + +``` +yum list installed | grep java +``` + + +Open the project in IntelliJ + +![Intellij Open Project](img/intellij_open_project.png) + +Now fix the settings so that you use the correct java version. (In the example the java version is set to "21") +Navigation path in the settings pannel: "Build, Execution, Deployment" -> "Build Tools" -> "Gradle" + +![Intellij Settings](img/intellij_settings.png) + +Now navigate in the file menu to and open the file: "gradle"/"libs.versions.toml" + +Make sure the java version is set to the same version as previously cofigured in the settings. + +![Intellij Libs Versions Toml](img/intellij_libs_versions_toml.png) + + +Now open the Gradle panel on the right-hand side of the editor (1) and hit the refresh button at the top of the panel (2). + +![Intellij Gradle Panel](img/intellij_gradle_panel.png) + + +# Setup your first experiment and run it from source + + +Create a directory where you are going to put the files for your first experiment. + +File structure: + +![Experiment File Structure](img/experiment_file_structure.png) + +You can download the example workload trace (bitbrains-small-9d2e576e6684ddc57c767a6161e66963.zip) [here](https://atlarge-research.github.io/opendc/assets/files/bitbrains-small-9d2e576e6684ddc57c767a6161e66963.zip) + +Now unzip the trace. + +The content of "topology.json" + +``` +{ + "clusters": + [ + { + "name": "C01", + "hosts" : + [ + { + "name": "H01", + "cpu": + { + "coreCount": 32, + "coreSpeed": 3200 + }, + "memory": { + "memorySize": 256000 + } + } + ] + }, + { + "name": "C02", + "hosts" : + [ + { + "name": "H02", + "count": 6, + "cpu": + { + "coreCount": 8, + "coreSpeed": 2930 + }, + "memory": { + "memorySize": 64000 + } + } + ] + }, + { + "name": "C03", + "hosts" : + [ + { + "name": "H03", + "count": 2, + "cpu": + { + "coreCount": 16, + "coreSpeed": 3200 + }, + "memory": { + "memorySize": 128000 + } + } + ] + } + ] +} +``` + +The content of "experiment.json" + +The paths in the "experiment.json" file are relative to the "working directory" which is configured next. + + +``` +{ + "name": "simple", + "topologies": [{ + "pathToFile": "topology.json" + }], + "workloads": [{ + "pathToFile": "bitbrains-small", + "type": "ComputeWorkload" + }] +} +``` + +In the project file structure on the left open the following file: + +"opendc-experiments"/"opendc-experiments-base"/"src"/"main"/"kotlin"/"org.opendc.experiment.base"/"runner"/"ExperimentCLi.kt" + +![Intellij Experimentcli](img/Intellij_experimentcli.png) + +Now open the "Run/Debug" configuration (top right). + +![Intellij Open Run Config](img/intellij_open_run_config.png) + +We need to edit two settings: + +"Program arguments": --experiment-path experiment.json + +"Working Directory": a path where you have put the experiment files + +![Intellij Edit The Run Config](img/intellij_edit_the_run_config.png) + +Now you can click "Run" and start your first experiment. + +In the working directory a "output" direcotry is created with the results of the experiment. + diff --git a/site/docs/getting-started/2-first-experiment.md b/site/docs/getting-started/2-first-experiment.md new file mode 100644 index 00000000..79fd6424 --- /dev/null +++ b/site/docs/getting-started/2-first-experiment.md @@ -0,0 +1,211 @@ +--- +description: Designing a simple experiment +--- + +# First Experiment +Now that you have downloaded OpenDC, we will start creating a simple experiment. +In this experiment we will compare the performance of a small, and a big data center on the same workload. + + +[//]: # (:::tip Answer) + +[//]: # (
) + +[//]: # (Expand for the Answer) + +[//]: # (
) + +[//]: # (:::) + +:::info Learning goal +During this tutorial, we will learn how to create and execute a simple experiment in OpenDC. +::: + +## Designing a Data Center + +The first requirement to run an experiment in OpenDC is a **topology**. +A **topology** defines the hardware on which a **workload** is executed. +Larger topologies will be capable of running more workloads, and will often quicker. + +A **topology** is defined using a JSON file. A **topology** contains one or more _clusters_. +_clusters_ are groups of _hosts_ on a specific location. Each cluster consists of one or more _hosts_. +A _host_ is a machine on which one or more tasks can be executed. _hosts_ are composed of a _cpu_ and a _memory_ unit. + +### Simple Data Center +in this experiment, we are comparing two data centers. Below is an example of the small **topology** file: + +```json +{ + "clusters": + [ + { + "name": "C01", + "hosts" : + [ + { + "name": "H01", + "cpu": + { + "coreCount": 12, + "coreSpeed": 3300 + }, + "memory": { + "memorySize": 140457600000 + } + } + ] + } + ] +} +``` + +This **topology** consist of a single _cluster_, with a single _host_. + +:::tip +To use this **topology** in experiment copy the content to a new JSON file, or download it [here](documents/topologies/small.json "download") +::: + +### Simple Data Center +in this experiment, we are comparing two data centers. Below is an example of the bigger **topology** file: + +```json +{ + "clusters": + [ + { + "name": "C01", + "hosts" : + [ + { + "name": "H01", + "cpu": + { + "coreCount": 32, + "coreSpeed": 3200 + }, + "memory": { + "memorySize": 256000 + } + } + ] + }, + { + "name": "C02", + "hosts" : + [ + { + "name": "H02", + "count": 6, + "cpu": + { + "coreCount": 8, + "coreSpeed": 2930 + }, + "memory": { + "memorySize": 64000 + } + } + ] + }, + { + "name": "C03", + "hosts" : + [ + { + "name": "H03", + "count": 2, + "cpu": + { + "coreCount": 16, + "coreSpeed": 3200 + }, + "memory": { + "memorySize": 128000 + } + } + ] + } + ] +} +``` + +Compared to the small topology, the big topology consist of three clusters, all consisting of a single host. + +:::tip +To use this **topology** in experiment copy the content to a new JSON file, or download it [here](documents/topologies/big.json "download") +::: + +:::info +For more in depth information about Topologies, see [Topology](../documentation/Input/Topology) +::: + +## Workloads + +Next to the topology, we need a workload to simulate on the data center. +In OpenDC, workloads are defined as a bag of tasks. Each task is accompanied by one or more fragments. +These fragments define the computational requirements of the task over time. +For this experiment, we will use the bitbrains-small workload. This is a small workload of 50 tasks, +spanning over a bit more than a month time. You can download the workload [here](documents/workloads/bitbrains-small.zip "download") + +:::info +For more in depth information about Workloads, see [Workload](../documentation/Input/Workload.md) +::: + +## Executing an experiment + +To run an experiment, we need to create an **experiment** file. This is a JSON file, that defines what should be executed +by OpenDC, and how. Below is an example of a simple **experiment** file: + +```json +{ + "name": "simple", + "topologies": [{ + "pathToFile": "topologies/small.json" + }, + { + "pathToFile": "topologies/big.json" + }], + "workloads": [{ + "pathToFile": "traces/bitbrains-small", + "type": "ComputeWorkload" + }] +} +``` + +In this **experiment**, three things are defined. First, is the `name`. This defines how the experiment is called +in the output folder. Second, is the `topologies`. This defines where OpenDC can find the topology files. +Finally, the `workloads`. This defines which workload OpenDC should run. You can download the experiment file [here](documents/experiments/simple_experiment.json "download") + +As you can see, `topologies` defines two topologies. In this case OpenDC will run two simulations, one with the small +topology, and one with the big topology. + +:::info +For more in depth information about Experiments, see [Experiment](../documentation/Input/Experiment) +::: + +## Running OpenDC +At this point, we should have all components to run an experiment. To make sure every file can be used by OpenDC, +please create an experiment folder such as the one shown below: +``` +── {simulation-folder-name} 📁 🔧 + ├── topologies 📁 🔒 + │ └── small.json 📄 🔧 + │ └── big.json 📄 🔧 + ├── experiments 📁 🔒 + │ └── simple_experiment.json 📄 🔧 + ├── workloads 📁 🔒 + │ └── bitbrains-small 📁 🔒 + │ └── fragments.parquet 📄 🔧 + │ └── tasks.parquet 📄 🔧 + ├── OpenDCExperimentRunner 📁 🔒 + │ └── lib 📁 🔒 + │ └── bin 📁 🔒 + ├── output 📁 🔒 +``` + +Executing the experiment can be done directly from the terminal. +Execute the following code from the terminal in simulation-folder-name + +``` +$ ./OpenDCExperimentRunner/bin/OpenDCExperimentRunner.sh --experiment-path "experiments/simple_experiment.json" +``` diff --git a/site/docs/getting-started/3-whats-next.md b/site/docs/getting-started/3-whats-next.md index 03737629..b7598022 100644 --- a/site/docs/getting-started/3-whats-next.md +++ b/site/docs/getting-started/3-whats-next.md @@ -9,4 +9,4 @@ Congratulations! You have just learned how to design and experiment with a (virt - Follow one of the [tutorials](/docs/category/tutorials) using OpenDC. - Read about [existing work using OpenDC](/community/research). - Get involved in the [OpenDC Community](/community/support). -- If you are interested in contributing to OpenDC you can find a How-To here [4-start-using-intellij](4-start-using-intellij.md), please also read https://github.com/atlarge-research/opendc/blob/master/CONTRIBUTING.md. +- If you are interested in contributing to OpenDC you can find a How-To here [4-start-using-intellij](1-start-using-intellij.md), please also read https://github.com/atlarge-research/opendc/blob/master/CONTRIBUTING.md. diff --git a/site/docs/getting-started/4-start-using-intellij.md b/site/docs/getting-started/4-start-using-intellij.md deleted file mode 100644 index 6aec91f1..00000000 --- a/site/docs/getting-started/4-start-using-intellij.md +++ /dev/null @@ -1,172 +0,0 @@ - - -# In this How-To we explain how you setup IntelliJ IDEA - -First of all you can download IntelliJ here: https://lp.jetbrains.com/intellij-idea-promo/ - -# Basic steps - -``` -git clone git@github.com:atlarge-research/opendc -``` - -Check if you have a compatible java version available. Make sure to have one of these versions available: [21] - -If not install a supported version! - -On a MAC - -``` -/usr/libexec/java_home -V -``` - -On Debian - -``` -update-alternatives --list java -``` - -On Redhat/Centos - -``` -yum list installed | grep java -``` - - -Open the project in IntelliJ - -![Intellij Open Project](img/intellij_open_project.png) - -Now fix the settings so that you use the correct java version. (In the example the java version is set to "21") -Navigation path in the settings pannel: "Build, Execution, Deployment" -> "Build Tools" -> "Gradle" - -![Intellij Settings](img/intellij_settings.png) - -Now navigate in the file menu to and open the file: "gradle"/"libs.versions.toml" - -Make sure the java version is set to the same version as previously cofigured in the settings. - -![Intellij Libs Versions Toml](img/intellij_libs_versions_toml.png) - - -Now open the Gradle panel on the right-hand side of the editor (1) and hit the refresh button at the top of the panel (2). - -![Intellij Gradle Panel](img/intellij_gradle_panel.png) - - -# Setup your first experiment and run it from source - - -Create a directory where you are going to put the files for your first experiment. - -File structure: - -![Experiment File Structure](img/experiment_file_structure.png) - -You can download the example workload trace (bitbrains-small-9d2e576e6684ddc57c767a6161e66963.zip) [here](https://atlarge-research.github.io/opendc/assets/files/bitbrains-small-9d2e576e6684ddc57c767a6161e66963.zip) - -Now unzip the trace. - -The content of "topology.json" - -``` -{ - "clusters": - [ - { - "name": "C01", - "hosts" : - [ - { - "name": "H01", - "cpu": - { - "coreCount": 32, - "coreSpeed": 3200 - }, - "memory": { - "memorySize": 256000 - } - } - ] - }, - { - "name": "C02", - "hosts" : - [ - { - "name": "H02", - "count": 6, - "cpu": - { - "coreCount": 8, - "coreSpeed": 2930 - }, - "memory": { - "memorySize": 64000 - } - } - ] - }, - { - "name": "C03", - "hosts" : - [ - { - "name": "H03", - "count": 2, - "cpu": - { - "coreCount": 16, - "coreSpeed": 3200 - }, - "memory": { - "memorySize": 128000 - } - } - ] - } - ] -} -``` - -The content of "experiment.json" - -The paths in the "experiment.json" file are relative to the "working directory" which is configured next. - - -``` -{ - "name": "simple", - "topologies": [{ - "pathToFile": "topology.json" - }], - "workloads": [{ - "pathToFile": "bitbrains-small", - "type": "ComputeWorkload" - }] -} -``` - -In the project file structure on the left open the following file: - -"opendc-experiments"/"opendc-experiments-base"/"src"/"main"/"kotlin"/"org.opendc.experiment.base"/"runner"/"ExperimentCLi.kt" - -![Intellij Experimentcli](img/Intellij_experimentcli.png) - -Now open the "Run/Debug" configuration (top right). - -![Intellij Open Run Config](img/intellij_open_run_config.png) - -We need to edit two settings: - -"Program arguments": --experiment-path experiment.json - -"Working Directory": a path where you have put the experiment files - -![Intellij Edit The Run Config](img/intellij_edit_the_run_config.png) - -Now you can click "Run" and start your first experiment. - -In the working directory a "output" direcotry is created with the results of the experiment. - -- cgit v1.2.3