Skip to content

Commit 52a014f

Browse files
committed
Update quickstart section and reformat files
1 parent 23d0a3e commit 52a014f

18 files changed

Lines changed: 366 additions & 386 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
.idea/
22
.bundle/
3+
.devcontainer/
4+
.vscode/
35
_site/
46
_includes/
57
vendor/

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
BSD 3-Clause License
22

3-
Copyright (c) 2022, Technical University of Darmstadt, Darmstadt, Germany
3+
Copyright (c) 2026, Technical University of Darmstadt, Darmstadt, Germany
44
All rights reserved.
55

66
Redistribution and use in source and binary forms, with or without

_config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ callouts:
2323
color: red
2424

2525
mermaid:
26-
version: "10.3.0"
26+
version: "11.12.3"
2727

2828
aux_links:
2929
"ElastiSim on GitHub":
3030
- "//github.com/elastisim"
3131

32-
footer_content: "Copyright © 2023, Technical University of Darmstadt."
32+
footer_content: "Copyright © 2026, Technical University of Darmstadt."
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
layout: default
3-
title: Acknowledgement
3+
title: Acknowledgment
44
nav_order: 8
55
---
66

7-
# Acknowledgement
7+
# Acknowledgment
88

99
If you have used ElastiSim in your research or publication, please cite the original paper.
1010

@@ -31,4 +31,4 @@ If you have used ElastiSim in your research or publication, please cite the orig
3131

3232
### Citation (ACM style)
3333

