| Age | Commit message (Collapse) | Author |
|
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.
|
|
This change adds an experiment for the OpenDC Energy project, which
tests various energy models that have been implemented in OpenDC.
|
|
This change fixes an issue in the metric exporter for summary metrics,
where instead of some average value, the sum value was reported.
|
|
This change updates the SimHost implementation to use BatchRecorder to
batch record multiple metrics at once.
|
|
This change fixes an issue in SimTraceWorkload where the CPU usage was
not divided across the cores, but was instead requested for all cores.
|
|
This change fixes an issue in the RandomAllocationPolicy where it would
incorrectly obtain the required memory for the server.
|
|
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.
|
|
This change updates the logic in SimAbstractMachine to only propagate
usages when the value has changed.
|
|
This pull request addresses several bottlenecks that were present in the
`opendc-simulator-resources` layer and `TimerScheduler`.
These changes result into a 4x performance improvement for the energy experiments
we are currently doing.
* The use of `StateFlow` has been removed where possible. Profiling shows that
emitting changes to `StateFlow` becomes a bottleneck in a single-thread context.
* `SimSpeedConsumerAdapter` is an alternative for obtaining the changes in
speed of a resource.
**Breaking API Changes**
* `SimResourceSource` does not expose `speed` as `StateFlow` anymore. To monitor speed changes, use `SimSpeedConsumerAdapter`.
* Power draw in `SimBareMetalMachine` is not exposed as `StateFlow` anymore.
|
|
This change changes the TimerScheduler implementation to prevent calling
Intrinsics.areEqual in the hot path. Profiling shows that especially
this call has a high overhead.
|
|
This change removes the StateFlow speed property on the
SimResourceSource, as the overhead of emitting changes to the StateFlow
is too high in a single-thread context. Our new approach is to use
direct callbacks and counters.
|
|
This change updates the TimerScheduler implementation to cache several
variables in the hot paths of the implementation.
|
|
This pull request adds a CPUFreq subsystem to the simulator module. This subsystem allows a simulated machine to perform frequency scaling, which in turn should reduce energy consumption.
|
|
|
|
This change updates the power models by fixing some of the documentation
and adding toString() methods.
|
|
This change adds a model implementing Dynamic Voltage Frequency Scaling
(DVFS) to OpenDC.
|
|
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.3 to 1.26.4.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.3...1.26.4)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This pull request resolves issue #91 by adopting the industry-standard OpenTelemetry standard
for collecting traces and metrics in OpenDC simulations:
* Metrics will now be exposed through OpenTelemetry's metrics API
* `opendc-telemetry` provides complementary code to support
gathering telemetry in OpenDC.
**Breaking API Changes**
* `opendc-tracer` has been removed.
* `EventFlow` and all usages of it have been removed.
* `opendc-experiments-sc18` has been removed for now, but a
suitable replacement will follow soon.
|
|
This change updates the compute service simulator to use OpenTelemetry
for reporting metrics of the (simulated) hosts as opposed to using
custom event flows.
This approach is more generic, flexible and possibly offers better
performance as we can collect metrics of all services in a single sweep,
as opposed to listening to several services and each invoking the
handlers.
|
|
This change updates the resource model implementation to cache the
remaining work field, which was being computed multiple times during the
same cycle.
|
|
This change enables the use of the interpolation model testing on the results of the SPEC benchmark.
|
|
This change removes the event tracer from the repository as we migrate
to the industry standard OpenTelemetry.
|
|
This change removes the event tracer from the OpenDC Workflow service as
we start migrating to the industry standard OpenTelemetry.
|
|
This change integrates the OpenTelemetry Metrics API in the OpenDC
Workflow Service implementation. This replaces the old infrastructure for
gathering metrics.
|
|
This change integrates the OpenTelemetry Metrics API in the OpenDC
Compute Service implementation. This replaces the old infrastructure for
gathering metrics.
|
|
This change removes the dependency on the event tracer in
`opendc-trace`, since we are in the process of migrating OpenDC to
use OpenTelemetry for distributed tracing and metrics.
|
|
This change changes the compute service and users of the compute service
to not rely on the internals of `ComputeServiceImpl` and instead use its
public API.
|
|
This change adds a test suite for the OpenDC compute service.
|
|
This pull request is a preparation for the adding an advanced energy model to OpenDC (#90):
* Add benchmarks for the `opendc-simulator-compute` module, which enables us to quantify the effect on future changes w.r.t. to the energy model on the performance.
* Add `SimResourceTransformer` which can transform resource consumptions. This is useful when transforming from CPU frequency to energy usage for instance.
* Move power models to `opendc-simulator-compute` to be able to be used more generically.
**Breaking API Changes**
* Power models have moved to `opendc-simulator-compute` and now implement the `MachinePowerModel` interface.
|
|
This change moves the power models from the `opendc-compute-simulator`
to the `opendc-simulator-compute` module, since it better fits the scope
of the models and allows them to be re-used for other purposes.
|
|
This change adds support for transforming the resource commands emitted
by the resource consumers. The SimResourceForwarder is modified to also
support transforming the resource commands.
|
|
This change adds benchmarks to the opendc-simulator-compute module in
order to quantify effect of changes on the performance of this module.
|
|
This is the second pull request in the series of pull requests to add a uniform resource consumption model to OpenDC. This pull request focusses on adding dynamic capacity negotiation and propagation between resource consumer and resource provider:
* The generic resource constraint is removed from the interfaces of `opendc-simulator-resources`. Users of the API are expected to use the untyped variants where only the capacity needs to be specified. Users are expected to build higher-level abstractions on top of these interface to represent actual resources (e.g., CPU, disk or network).
* Added benchmarks for the most important implementations of `opendc-simulator-resources`. This allows us to quantify the effects of changes on the runtime.
* The `SimResourceSwitchMaxMin` has been split into a `SimResourceAggregatorMaxMin` and `SimResourceDistributorMaxMin` which respectively aggregate input resources and distribute output resources using max-min fair sharing.
* The `SimResourceConsumer` interface has a new method for receiving capacity change events: `onCapacityChanged(ctx, isThrottled)`
**Breaking API Changes**
* All interfaces in `opendc-simulator-resources`.
|
|
This change re-enables support for VM usage metrics by adding an adapter
for SimResourceConsumer instances that can export the consumer speed.
|
|
This change adds support for dynamically changing the capacity of
resources and propagating this change to consumers.
|
|
This change removes the generic resource constraint (e.g., SimResource)
and replaces it by a simple capacity property. In the future, users
should handle the resource properties on a higher level.
This change simplifies compositions of consumers and providers by not
requiring a translation from resource to capacity.
|
|
This change changes the consumer and context interfaces to expose the
provider capacity and remaining work via the context instance as opposed
to only via the callback. This simplifies aggregation of resources.
|
|
This change adds an initial set of benchmarks for the resource
consumption framework in order to measure the effect of changes on the
performance of the simulator.
|
|
This change re-designs the SimResourceConsumer interface to support in
the future capacity negotiation. This basically means that the consumer
will be informed directly when not enough capacity is available, instead
of after the deadline specified by the consumer.
|
|
This change adds the initial implementation of OpenDC Serverless to the
main repository, which is based on Soufiane Jounaid's work. This commit
introduces the main interfaces into the repository. Later commits will
introduce the other features that Soufiane has implemented previously in
OpenDC.
|
|
This pull request enables aggregate code coverage reports via Jacoco and adds support for coverage tracking via Codecov.
|
|
|
|
This change updates the Github Actions workflow configuration to
generate test reports for the simulator CI builds.
|
|
This change enables Codecov coverage reports when building changes.
|
|
This change will cause the CI to only trigger when opening a pull
request.
|
|
This change updates the dependencies for the OpenDC simulator.
|
|
This change adds support for aggregating code coverage results from the
different modules.
|
|
Bumps [jinja2](https://github.com/pallets/jinja) from 2.11.2 to 2.11.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/2.11.2...2.11.3)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.0 to 1.26.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.0...1.26.3)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This change implements the CPU energy model with p-states from iCanCloud/E-mc2:
- Only pushed a portion of the code for discussion as not sure if the idea is
on track.
- Inline comments have been added, and formal documents will follow once the
model is finalized.
- The p-state power consumptions are currently hard-coded in a companion
object, which should be improved in the next PR(s).
**Breaking Changes**
- CpuPowerModel: directly interact with the machine it is measuring.
- SimBareMetalMachine: expose the speeds of its CPU cores and its clock
instant.
|