summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-05-03simulator: Simplify scheduling logic of resource aggregatorFabian Mastenbroek
This change simplifies the scheduling logic of the resource aggregator. Previously, after each scheduling cycle, each aggregated input was interrupted. With the new approach, the scheduler can decide which ones of the inputs to send a new command to.
2021-05-03Prepare for OpenDC 2.0 release (v1)Fabian Mastenbroek
This pull request performs several preparations for the official release of OpenDC 2.0. This pull request mostly focuses on documentation changes. ## Details 1. Restructure project documentation 2. Migrate to Dokka 1.4.32 3. Merge CI builds into single workflow
2021-05-03docs: Add document on OpenDC publicationsFabian Mastenbroek
2021-05-03docs: Add document for toolchain setupFabian Mastenbroek
2021-05-03ci: Merge CI builds into single workflowFabian Mastenbroek
This change merges the three CI builds for the simulator, frontend and API into a single workflow that builds the components in separate, independent jobs.
2021-05-03build: Migrate to Dokka 1.4.32Fabian Mastenbroek
This change migrates Dokka, the documentation generation tool for Kotlin, to version 1.4.32. This is a significant upgrade over the previous version which should support multiple modules as well as multiple output formats.
2021-05-03build: Add support for distribution packagingFabian Mastenbroek
This change configures the Distribution plugin for the root project and aggregates the artifacts of the other projects to generate a single distribution file containing all libraries and binaries.
2021-05-03docs: Revamp project documentationFabian Mastenbroek
This change updates the project documentation by moving most of the documentation to the docs directory.
2021-05-02api: Bump rsa from 4.6 to 4.7 (#124)dependabot[bot]
Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.6 to 4.7. - [Release notes](https://github.com/sybrenstuvel/python-rsa/releases) - [Changelog](https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md) - [Commits](https://github.com/sybrenstuvel/python-rsa/compare/version-4.6...version-4.7) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-25build: Flatten project structureFabian Mastenbroek
This change updates the project structure to become flattened. Previously, the simulator, frontend and API each lived into their own directory. With this change, all modules of the project live in the top-level directory of the repository.
2021-04-25ci: Update Codecov pathsFabian Mastenbroek
This change updates the references to the API and Simulator modules of the projects for Codecov.
2021-04-25docs: Actualize READMEFabian Mastenbroek
This change updates several points in the README that were outdated or incorrect.
2021-04-25docs: Mention software license in READMEFabian Mastenbroek
This change adds a description of the software license under which OpenDC is distributed to the README.md file.
2021-04-25build: Adjust docker-compose configuration to flat structureFabian Mastenbroek
This change adjusts the docker-compose configuration to support the re-organized project structure.
2021-04-25ci: Fix references to frontend and API modulesFabian Mastenbroek
This change fixes the references to the frontend and API modules that were invalidated due to the restructuring of project in the previous commit.
2021-04-25build: Migrate to flat project structureFabian Mastenbroek
This change updates the project structure to become flattened. Previously, the simulator, frontend and API each lived into their own directory. With this change, all modules of the project live in the top-level directory of the repository. This should improve discoverability of modules of the project.
2021-04-23simulator: Add the MSE power model (#121)Hongyu
This change adds a power model for optimizing the mean squared error to the available power models in OpenDC.
2021-04-21simulator: Introduce SimulationCoroutineDispatcher (#120)Fabian Mastenbroek
This change introduces the SimulationCoroutineDispatcher implementation which replaces the TestCoroutineDispatcher for running single-threaded simulations.
2021-04-21simulator: Migrate to SimulationCoroutineDispatcherFabian Mastenbroek
This change migrates the remainder of the codebase to the SimulationCoroutineDispatcher implementation.
2021-04-21simulator: Introduce SimulationCoroutineDispatcherFabian Mastenbroek
This change introduces the SimulationCoroutineDispatcher implementation which replaces the TestCoroutineDispatcher for running single-threaded simulations. Previously, we used the TestCoroutineDispatcher from the kotlinx-coroutines-test modules for running simulations. However, this module is aimed at coroutine tests and not at simulations. In particular, having to construct a Clock object each time for the TestCoroutineDispatcher caused a lot of unnecessary lines. With the new approach, the SimulationCoroutineDispatcher automatically exposes a usable Clock object. In addition to ergonomic benefits, the SimulationCoroutineDispatcher is much faster than the TestCoroutineDispatcher due to the assumption that simulations run in only a single thread. As a result, the dispatcher does not need to perform synchronization and can use the fast PriorityQueue implementation.
2021-04-21api: Bump py from 1.9.0 to 1.10.0 (#119)dependabot[bot]
Bumps [py](https://github.com/pytest-dev/py) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/pytest-dev/py/releases) - [Changelog](https://github.com/pytest-dev/py/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/py/compare/1.9.0...1.10.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-20build: Add workaround for kotlinx-benchmark with Gradle 7Fabian Mastenbroek
This change adds a quick workaround for getting kotlinx-benchmark to work again with Gradle 7. See https://github.com/Kotlin/kotlinx-benchmark/issues/39.
2021-04-15Fix issues with web runner (v2) (#118)Fabian Mastenbroek
This is a second pull request to address several issues that were present in the web runner and the associated experiments: * Re-use topology across repeats * Disallow re-use of `SimTraceWorkload` * Construct new `SimTraceWorkload` for each simulation run
2021-04-15exp: Prevent re-use of SimWorkload in experimentFabian Mastenbroek
This change fixes and issue where a SimWorkload was being re-used across simulation runs. Given that SimWorkload is stateless, this may cause strange issues.
2021-04-15exp: Re-use topology across repeatsFabian Mastenbroek
This change modifies the web runner to construct the topology only once per repeat, given that the construction does not depend on the repeat number.
2021-04-14harness: Fix issues with web runner (#117)Fabian Mastenbroek
This pull request addresses several issues that were present in the web runner and the associated experiments: * Enable failures only when user requests it * Simplify power usage calculation (directly from J to Wh) * Fix issue with multiple socket machines. * Fix filter scheduler weights **Breaking API Changes** * `ScalingContext` now only exposes a `SimProcessingUnit` instead of a `ProcessingUnit` and `SimResourceSource`.
2021-04-14exp: Fix incorrect filter scheduler weightsFabian Mastenbroek
This change fixes an issue where incorrect scheduling weights were applied to the filter scheduler.
2021-04-14simulator: Introduce SimProcessingUnitFabian Mastenbroek
This change introduces the SimProcessingUnit which represents a simulated processing unit which the user can control during the workload execution.
2021-04-14exp: Simplify power usage calculationFabian Mastenbroek
This change simplifies the conversion from power to energy consumption used in the web runner. Now, we convert straight from J to Wh.
2021-04-14harness: Enable failures only on requestFabian Mastenbroek
This changes fixes a bug where the simulator obtained the incorrect failure frequency causing failures to be enabled even when the user disabled it.
2021-04-12Migrate to Gradle 7.0 (#115)Fabian Mastenbroek
This pull request updates the Kotlin project to build with Gradle 7.0. This is necessary to support building the project with Java 16.
2021-04-12simulator: Add the asymptotic power model from GreenCloud (#114)Hongyu
This change adds the asymptotic power model that is used in GreenCloud to the available power models in OpenDC.
2021-04-08compute: Implement filter schedulerFabian Mastenbroek
This pull request implements the filter scheduler modeled after the scheduler from [OpenStack](https://docs.openstack.org/nova/latest/user/filter-scheduler.html). The scheduler is functionally equivalent to the old allocation policies, but is more flexible and allows policies to be combined. * A new interface, `ComputeScheduler` is introduced, which is used by the `ComputeServiceImpl` to pick hosts to schedule on. * `FilterScheduler` is implemented, which works by filtering and weighing the available hosts. **Breaking API Changes** * Removal of the `AllocationPolicy` interface and its implementations. Users should migrate to the filter scheduler which offers the same functionality and more.
2021-04-08exp: Add serverless experiments (v1)Fabian Mastenbroek
This pull request is the first in a series of pull request to add the serverless experiments from Soufiane Jounaid's BSc thesis to the main OpenDC repository. In this pull request, we add the serverless experiment and trace reader. * Add `opendc-experiments-serverless20` which will contain the serverless experiments. * Add `ServerlessTraceReader` which reads the traces from Soufiane's work. * Add support for cold start delays * Expose metrics per function.
2021-04-08serverless: Model cold start delaysFabian Mastenbroek
2021-04-08serverless: Track metrics per functionFabian Mastenbroek
This change adds metrics that are tracked per function instance, which includes the runtime of the invocations, the number of invocations (total, warm, cold, failed).
2021-04-08exp: Add experiment testing the serverless moduleFabian Mastenbroek
This change adds an experiments testing the OpenDC Serverless module.
2021-04-08exp: Add trace reader for Serverless experimentsFabian Mastenbroek
This change adds the trace reader for the serverless experiments as described in #48.
2021-04-08serverless: Add possibility to specify function memory requirementsFabian Mastenbroek
2021-04-08serverless: Expose metrics from Serverless serviceFabian Mastenbroek
This change exposes several metrics from the Serverless service, which are needed for the experiments.
2021-04-08compute: Migrate to new FilterSchedulerFabian Mastenbroek
This change migrates the OpenDC codebase to use the new FilterScheduler for scheduling virtual machines. This removes the old allocation policies as well.
2021-04-08compute: Implement filter schedulerFabian Mastenbroek
This change adds an implementation of the filter scheduler to the OpenDC Compute module. This is modeled after the filter scheduler implementation in OpenStack and should allow for more flexible scheduling policies. See: https://docs.openstack.org/nova/latest/user/filter-scheduler.html
2021-04-08exp: Add experiment for OpenDC Energy projectFabian Mastenbroek
This pull requests adds an experiment to the repository for the OpenDC Energy project. This experiment currently runs the Solvinity traces and tests how different energy models perform. * Add new experiment `opendc-experiments-energy21` * Link experiment to `ConsoleRunner` so that the experiment can be run from the command line. * `BatchRecorder` is now used to emit all metrics at once after the hypervisor finishes a slice.
2021-04-08exp: Add experiment for OpenDC Energy projectFabian Mastenbroek
This change adds an experiment for the OpenDC Energy project, which tests various energy models that have been implemented in OpenDC.
2021-04-08exp: Fix metric recording of summary dataFabian Mastenbroek
This change fixes an issue in the metric exporter for summary metrics, where instead of some average value, the sum value was reported.
2021-04-08compute: Use BatchRecorder to emit metricsFabian Mastenbroek
This change updates the SimHost implementation to use BatchRecorder to batch record multiple metrics at once.
2021-04-08simulator: Divide CPU usage over all coresFabian Mastenbroek
This change fixes an issue in SimTraceWorkload where the CPU usage was not divided across the cores, but was instead requested for all cores.
2021-04-08compute: Fix random allocation policyFabian Mastenbroek
This change fixes an issue in the RandomAllocationPolicy where it would incorrectly obtain the required memory for the server.
2021-04-08exp: Simplify metric reporting via monitorFabian Mastenbroek
This change simplifies the way metrics are reported to the monitor. Previously, power draw was collected separately from the other metrics. However, with the migration to OpenTelemetry, we collect all metrics every 5 minutes, which drastically simplifies the metric gathering logic.
2021-04-08simulator: Perform usage propagation only on changeFabian Mastenbroek
This change updates the logic in SimAbstractMachine to only propagate usages when the value has changed.