summaryrefslogtreecommitdiff
path: root/site/docs/getting-started
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-08-04 16:40:44 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-09-13 16:15:59 +0200
commitfdc3200ef4718eb98bd8a713f956222a9bf85ac9 (patch)
tree4fa8e5998bd4ee59397b26222846c554b73abe4e /site/docs/getting-started
parent8a94318aad4b4fa188ac49e887d564867a00111e (diff)
docs: Add initial version of Docusaurus based docs
This change updates the repository with a new Docusaurus-based documentation website. This allows us to create our documentation using Markdown, MDX and React. This will serve as the main entry point for users visiting https://opendc.org. The actual OpenDC application will be moved to https://app.opendc.org.
Diffstat (limited to 'site/docs/getting-started')
-rw-r--r--site/docs/getting-started/0-installation.md55
-rw-r--r--site/docs/getting-started/1-design.mdx154
-rw-r--r--site/docs/getting-started/2-experiment.mdx74
-rw-r--r--site/docs/getting-started/3-whats-next.md12
-rw-r--r--site/docs/getting-started/_category_.json8
5 files changed, 303 insertions, 0 deletions
diff --git a/site/docs/getting-started/0-installation.md b/site/docs/getting-started/0-installation.md
new file mode 100644
index 00000000..2747c344
--- /dev/null
+++ b/site/docs/getting-started/0-installation.md
@@ -0,0 +1,55 @@
+---
+description: How to install OpenDC locally, and start experimenting in no time.
+---
+
+# Installation
+
+This page describes how to set up and configure a local single-user OpenDC installation so that you can quickly get your
+experiments running. You can also use the [hosted version of OpenDC](https://app.opendc.org) to get started even
+quicker.
+
+
+## Prerequisites
+
+1. **Supported Platforms**
+ OpenDC is actively tested on Windows, macOS and GNU/Linux.
+2. **Required Software**
+ A Java installation of version 11 or higher is required for OpenDC. You may download the
+ [Java distribution from Oracle](https://www.oracle.com/java/technologies/downloads/) or use the distribution provided
+ by your package manager.
+
+## Download
+
+To get an OpenDC distribution, download a recent stable version from our [Releases](https://github.com/atlarge-research/opendc/releases)
+page on GitHub.
+
+## Setup
+
+Unpack the downloaded OpenDC distribution and try the following command:
+
+```bash
+$ bin/opendc-server
+__ ____ __ _____ ___ __ ____ ______
+ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
+ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
+--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
+2022-09-12 10:30:22,064 INFO [org.fly.cor.int.dat.bas.BaseDatabaseType] (main) Database: jdbc:h2:file:./data/opendc.db (H2 2.1)
+2022-09-12 10:30:22,089 WARN [org.fly.cor.int.dat.bas.Database] (main) Flyway upgrade recommended: H2 2.1.214 is newer than this version of Flyway and support has not been tested. The latest supported version of H2 is 2.1.210.
+2022-09-12 10:30:22,098 INFO [org.fly.cor.int.com.DbMigrate] (main) Current version of schema "PUBLIC": 1.0.0
+2022-09-12 10:30:22,099 INFO [org.fly.cor.int.com.DbMigrate] (main) Schema "PUBLIC" is up to date. No migration necessary.
+2022-09-12 10:30:22,282 INFO [org.ope.web.run.run.OpenDCRunnerRecorder] (main) Starting OpenDC Runner in background (polling every PT30S)
+2022-09-12 10:30:22,347 INFO [io.quarkus] (main) opendc-web-server 2.1-rc1 on JVM (powered by Quarkus 2.11.1.Final) started in 1.366s. Listening on: http://0.0.0.0:8080
+2022-09-12 10:30:22,348 INFO [io.quarkus] (main) Profile prod activated.
+2022-09-12 10:30:22,348 INFO [io.quarkus] (main) Installed features: [agroal, cdi, flyway, hibernate-orm, hibernate-validator, jdbc-h2, jdbc-postgresql, kotlin, narayana-jta, opendc-runner, opendc-ui, resteasy, resteasy-jackson, security, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]
+```
+This will launch the built-in single-user OpenDC server on port 8080. Visit
+[http://localhost:8080](http://localhost:8080) to access the bundled web UI.
+
+## Configuration
+
+OpenDC can be configured using the configuration files located in the `conf` directory. By default, all user data is
+stored in the `data` directory using the H2 database engine.
+
+## Multi-tenant deployment
+
+For more information on setting up multi-tenant, non-trivial deployments, see the [Deployment Guide](docs/advanced-guides/deploy.md).
diff --git a/site/docs/getting-started/1-design.mdx b/site/docs/getting-started/1-design.mdx
new file mode 100644
index 00000000..144fbf98
--- /dev/null
+++ b/site/docs/getting-started/1-design.mdx
@@ -0,0 +1,154 @@
+---
+description: How to design a virtual datacenter in OpenDC from scratch.
+---
+
+# Design a Datacenter
+
+Now that you have installed OpenDC (or are using the hosted version), we will start designing a (virtual) datacenter
+in OpenDC.
+
+## Before we start
+
+There are a couple of steps we need to perform before we can start designing a datacenter in OpenDC. First, we need to
+enter the OpenDC web application. This done as follows:
+
+<div className="container">
+ <div className="row">
+ <div className="col col--6">
+ <div className="card">
+ <div className="card__body">
+ <h4>Hosted Deployment</h4>
+ <small>
+ To enter the hosted version of OpenDC, you need a user account. User management is provided
+ by <a href="https://auth0.com">Auth0</a>, which allows you to login with social accounts or via
+ email.
+ </small>
+ </div>
+ <div className="card__footer">
+ <a href="https://app.opendc.org" className="button button--primary button--block">Login to OpenDC</a>
+ </div>
+ </div>
+ </div>
+ <div className="col col--6">
+ <div className="card">
+ <div className="card__body">
+ <h4>Local Deployment</h4>
+ <small>
+ The local distribution of OpenDC runs in single-user mode by default, which does not require
+ authentication. This allows you to quickly start designing and experimenting with new
+ datacenters.
+ </small>
+ </div>
+ <div className="card__footer">
+ <a href="http://localhost:8080" className="button button--secondary button--block">Launch OpenDC (local)</a>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+### Create a Project
+
+Next, we need to create a new project. Projects allow you to organize your designs and experiments together.
+Click on ‘+ New Project’ in the right corner to open the project creation dialog.
+Give your project a name and save it. You can now open it by clicking on it in the project table. If all went well,
+you’re redirected to your new project, and are presented with an empty project overview.
+
+### Create a Topology
+
+In OpenDC, the datacenter design is also called a **topology**. This topology represents the physical layout of a
+datacenter and specifies everything from the architectural layout of the datacenter’s rooms to which CPUs are in a
+particular machine.
+
+To create a design (topology), click on ‘+ New Topology’ in the top right corner of the topology table.
+Once you have created the topology, it will appear the topology table. By clicking on the topology, you will be
+redirected to a (still empty) overview of the topology. From here, we'll start designing a datacenter.
+
+### Terminology
+
+Here’s an overview of some of the language you’ll find when designing a datacenter in OpenDC:
+
+- **Topology**: the physical layout of your datacenter
+- **Room**: a room in the datacenter
+- **Tile**: one of the tiles that forms a room
+- **Rack**: a rack of servers that stands on top of a tile
+- **Machine**: a machine that takes up a single slot in a server rack, containing several components such as CPUs, GPUs,
+ network interfaces and storage drives.
+
+## Build the datacenter
+
+Open the project and topology that you have created and click on the 'Floor Plan' tab (see [Figure 1](#floor-plan)).
+We’re now in datacenter construction mode. Notice the grid on the canvas? That’s where you’ll place tiles, in order to
+build rooms. Let’s take a moment to familiarize ourselves with the interface.
+
+If you dismiss the sidebar on your left, you have controls for zooming in and out. Next to the zooming buttons, you also
+have a ‘Screenshot’ button, in case you want to record the state of the canvas and export it to an image file. On the
+right side of the screen, you have the context menu. This menu changes depending on your zoom level.
+
+As there are currently no rooms, we are in ‘Building’ mode, and our only option is to ‘Construct a new room’. Click on
+that button to build a first datacenter room - once you’ve clicked on it, every tile of the canvas that you click on
+becomes a tile of that room. There is one restriction though: Each tile that you add must be adjacent to any previous
+tiles that you have added. You can see for yourself which tile positions are clickable through the highlight color that
+is shown on hovering over them.
+
+<figure className="figure" id="floor-plan">
+ <img src={require("@site/src/components/HomepageFeatures/screenshot-construction.png").default} alt="Analysis of results reported by OpenDC" />
+ <figcaption>The floor plan of a (virtual) datacenter in OpenDC.</figcaption>
+</figure>
+
+### Create a Room
+
+:::note Action
+
+Create at least a single room, with help of the above instructions.
+
+:::
+
+Once you’ve placed the tiles, you can give the room a name, if you want to. To do this, click on the room you want to
+edit. You’ll notice the application going into ‘Room’ mode, allowing you to manipulate the topology of the datacenter at
+a more fine-grained level. In the context menu, change the room name, and click on the ‘Save’ button. You can exit
+‘Room’ mode by clicking on any of the darkened areas outside of the selected room. This will bring you back to
+‘Building’ mode.
+
+### Place Server Racks
+
+:::note Action
+
+Add at least a single rack in the room.
+
+:::
+
+Empty rooms are of no use to the stakeholders of a datacenter. They want machines! Let’s place some racks in the room
+to fulfill this demand. Click on the room and add some racks. To stop adding racks, click on the blue element in the
+sidebar, again.
+
+### Fill the Racks with Servers
+
+:::note Action
+
+Add a couple of servers to the rack.
+
+:::
+
+To add actual servers to the empty racks, we’ll need to go one level deeper in the topological hierarchy of the
+datacenter. Clicking on a rack lets you do just that. Once you’ve clicked on it, you’ll notice the context menu now
+displaying slots. In each slot fits exactly one server unit. To add such a server unit, click on the ‘Add machine’
+button of that slot.
+Just like in ‘Room’ mode, you can exit ‘Rack’ mode by clicking on any of the darkened tiles around the currently
+selected rack.
+
+### Add Resources to the Servers
+
+We’re almost done creating our datacenter! The only problem we have is that the machines / servers we just added lack
+any real resources (such as CPUs, GPUs, memory cards, and disk storage).
+
+:::note Action
+
+Populate the machines with CPU and memory resources.
+
+:::
+
+To do this, click on any machine you want to edit. Notice the context menu changing, with tabs to add different kinds of
+units to your machine. Have a look around as to what can be added.
+
+Once you are satisfied with the datacenter design, we will experiment with the design in the next chapter.
diff --git a/site/docs/getting-started/2-experiment.mdx b/site/docs/getting-started/2-experiment.mdx
new file mode 100644
index 00000000..e25dffc9
--- /dev/null
+++ b/site/docs/getting-started/2-experiment.mdx
@@ -0,0 +1,74 @@
+---
+description: How to experiment with your datacenter designs.
+---
+
+# Create an Experiment
+
+After designing a datacenter in OpenDC, the next step is to experiment with the design using OpenDC's built-in
+simulator, in order to analyze its performance and compare it against other designs.
+
+In OpenDC, we use the concept of portfolios of scenarios to experiment with datacenter designs. In the next sections, we
+will explain how you can use these powerful concepts for the experimental analysis of your designs.
+
+## Create a Portfolio
+OpenDC organizes multiple scenarios (experiments) into a **portfolio**. Each portfolio is composed of a base scenario,
+a set of candidate scenarios given by the user and a set of targets (e.g., metrics) used to compare scenarios.
+
+To create a new portfolio, open a project in the OpenDC web interface and click on ‘+ New Portfolio’ in the top right
+corner of the portfolio table. This opens a modal with the following options:
+
+1. **Name**: the name of your portfolio.
+2. **Metrics**: the metrics that you want to use to compare the scenarios in the portfolio.
+3. **Repeats per Scenario**: the number of times each scenario should be simulated (to account for variance).
+
+## Create Scenarios
+
+A **scenario** represents a point in the datacenter design space that should be explored. It consists of a combination
+of workload, topology, and a set of operational phenomena. Phenomena can include correlated failures, performance
+variability, security breaches, etc., allowing the scenarios to more accurately capture the real-world operations.
+
+The baseline for comparison in a portfolio is the **base scenario**. It represents the status quo of the infrastructure
+or, when planning infrastructure from scratch, it consists of very simple base workloads and topologies.
+The other scenarios in a portfolio, called the **candidate scenarios**, represent changes to the configuration
+that might be of interest to the datacenter designer. Dividing scenarios into these two categories ensures that any
+comparative insights provided by OpenDC are meaningful within the context of the current architecture.
+
+To create a new scenario, open a portfolio in the OpenDC web interface and click on ‘+ New Scenario’ in the top right
+corner of the scenario table. This opens a modal with the following options (as shown in [Figure 1](#explore)):
+
+1. **Name**: the name of your scenario. The first scenario of a portfolio is always called the _Base scenario_.
+2. **Workload**: the applications (e.g., virtual machines, workflows, functions) that consume resources in your
+ datacenter.
+ 1. **Workload Trace**: A dataset that characterizes the historical runtime behavior of virtual machines in the
+ workload over time.
+ 2. **Load Sampling Fraction**: The percentage of the workload that should be simulated (e.g., 10% of virtual
+ machines in the workload trace).
+3. **Environment**:
+ 1. **Topology**: one of the topologies of the project to use for the scenario.
+ 2. **Scheduler**: the algorithm that decides on which hosts the virtual machines should be placed.
+4. **Operational Phenomena**:
+ 1. **Failures**: a flag to enable stochastic host failures during simulation.
+ 2. **Performance interference**: a flag to enable performance interference between virtual machines (only available
+ for a subset of traces).
+
+Once you have created the scenario, it will be enqueued for simulation. Usually the results of the simulation should be
+available within one minute after creation. However, if there are lots of queued simulation jobs, it might take a bit
+longer.
+
+<figure className="figure" id="explore">
+ <img src={require("@site/src/components/HomepageFeatures/screenshot-explore.png").default} alt="Creating a new scenario in OpenDC" />
+ <figcaption>Creating a new scenario in OpenDC. The user can select the topology, workload, and operational phenomena.</figcaption>
+</figure>
+
+## Analyze Results
+
+After creating scenarios, the scenario table will show whether the simulation is still pending, completed successfully,
+or failed for some reason. If the scenario was simulated successfully, its results will become visible on the ‘Results’
+tab as shown in [Figure 2](#analysis).
+
+<figure className="figure" id="analysis">
+ <img src={require("@site/src/components/HomepageFeatures/screenshot-results.png").default} alt="Analysis of results reported by OpenDC" />
+ <figcaption>Plots and visual summaries generated by OpenDC comparing different scenarios.</figcaption>
+</figure>
+
+This tab will show the selected metrics for the portfolio and allow you to compare their values for different scenarios.
diff --git a/site/docs/getting-started/3-whats-next.md b/site/docs/getting-started/3-whats-next.md
new file mode 100644
index 00000000..7c021119
--- /dev/null
+++ b/site/docs/getting-started/3-whats-next.md
@@ -0,0 +1,12 @@
+---
+description: How to supercharge your designs and experiments with OpenDC.
+---
+
+# What's next?
+
+Congratulations! You have just learned how to design and experiment with a (virtual) datacenter in OpenDC. What's next?
+
+- Follow one of the [tutorials](/docs/category/tutorials) using OpenDC.
+- Check the [advanced guides](/docs/category/advanced-guides) for more complex material.
+- Read about [existing work using OpenDC](/community/research).
+- Get involved in the [OpenDC Community](/community/support).
diff --git a/site/docs/getting-started/_category_.json b/site/docs/getting-started/_category_.json
new file mode 100644
index 00000000..169f7a27
--- /dev/null
+++ b/site/docs/getting-started/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Getting Started",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "10 minutes to learn the most important concepts of OpenDC."
+ }
+}