34-
Taylan Özden, Tim Beringer, Arya Mazaheri, Hamid Mohammadi Fard, and Felix Wolf. 2022. ElastiSim: A Batch-System Simulator for Malleable Workloads. In *Proceedings of the 51st International Conference on Parallel Processing (ICPP '22)*. Association for Computing Machinery, New York, NY, USA, Article 40, 1–11. [https://doi.org/10.1145/3545008.3545046](https://doi.org/10.1145/3545008.3545046)
34+
Taylan Özden, Tim Beringer, Arya Mazaheri, Hamid Mohammadi Fard, and Felix Wolf. 2022. ElastiSim: A Batch-System Simulator for Malleable Workloads. In _Proceedings of the 51st International Conference on Parallel Processing (ICPP '22)_. Association for Computing Machinery, New York, NY, USA, Article 40, 1–11. [https://doi.org/10.1145/3545008.3545046](https://doi.org/10.1145/3545008.3545046)

configuration.md

Lines changed: 30 additions & 30 deletions
Large diffs are not rendered by default.

contact-us.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ nav_order: 9
88

99
The easiest way to contact us is via our Slack workspace. Please use the invitation link below to join our Slack workspace.
1010

11-
[ElastiSim Slack](https://join.slack.com/t/elastisim/shared_invite/zt-23ln6g4dc-DZwf0b1TV~qgjVkPKQGI4A){: .btn }
11+
[ElastiSim Slack](https://join.slack.com/t/elastisim/shared_invite/zt-23ln6g4dc-DZwf0b1TV~qgjVkPKQGI4A){: .btn }

get-started/installation.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ nav_order: 2
1010
## Required libraries
1111

1212
ElastiSim requires four libraries to be installed (or available):
13+
1314
- [SimGrid](https://simgrid.org/) to simulate the underlying platform
1415
- [ZeroMQ](https://zeromq.org/) for C++ ([cppzmq](https://github.com/zeromq/cppzmq) binding) to communicate with the scheduler process
1516
- [JSON for Modern C++](https://json.nlohmann.me/) to read input files and wrap messages (provided with ElastiSim)
1617
- [ExprTk](https://www.partow.net/programming/exprtk/) to evaluate performance models (provided with ElastiSim)
1718
- [Activity Indicators for Modern C++](https://github.com/p-ranav/indicators) to indicate the progress of processed jobs (provided with ElastiSim)
1819

1920
Depending on the scheduling interface, an additional ZeroMQ binding is required. ElastiSim currently supports a Python interface to write scheduling algorithms and therefore requires:
21+
2022
- [PyZMQ](https://pyzmq.readthedocs.io/) to communicate with the simulator process
2123

2224
## Build (on Linux systems)

get-started/quickstart.md

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,21 @@ nav_order: 1
77

88
# Quickstart
99

10-
The easiest way to get started with ElastiSim is by cloning the example project available on [GitHub](https://github.com/elastisim/example-project). This scenario simulates an FCFS (first come, first serve) scheduling algorithm applied on 500 jobs—including all job types—with alternating compute and I/O phases (see [Application model](#application-model)) running on a crossbar topology with 128 compute nodes. While evolving and adaptive jobs request a new configuration at the beginning of each iteration of the specified phase, malleable jobs accept any reconfiguration. The scheduler accepts all evolving requests that shrink the job but accepts evolving requests to expand the job only to a maximum of available nodes. For malleable jobs, the scheduler expands to the highest possible number of nodes based on the number of available nodes. The following steps will create a Docker container including all the required libraries for ElastiSim and start the simulation.
10+
The easiest way to get started with ElastiSim is to use the [Dev Containers](https://github.com/elastisim/elastisim-devcontainer) we provide on GitHub. Dev Containers are containerized development environments native to VSCode. We provide all necessary setup files that automatically install required libraries and dependencies within a Docker container, facilitating rapid development. To learn more about Dev Containers, please visit the official [Dev Container documentation](https://code.visualstudio.com/docs/devcontainers/containers).
1111

12-
## Installation
13-
14-
To build the container required to run ElastiSim, install Docker and execute the following command:
15-
```sh
16-
docker build -t elastisim .
17-
```
12+
We provide two flavors of Dev Containers for 1) users and 2) contributors. The user Dev Container builds the environment for developing custom scheduling algorithms using the ElastiSim simulation engine and the Python interface. After the setup, the container automatically clones the [example project](https://github.com/elastisim/example-project), enabling users to experiment immediately. In contrast, the contributor Dev Container targets developers contributing to the ElastiSim project and additionally includes the source code for both projects, the [simulation engine](https://github.com/elastisim/elastisim), and the [Python interface](https://github.com/elastisim/elastisim-python). Both Dev Containers provide all necessary settings, launch, and build files to run the experiment or compile the project immediately. If you use ElastiSim to develop and evaluate custom schedulers, we strongly advise using the user container, as it focuses on a minimal build and performance.
1813

19-
## Simulation
20-
21-
To run the simulation, execute the following commands in two different sessions:
14+
The scenario in the example project simulates an FCFS (first-come, first-serve) scheduling algorithm applied to 500 jobs—including all job types—with alternating compute and I/O phases (see [Application model](#application-model)) running on a crossbar topology with 128 compute nodes. While evolving and adaptive jobs request a new configuration at the beginning of each iteration of the specified phase, malleable jobs accept any reconfiguration. The scheduler accepts all evolving requests that shrink the job, but accepts evolving requests to expand the job only up to the maximum number of available nodes. For malleable jobs, the scheduler expands to the highest possible number of nodes based on the number of available nodes.
2215

23-
### Linux:
24-
```sh
25-
docker run -v $PWD/data:/data -v $PWD/algorithm:/algorithm -u `id -u $USER` --name elastisim -it --rm elastisim /data/input/configuration.json --log=root.thresh:warning
26-
docker exec -u `id -u $USER` -it elastisim python3 /algorithm/algorithm.py
27-
```
16+
## Installation
2817

29-
### Mac OS:
30-
```sh
31-
docker run -v $PWD/data:/data -v $PWD/algorithm:/algorithm --name elastisim -it --rm elastisim /data/input/configuration.json --log=root.thresh:warning
32-
docker exec -it elastisim python3 /algorithm/algorithm.py
33-
```
18+
To build the Dev Container, clone [elastisim-devcontainer](https://github.com/elastisim/elastisim-devcontainer) and open the folder in VSCode, where you will see a notification that the repository contains Dev Container files. Open the repository in the container and choose _ElastiSim User_ or _Contributor_, respectively. The container will now build automatically and set up all necessary files.
3419

35-
### Windows (PowerShell):
36-
```sh
37-
docker run -v ${PWD}\data:/data -v ${PWD}\algorithm:/algorithm --name elastisim -it --rm elastisim /data/input/configuration.json --log=root.thresh:warning
38-
docker exec -it elastisim python3 /algorithm/algorithm.py
39-
```
40-
41-
The first command runs the ElastiSim simulator process and accepts two inputs:
42-
- the configuration file (JSON)
43-
- the logging level
20+
## Simulation
4421

45-
For a more detailed output, change `--log=root.thresh:warning` to `--log=root.thresh:info` (caution: verbose).
22+
To run the simulation, execute the _Run ElastiSim Scenario_ from the _Run and Debug_ panel. If you are using the contributor Dev Container, you must build the project first using the CMake configuration files provided by the container.
4623

47-
The second command runs the scheduling algorithm.
24+
For a more detailed output, change the arguments of the simulation engine from `--log=root.thresh:warning` to `--log=root.thresh:info` in the launch.json file under the .vscode folder (caution: verbose).
4825

4926
# Application model
5027

get-started/scheduling-protocol.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ nav_order: 3
77

88
# Scheduling protocol
99

10-
During simulations, the simulator and the scheduler process are in constant communication. The scheduling protocol defines *which* data the processes exchange *when*.
10+
During simulations, the simulator and the scheduler process are in constant communication. The scheduling protocol defines _which_ data the processes exchange _when_.
1111

1212
{: .note }
13-
Do not confuse the scheduling protocol with the communication protocol. The scheduling protocol does **not** define *how* the data is exchanged.
13+
Do not confuse the scheduling protocol with the communication protocol. The scheduling protocol does **not** define _how_ the data is exchanged.
1414

1515
ElastiSim invokes the scheduling algorithm periodically in a user-defined interval or at events such as job submissions or scheduling points (see [Configuration](/configuration) for all options). Each invocation contains a list of compute nodes, jobs, and a map holding system information. After the scheduling algorithm makes a scheduling decision, the scheduler process forwards the decision to the simulator process, applying the new schedule.
1616

index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ nav_order: 1
77
# ElastiSim
88

99
Resource and job management systems (often called batch systems, job schedulers, or workload managers) schedule jobs and provide resources in large-scale computing environments. ElastiSim is a batch-system simulator for malleable and evolving workloads, including the simulation of
10+
1011
- jobs and applications,
1112
- the scheduling algorithm, and
1213
- the platform (powered by [SimGrid](https://simgrid.org/)).

0 commit comments

Comments
 (0)