| Age | Commit message (Collapse) | Author |
|
This change updates the modules of OpenDC to always accept
the `InstantSource` interface as source of time. Previously we used
`java.time.Clock`, but this class is bound to a time zone which does not
make sense for our use-cases.
Since `java.time.Clock` implements `java.time.InstantSource`, it can be
used in places that require an `InstantSource` as parameter. Conversion
from `InstantSource` to `Clock` is also possible by invoking
`InstantSource#withZone`.
|
|
This change adds support for converting a `Dispatcher` implementation
into a `CoroutineDispatcher` instance.
|
|
This change adds a new interface `Dispatcher` that is used throughout
OpenDC for scheduling the execution of future tasks. This replaces the
`CoroutineContext` and `Clock` that exist on many of the implementations
in OpenDC.
With this approach, we reduce the dependency on Kotlin Coroutines.
|
|
This change updates the modules of OpenDC to always accept
the `RandomGenerator` interface as source of randomness. This interface
is implemented by the slower `java.util.Random` class, but also by the
faster `java.util.SplittableRandom` class
|
|
This change updates the Gradle configuration to target Java 17 (instead
of Java 11) as the lowest denominator when running/building OpenDC. This
version of Java has been available for more than a year and is the
latest LTS release.
|
|
This pull request adds support for snapshotting simulated workloads in OpenDC, which
serves as the basis for virtual machine migration/suspension support.
Part of #32
## Implementation Notes :hammer_and_pick:
* Support synchronous update of FlowStage
* Report exceptions in onStop as suppressed
* Add support for snapshotting workloads
|
|
This change updates the interface of `SimWorkload` to support
snapshotting workloads. We introduce a new method `snapshot()` to this
interface which returns a new `SimWorkload` that can be started at a
later point in time and on another `SimMachine`, which continues
progress from the moment the workload was snapshotted.
|
|
This change updates the implementation of `SimMachineContext` to report
exceptions thrown in `onStop` as suppressed exceptions if an exception
caused the workload to stop.
|
|
This change adds a new method to `FlowStage` called `sync()` which
enables users to synchronously update the stage at the current
timestamp.
This functionality is neccessary to support snapshotting since we need
to synchronize the state of the `FlowStage` before creating a snapshot
of the workload.
|
|
This pull request implements customizable startup and clean-up time for virtual machine.
We achieve this by implementing `SimWorkload` chaining and modelling start-up and
clean-up time using `SimWorkload` as well.
Implements #33
## Implementation Notes :hammer_and_pick:
* Store method parameters in class files
* Add completion parameter to startWorkload
* Provide workload constructors in SimWorkloads
* Add support for resetting machine context
* Add support for chaining workloads
* Use workload chaining for boot delay
* Model host boot time
* Do not suspend on guest start
* Use static logger field
## Breaking API Changes :warning:
* `SimMachine#startWorkload` now has a third parameter `completion` which is invoked when
the workload finishes executing (either due to failure or success).
* `SimFlopsWorkload` and `SimRuntimeWorkload` can be instantiated via `SimWorkloads`.
|
|
This change updates the `Guest` class implementation to use a static
logger field instead of allocation a new logger for every guest.
|
|
This change updates the `Host` interface to remove the suspend modifiers
to the start, stop, spawn, and delete methods of this interface. We now
assume that the host immediately launches the guest on invocation of
this method.
|
|
This change updates `SimHost` to support modeling the time and resource
consumption it takes to boot the host. The boot procedure is modeled as a
`SimWorkload`.
|
|
This change updates the implementation of `SimHost` to use workload
chaining for modelling boot delays. Previously, this was implemented by
sleeping 1 millisecond using Kotlin coroutines. With this change, we
remove the need for coroutines and instead use the `SimDurationWorkload`
to model the boot delay.
In the future, we envision a user-supplied stochastic boot model to
model the boot delay for VM instances.
|
|
This change adds a new static method `chain` to `SimWorkloads` to chain
multiple workloads sequentially.
|
|
This change updates the interface of `SimMachineContext` to allow
workloads to reset all resources provided by the machine to the
workload. This allows us to implement a `SimWorkload` that can compose
multiple workloads.
|
|
This change introduces a new class SimWorkloads which provides
construction methods for the standard workloads available in OpenDC.
|
|
This change updates the interface of `SimMachine#startWorkload` to
introduce a parameter `completion` that is invoked when the workload
completes either succesfully or due to failure.
This functionality has often been implemented by wrapping a
`SimWorkload` and catching its exceptions. However, since this
functionality is used in all usages of `SimMachine#startWorkload` we
instead embed it into `SimMachine` itself.
|
|
This change updates the build configuration to enable Java to emit
method parameter information in the class files. This provides more
useful error messages when not enough parameters are given.
|
|
This pull request updates the web interface to make use of Next.js 13 and React 18.
## Implementation Notes :hammer_and_pick:
* Drop dependency on FontAwesome
* Update to Next 13 and React 18
* Drop dependency on Roboto font
* Make root redirect non-permanent
* Do not optimize images for export
* Update to Node 18 for the build process
* Ensure consistency of build tasks
* Update README.md of web UI
* Default to anonymous auth domain
* Disable configuration of basePath
## External Dependencies :four_leaf_clover:
* Next.js 13
* React 18
* PatternFly 4
* Node 18
## Breaking API Changes :warning:
* The base path of the web UI cannot be configured anymore via the Quarkus extension.
The previous implementation relied on Next.js internals and this functionality cannot be
provided without resorting to hacks. Since this functionality was not actually used, we have
removed it for now.
|
|
This change removes the ability to configure the basePath of the Next.js
application using the Quarkus extension. This functionality was brittle
due to relying on Next.js internals coping with out replacement
strategy.
We should wait for Next.js to implement proper support for
changing the base path at runtime before making this functionality
available again.
|
|
This change updates the auth code in the OpenDC web UI to default to
the anonymous auth domain if no configuration is provided.
|
|
This change updates the README to match the updated build process for
the web interface.
|
|
This change updates the build script for the web UI to use consistent
names for the build tasks.
|
|
This change updates the build process for the OpenDC website to use Node 18
for building the website.
|
|
This change updates the build process to use Node 18 for building the
web application.
|
|
This change disables optimizing images for exporting, since we do not
want to depend on an external service.
|
|
This change makes the root redirect to the projects page temporary, to
prevent browsers from caching this route indefinitely, while we might
add a home page in the future.
|
|
This change removes the dependency on the Roboto font which was
downloaded for every page of OpenDC. Since we do not actually use this
font in any of our page, we can safely drop the dependency.
|
|
This change updates the web interface to use Next 13 and React 18. This
release has a couple breaking changes (related to links) which we have fixed
accordingly.
|
|
This change removes the explicit dependency on FontAwesome. PatternFly
also ships with the FontAwesome icons, so use these icons instead to
reduce the footprint of the application.
|
|
This pull request introduces the new `flow2` multi-flow simulator into the OpenDC codebase
and adjust all existing modules to make use of this new simulator.
The new simulator models flow as a network of components, which can each receive flow
from (potentially) multiple other components. In the previous simulator, the framework itself
supported only single flows between components and required re-implementation of many
components to support multiplexing flows.
Initial benchmarks show performance improvements in the range 2x–4x for large scale experiments
such as the Capelin benchmarks.
## Implementation Notes :hammer_and_pick:
* Add support for multi-flow stages
* Support flow transformations
* Add forwarding flow multiplexer
* Expose metrics on FlowMultiplexer
* Re-implement network sim using flow2
* Re-implement power sim using flow2
* Re-implement compute sim using flow2
* Optimize workload implementation of SimTrace
* Remove old flow simulator
* Add log4j-core dependency
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* Removal of the `org.opendc.simulator.flow` package. You should now use
the new flow simulator located in `org.opendc.simulator.flow2`.
* `PowerModel` interface is replaced by the `CpuPowerModel` interface.
* `PowerDriver` interface is replaced by the `SimPsu` and `SimPsuFactory` interfaces.
* Removal of `SimTraceWorkload`. Instead, create a workload from a `SimTrace` using
`createWorkload(offset)`.
* `ScalingGovernor` has been split in a `ScalingGovernor` and `ScalingGovernorFactory`.
* All modules in `opendc-simulator` are now written in Java. This means that default
parameters are not supported anymore for these modules.
|
|
This change adds the log4j-core dependency to various modules of OpenDC
using log4j2, to ensure logging keeps working. The upgrade to SLF4J 2.0 broke
the Log4j2 functionality, since the log4j-core artifact is not
automatically shipped with the SLF4J implementation.
|
|
This change removes the old version of the flow simulator from the
OpenDC repository. The old version has been replaced by the new flow2
framework which is able to simulate flows more efficiently.
|
|
This change updates the workload implementation of SimTrace by
introducing multiple implementations of the FlowStageLogic interface,
which is selected dynamically when the workload starts.
This change helps eliminate the unecessary division (and memory fetch)
when running a workload with just a single CPU.
|
|
This change re-implements the OpenDC compute simulator framework using
the new flow2 framework for modelling multi-edge flow networks. The
re-implementation is written in Java and focusses on performance and
clean API surface.
|
|
This change updates the `opendc-simulator-power` module to use the new
flow simulation framework in OpenDC (named flow2 for now).
|
|
|
|
|
|
This change implements a new `FlowMultiplexer` that forwards the inputs
directly to one of the pre-allocated outputs.
|
|
This change adds a new component, FlowTransform, which is able to
transform the flow from one component to another, based on some
inversible transformation.
Such as component is useful when converting between different units of
flow between different components.
|
|
This change adds support for creating nodes in a flow graph that support
multiple inputs and outputs directly, instead of our current approach
where we need to re-implement the `FlowConsumerContext` interface in
order to support multiple inputs or outputs.
|
|
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](https://github.com/mikepenz/action-junit-report/compare/v3.5.1...v3.5.2)
---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This pull request adds support for tracking and limiting the simulation time consumed per user.
These changes allow users to consume 60 minutes of shared compute resources for simulations
in OpenDC per month.
Closes #103
## Implementation Notes :hammer_and_pick:
* Limit exception mapper to WebApplicationException
* Add support for accounting simulation time
* Add API for querying user accounting data
* Show monthly simulation budget in UI
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* The web runner now also sends the runtime of the simulation job to the server, in order to
update the consumed simulation time in the database.
|
|
This change addresses an issue with the topology sidebar where hovering
a CPU or GPU would not present the correct information due to bug.
|
|
This change fixes an issue with the OpenDC web runner where the default
job timeout was set to 10 ms instead of 10 minutes. For longer
simulations, this would cause the job to be terminated.
|
|
This change resolves an issue in the web runner where the finished VMs
would always be reported as zero.
|
|
This change updates the compute service telemetry to also expose the
number of servers that are registered with the service.
|
|
This change updates the OpenDC web UI to show the monthly simulation
budget of the user in the user dropdown. This provides the user with a
progress bar of the used simulation minutes.
|
|
This change updates the Quarkus-based web server with a new endpoint for
querying data about the active user including accounting data.
|