| Age | Commit message (Collapse) | Author |
|
This changes updates the .dockerignore files in the repository in order
to prevent building when not necessary.
|
|
|
|
This change adds a new Github Actions workflow that is triggered when a
new tag is pushed. This workflow will automatically build the project
and create a new Github release.
|
|
This pull request contains several improvements to the OpenDC Experiment Harness,
which aims to improve user-experience of users when re-running experiments in the repository.
* Split the harness into separate modules
* Add support for adding additional classpath entries when running experiments via the console
* Initial support for configuration of experiments using HOCON.
|
|
This change updates the command line interface of the OpenDC Experiment
Harness to include an option for specifying a custom configuration file.
|
|
This change updates the Gradle configuration to include experiments in
the main distribution of OpenDC. Users can directly execute the
experiments from the command-line without having to recompile the entire
code-base.
|
|
This change adds support for configuring the experiments via
configuration files using the TypeSafe config library. In the future, we
will also integrate support for configuration into the harness.
|
|
This change adds support for appending libraries to the classpath when
searching for experiments to run using the OpenDC Harness command line
interface.
|
|
This change splits the OpenDC Experiment Harness into separate modules.
This prevents users from pulling in unnecessary dependencies when
depending on the harness API.
|
|
This pull request fixes an issue with the power draw reporting in experiments.
Previously, when the power draw of a machine did not change in subsequent metric collection cycles,
the power draw would be reported as zero.
* Update power draw as soon as the machine is started.
* Use OpenTelemetry view to aggregate based on the power draw's last reported value.
|
|
This change fixes the aggregation of the power draw metric. Previously,
if the power draw did not change between collection cycles, the power
draw would be reported as zero. This change uses OpenTelemetry Views to
collect the latest value of the power draw each cycle.
|
|
This change fixes an issue where the power draw of a machine is
initially zero and does not update until the CPU usage is higher than
zero, while the idle power is the machine is not actually zero.
|
|
This pull request adds support for central resource scheduling.
This enables possible optimizations in the future where we can efficiently
schedule resource updates.
* Introduce `SimResourceScheduler` which centralizes the logic for
scheduling resource interrupts.
* Fix benchmarks
* Add generic approach for reporting resource events
* Simplify scheduling logic of resource aggregator.
**Breaking API Changes**
* Classes in `opendc-simulator-resources` now take `SimResourceScheduler` as
opposed to a `CoroutineContext` and `Clock`.
|
|
This change introduces the SimResourceScheduler interface, which is a
generic interface for scheduling the coordination and synchronization
between resource providers and resource consumers.
This interface replaces the need for users to manually specify the clock
and coroutine context per resource provider.
|
|
This change fixes an issue with the compute benchmarks where the
workload was being re-used across iterations.
|
|
This change introduces a generic approach for reporting resource events
to resource consumers. This way we reduce the boilerplate of the
SimResourceConsumer interface.
|
|
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.
|
|
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
|
|
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
This change updates the project documentation by moving most of the
documentation to the docs directory.
|
|
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>
|
|
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 change updates the references to the API and Simulator modules of
the projects for Codecov.
|
|
This change updates several points in the README that were outdated or
incorrect.
|
|
This change adds a description of the software license under which
OpenDC is distributed to the README.md file.
|
|
This change adjusts the docker-compose configuration to support the
re-organized project structure.
|
|
This change fixes the references to the frontend and API modules that
were invalidated due to the restructuring of project in the previous
commit.
|
|
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.
|
|
This change adds a power model for optimizing the mean squared error
to the available power models in OpenDC.
|
|
This change introduces the SimulationCoroutineDispatcher implementation which replaces the TestCoroutineDispatcher for running single-threaded simulations.
|
|
This change migrates the remainder of the codebase to the
SimulationCoroutineDispatcher implementation.
|
|
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.
|
|
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>
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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`.
|
|
This change fixes an issue where incorrect scheduling weights were
applied to the filter scheduler.
|
|
This change introduces the SimProcessingUnit which represents a
simulated processing unit which the user can control during the workload
execution.
|
|
This change simplifies the conversion from power to energy consumption
used in the web runner. Now, we convert straight from J to Wh.
|
|
This changes fixes a bug where the simulator obtained the incorrect
failure frequency causing failures to be enabled even when the user
disabled it.
|
|
This pull request updates the Kotlin project to build with Gradle 7.0.
This is necessary to support building the project with Java 16.
|
|
This change adds the asymptotic power model that is used in GreenCloud
to the available power models in OpenDC.
|
|
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.
|
|
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.
|