quantifying-api-design
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (18.6%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: atlarge-research
- License: mit
- Language: Kotlin
- Default Branch: master
- Size: 29 MB
Statistics
- Stars: 0
- Watchers: 8
- Forks: 0
- Open Issues: 5
- Releases: 0
Metadata Files
README.md
Evaluation of Datacenter Scheduler Programming Abstractions
This repository contains the evaluation code and experiments written in Kotlin for the research work that investigates the performance impact of various datacenter scheduler programming abstractions.
Prerequisites
- An x86 machine with at least 16GB RAM.
- Any desktop Linux distribution with build tools installed. For example,
build-essentialpackage on Ubuntu. - Java 17 or greater.
- Python 3.11 (We recommend conda, virtualenv, or a similar environment).
Reproducibility instructions
- Run
./download-traces.sh. This will download all required traces from Zenodo and copy them to the relevant directories for experiments. - Setup a python 3.11 virtual environment. Install dependencies using
pip install -r plot/script/requirements.txt. - Use
./run-experiments.shto run the simulations and plot the results. - Figure 7 in the paper is
plot/output/migrations-results-packing-azure.pdf. Figure 8 isplot/output/migrations-results-totaltime-azure.pdf. Figure 10 isplot/output/metadata-results-ibm.pdf.
Getting Started
Detailed instructions to build individual experiments and modify them start here. The code for all the specific experiments can be found in the opendc-experiments/studying-apis directory of the repository. To run the experiments, make sure to place the relevant traces in the corresponding experiment folder within this directory. For example, an example trace bitbrains-small is provided in the traces directory for your reference.
Setup Traces
- Clone the repository to your local machine.
- Navigate to the
opendc-experiments/studying-apisfolder. - Place the relevant traces for the experiment you want to run in the corresponding experiment folder.
Here are the steps for proper trace placing:
- Download the necessary traces from the following link: https://zenodo.org/record/7996316.
- Store the downloaded traces in the directory structure:
opendc-experiments/studying-apis/<experiment>/src/main/resources/trace. - Create a folder within the
tracedirectory with a name corresponding to the source of the trace (e.g.,google,azure,bitbrains). - Place the trace Parquet file inside the respective source folder.
- Make sure to rename the trace file as
meta.parquetwhen copying it.
These steps ensure that the traces are properly organized and available for the evaluation experiments using the OpenDC platform.
Compile and Run
- Open the terminal and navigate to the
opendcproject directory. - Run the command
./gradlew :opendc-experiments:studying-apis:<experiment>:experimentto compile and run the desired experiment.
Plotting Experiment Results
To plot the experiment results, please follow these steps:
Install the required Python packages by running the following command:
pip install -r plot/script/requirements.txtEnsure that all the necessary files for plotting are located under the
./plotfolder in the repository.Set up the trace data by copying the corresponding trace files to the
./plot/trace/<dataset>directory. Rename the trace file tometa.parquet. For example, if you are working with the Azure dataset, the path would be./plot/trace/azure/meta.parquet.Prepare the input folder for the experiments you have run. Copy the experiment output to the path
./plot/input/<experiment>/<dataset>. To locate the output of the experiments, you can find them under the following directory structure: opendc-experiments/studying-apis//output/ . Each experiment and dataset combination will have its own corresponding folder under the output directory. For instance, if you ran the migrations experiment using the Azure dataset, the path would be ./plot/input/migrations/azure.Choose one of the available scripts located in the
./plot/scriptdirectory based on the experiment type. The available scripts are:migrations_plot_results.pyreservations_plot_results.pymetadata_plot_results.pymetadata_plot_preview.py
Run the selected script with the desired dataset parameter. For example, to plot the results for the Azure dataset using the reservations experiment, run the following command:
python3 ./plot/script/reservations_plot_results.py azureThe generated plots and visualizations will be available in the
./plot/output/<experiment>/<dataset>directory.
Please note that the dataset parameter is mandatory when running the plotting script, as it determines which dataset the script will process.
Feel free to explore the generated plots and visualizations to analyze and interpret the experiment results.
That's it! You should now be able to plot your experiment results using the provided scripts and instructions.
OpenDC
The evaluation experiments are performed using OpenDC, an open-source data center simulation platform. OpenDC allows for accurate and realistic simulations of data center environments, enabling thorough evaluation and analysis of various scheduling APIs and their impact on performance.
OpenDC is a free and open-source platform for datacenter simulation aimed at both research and education.

Users can construct datacenters (see above) and define portfolios of scenarios (experiments) to see how these datacenters perform under different workloads and schedulers (see below).

The simulator is accessible both as a ready-to-use website hosted by us at opendc.org, and as source code that users can run locally on their own machine, through Docker.
To learn more about OpenDC, have a look through our paper OpenDC 2.0 or on our vision.
🛠 OpenDC is a project by the @Large Research Group.
🐟 OpenDC comes bundled with Capelin , the capacity planning tool for cloud datacenters based on portfolios of what-if scenarios. More information on how to use and extend Capelin coming soon!
Documentation
The documentation is located in the docs/ directory and is divided as follows:
Contributing
Questions, suggestions and contributions are welcome and appreciated! Please refer to the contributing guidelines for more details.
License
This work is distributed under the MIT license. See LICENSE.txt.
Owner
- Name: @Large Research
- Login: atlarge-research
- Kind: organization
- Email: info@atlarge-research.com
- Website: http://atlarge-research.com/
- Twitter: LargeResearch
- Repositories: 24
- Profile: https://github.com/atlarge-research
Massivizing Computer Systems
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "OpenDC"
authors:
- family-names: Mastenbroek
given-names: Fabian
- family-names: Andreadis
given-names: Georgios
- family-names: Jounaid
given-names: Soufiane
- family-names: Lai
given-names: Wenchen
- family-names: Burley
given-names: Jacob
- family-names: Bosch
given-names: Jaro
- family-names: van Eyk
given-names: Erwin
- family-names: Versluis
given-names: Laurens
- family-names: van Beek
given-names: Vincent
- family-names: Iosup
given-names: Alexandru
version: 2.0
preferred-citation:
type: conference-paper
title: "OpenDC 2.0: Convenient Modeling and Simulation of Emerging Technologies in Cloud Datacenters"
collection-title: "21st IEEE/ACM International Symposium on Cluster, Cloud and Internet Computing, CCGrid 2021, Melbourne, Australia, May 10-13, 2021"
collection-type: proceedings
conference:
name: "CCGrid 2021"
publisher:
name: "IEEE"
doi: "10.1109/CCGrid51090.2021.00055"
year: "2021"
start: "455"
end: "464"
authors:
- family-names: Mastenbroek
given-names: Fabian
- family-names: Andreadis
given-names: Georgios
- family-names: Jounaid
given-names: Soufiane
- family-names: Lai
given-names: Wenchen
- family-names: Burley
given-names: Jacob
- family-names: Bosch
given-names: Jaro
- family-names: van Eyk
given-names: Erwin
- family-names: Versluis
given-names: Laurens
- family-names: van Beek
given-names: Vincent
- family-names: Iosup
given-names: Alexandru
editors:
- family-names: Lefèvre
given-names: Laurent
- family-names: Patterson
given-names: Stacy
- family-names: Lee
given-names: Young Choon
- family-names: Shen
given-names: Haiying
- family-names: Ilager
given-names: Shashikant
- family-names: Goudarzi
given-names: Mohammad
- family-names: Toosi
given-names: Adel Nadjaran
- family-names: Buyya
given-names: Rajkumar
GitHub Events
Total
Last Year
Dependencies
- actions/checkout v3 composite
- actions/setup-java v3 composite
- actions/upload-artifact v3 composite
- codecov/codecov-action v3 composite
- gradle/gradle-build-action v2 composite
- gradle/wrapper-validation-action v1 composite
- mikepenz/action-junit-report v3.0.1 composite
- docker/build-push-action v2 composite
- docker/login-action v1 composite
- actions/checkout v3 composite
- actions/setup-java v3 composite
- gradle/gradle-build-action v2 composite
- gradle/wrapper-validation-action v1 composite
- softprops/action-gh-release v1 composite
- actions/checkout v3 composite
- actions/setup-java v3 composite
- gradle/gradle-build-action v2 composite
- actions/checkout v3 composite
- actions/setup-java v3 composite
- gradle/gradle-build-action v2 composite
- dpage/pgadmin4 latest
- atlargeresearch/opendc v2.1
- atlargeresearch/opendc-web-api v2.1
- atlargeresearch/opendc-web-ui v2.1
- postgres latest
- openjdk 17-slim build
- openjdk 17-slim build
- node 16 build
- node 16-slim build
- org.jetbrains.kotlin:kotlin-reflect 1.6.10 implementation
- eslint ^8.12.0 development
- eslint-config-next ^12.1.4 development
- @auth0/auth0-react ^1.7.0
- @fortawesome/fontawesome-svg-core ^1.2.35
- @fortawesome/free-brands-svg-icons ^5.15.3
- @fortawesome/free-solid-svg-icons ^5.15.3
- @fortawesome/react-fontawesome ^0.1.14
- @patternfly/react-core ^4.198.19
- @patternfly/react-icons ^4.49.19
- @patternfly/react-table ^4.67.19
- @sentry/react ^5.30.0
- @sentry/tracing ^5.30.0
- approximate-number ^2.1.0
- classnames ^2.3.1
- husky ^4.3.8
- immer ^9.0.6
- konva ^7.2.5
- lint-staged ^10.5.4
- mathjs ^7.6.0
- next ^12.1.0
- next-global-css ^1.3.0
- normalizr ^3.6.1
- prettier ^2.3.2
- prop-types ^15.7.2
- react ^17.0.2
- react-dom ^17.0.2
- react-hotkeys ^2.0.0
- react-konva ^17.0.2-5
- react-query ^3.22.0
- react-redux ^7.2.5
- recharts ^2.1.2
- redux ^4.1.1
- redux-logger ~3.0.6
- redux-saga ~1.1.3
- redux-thunk ~2.3.0
- sass ^1.39.0
- svgsaver ^0.9.0
- use-resize-observer ^8.0.0
- uuidv4 ^6.2.12
- 457 dependencies
- Pillow ==9.2.0
- Pygments ==2.13.0
- black ==22.10.0
- boto3 ==1.26.1
- botocore ==1.29.1
- click ==8.1.3
- commonmark ==0.9.1
- contourpy ==1.0.5
- cycler ==0.11.0
- darker ==1.5.1
- fonttools ==4.37.3
- jmespath ==1.0.1
- kiwisolver ==1.4.4
- matplotlib ==3.6.0
- mypy-extensions ==0.4.3
- numpy ==1.23.3
- packaging ==21.3
- pandas ==1.5.0
- pathspec ==0.10.1
- platformdirs ==2.5.2
- pyarrow *
- pyparsing ==3.0.9
- python-dateutil ==2.8.2
- pytz ==2022.2.1
- rich ==12.6.0
- s3transfer ==0.6.0
- scipy ==1.10.0
- seaborn ==0.12.0
- setuptools-scm ==7.0.5
- six ==1.16.0
- toml ==0.10.2
- tomli ==2.0.1
- typer ==0.6.1
- typing_extensions ==4.3.0
- urllib3 ==1.26.12