| Age | Commit message (Collapse) | Author |
|
This change upgrades the Gradle build system to version 7.1.
|
|
This change fixes the execution of the Energy21 experiments which failed
due to various changes in the OpenDC codebase. First, the directory
structure is now required to be pre-generated before the writer starts
writing the experiment output. Second, we must include the configuration
of the Capelin experiment in this experiment in order to workaround an
issue with harness filtering.
|
|
This pull request adds a subsystem to OpenDC for modelling power components in datacenters,
such as UPSes, PDUs and PSUs.
These components also take into account electrical losses that occur in real-world scenarios.
- Add module for datacenter power components (UPS, PDU)
- Integrate power subsystem with compute subsystem (PSU)
- Model power loss in power components
**Breaking API Changes**
1. `SimBareMetalMachine.powerDraw` is replaced by `SimBareMetalMachine.psu.powerDraw`
|
|
This change introduces power loss to the PSU component.
|
|
This change adds a new model for the UPS to the OpenDC simulator power
subsystem.
|
|
This change integrates the power subsystem of the simulator with the
compute subsystem by exposing a new field on a SimBareMetalMachine, psu,
which provides access to the machine's PSU, which in turn can be
connected to a SimPowerOutlet.
|
|
This change adds a model for power loss to the Power Distribution Unit
(PDU) model in OpenDC.
|
|
This change adds a new module for simulating power components in
datacenters such as PDUs and UPSes. This module will serve as the basis
for the power monitoring framework in OpenDC and will future integrate
with the other simulation components (such as compute).
|
|
This change introduces a memory resource which can be used to model
memory usage. The SimMachineContext now exposes a memory field of type
SimMemory which provides access to this resource and allows workloads to
start a consumer on this resource.
|
|
This pull request attempts to remove the dependency of the simulator on Apache Hadoop
which is pulled in as a consequence of using parquet-mr.
The reason for removal is that Apache Hadoop does not work natively on Windows
without user intervention, which makes adoption on this platform more difficult.
* Add Windows as CI target for the OpenDC simulator
* Use `LocalInputFile` for Parquet reader usages
* Use `LocalOutputFile` for Parquet writer usages
* Remove Apache Hadoop as dependency of OpenDC.
|
|
This change eliminates all Hadoop dependencies that are not necessary
for Parquet to work correctly. As a result, the number of dependencies
should now be greatly reduced, which in turn leads to less artifacts
that need to be retrieved at build time.
|
|
This change updates the Parquet writers used in the Capelin experiments
to use our OutputFile implementation for local files, to reduce our
dependency on Apache Hadoop.
|
|
This change adds an implementation of Parquet OutputFile for local files
in order to eliminate the dependency on the entire Hadoop system. This
implementation allows users to read Parquet files locally without
needing a Parquet filesystem implementation.
|
|
This change updates the Parquet readers used in the Capelin experiments
to use our InputFile implementation for local files, to reduce our
dependency on Apache Hadoop.
|
|
This change updates the format implementations that use Parquet by
switching to our InputFile implementation for local files, which
eliminates the need for Hadoop's filesystem support.
|
|
This change adds an implementation of Parquet's local InputFile in order
to eliminate the dependency on the entire Hadoop system. This
implementation allows users to read Parquet files locally without
needing a Parquet filesystem implementation.
|
|
This change fixes the SLF4J logging warnings that occur during the
tests.
|
|
This change adds Windows as CI target for the OpenDC simulator in order
to test that the simulator works on all major platforms.
|
|
This change removes the Jupyter Notebook that was shipped with the
initial version of the Energy21 experiments. At the moment, it is not
up to date anymore and we will probably move the plotting facility to
the web interface.
|
|
This pull request improves the existing simulator resource model
that is at the core of all simulation models in OpenDC.
Most importantly, we have changed the way of how metrics are reported by this layer.
* Add `SimResourceInterpreter` which is responsible for efficiently scheduling
communication between resources in OpenDC. The performance gain is in the 2x-5x range.
* Add uniform interface for exposing resource metrics (using `SimResourceCounters`).
* Split the CPUFreq subsystem in the compute simulator as it mixed responsibilities of
different layers.
**Breaking API Changes**
* Resource providers now accept a `SimResourceInterpreter` which is
responsible for coordinating the communication between resources.
* `ScalingGovernor` is not part of the machine layer anymore. Instead, it should
move in the OS/Hypervisor layer.
* Workloads should now start CPU consumers using `cpu.startConsumer`.
|
|
This change moves the CPU frequency scaling governors from the
bare-metal/firmware layer (SimBareMetalMachine) to the OS/Hypervisor
layer (SimHypervisor) where it can make more informed decisions about
the CPU frequency based on the load of the operating system or
hypervisor.
|
|
This change splits the functionality present in the CPUFreq subsystem of
the compute simulation. Currently, the DVFS functionality is embedded in
SimBareMetalMachine. However, this functionality should not exist within
the firmware layer of a machine. Instead, the operating system should
perform this logic (in OpenDC this should be the hypervisor).
Furthermore, this change moves the scaling driver into the power
package. The power driver is a machine/firmware specific implementation
that computes the power consumption of a machine.
|
|
This change updates the SimWorkload interfaces to allow
implementations to start consumers for the machine resource providers
directly.
|
|
This change adds a new interface to the resources library for accessing
metrics of resources such as work, demand and overcommitted work. With
this change, we do not need an implementation specific listener
interface in SimResourceSwitchMaxMin anymore.
Another benefit of this approach is that updates will be scheduled more
efficiently and progress will only be reported once the system has
reached a steady-state for that timestamp.
|
|
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5.
- [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.4...1.26.5)
---
updated-dependencies:
- dependency-name: urllib3
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This change introduces the SimResourceInterpreter which centralizes the
logic for scheduling and interpreting the communication between resource
consumer and provider.
This approach offers better performance due to avoiding invalidating the
state of the resource context when not necessary. Benchmarks show in the
best case a 5x performance improvement and at worst a 2x improvement.
|
|
This change updates the build workflow to properly report the code
coverage reports of the web API to Codecov.
|
|
This change updates the web frontend to Next.js version 10.2.3. This
addresses a vulnerability in a dependency in Next.js as well as enabling
use of native ESLint integration of Next.js.
|
|
This change updates the build process to use Kotlin 1.5.10 for building
OpenDC. This new update should address some of the incompatibilities
between Gradle and Kotlin 1.5.
|
|
This pull request removes the hard dependency on Google for
authenticating users and migrates to Auth0 as Identity Provider for OpenDC.
This has as benefit that we can authenticate users without having to manage
user data ourselves and do not have a dependency on Google accounts anymore.
- Frontend cleanup:
- Use CSS modules everywhere to encapsulate the styling of React components.
- Perform all communication in the frontend via the REST API (as opposed to WebSockets).
The original approach was aimed at collaborative editing, but made normal operations
harder to implement and debug. If we want to implement collaborative editing in the
future, we can expose only a small WebSocket API specifically for collaborative editing.
- Move to FontAwesome 5 (using the official React libraries)
- Use Reactstrap where possible. Previously, we mixed raw Bootstrap classes with
Reactstrap, which is confusing.
- Reduce the scope of the Redux state. Some state in the frontend application can be
kept locally and does not need to be managed by Redux.
- Migrate from Create React App (CRA) to Next.js since it allows us to pre-render
multiple pages as well as opt-in to Server Side Rendering.
- Remove the Google login and use Auth0 for authentication now.
- Use Node 16
- Backend cleanup:
- Remove Socket.IO endpoint from backend, since it is not needed by the frontend
anymore. Removing it reduces the attack surface of OpenDC as well as the maintenance efforts.
- Use Auth0 JWT token for authorizing API accesses
- Refactor API endpoints to use Flask Restful as opposed to our custom in-house
routing logic. Previously, this was needed to support the Socket.IO endpoint,
but increases maintenance effort.
- Expose Swagger UI from API
- Use Python 3.9 and uwsgi to host Flask application
- Actualize OpenAPI schema and update to version 3.0.
**Breaking API Changes**
* This pull request removes the users collection from the database table. Instead, we now use the user identifier passed by Auth0 to identify the data that belongs to a user.
|
|
This pull request adds support for building OpenDC using Java 16.
To make this possible, we have upgraded the following dependencies:
- Kotlin from 1.4.3 to 1.5.0
- Jacoco from 0.8.6 to 0.8.7
- Gradle from 7.0 to 7.0.2
|
|
This change fixes the deployment scripts necessary for the frontend and
ensures that runtime variables work again.
|
|
This change re-adds the support for Sentry. This was lost during the
migration from CRA to Next.js.
|
|
This change updates the deployment guide to include instructions on
configuring Auth0 for OpenDC. This process should not be much more
difficult than creating the Google Application.
|
|
This change adds support for specifying the OAuth2 client identifier
for Swagger API docs authentication. This allows users to experiment
with the API documentation without needing to create an Auth0 account
themselves.
|
|
This change updates the frontend to use the FontAwesome 5 React library
that renders SVG icons as opposed to CSS icon fonts. This migration
resolves a couple of issues we had with server-side rendering of the
previous FontAwesome icons.
|
|
This change updates the API server to run by default using Python 3.9.
|
|
This change updates the frontend codebase to move away from the Google
login and instead use Auth0 as generic Identity Provider. This allows
users to login with other accounts as well.
Since Auth0 has a free tier, users can experiment themselves with OpenDC
locally without having to pay for the login functionality. The code has
been written so that we should be able to migrate away from Auth0 once
it is not a suitable Identity Provider for OpenDC anymore.
|
|
This change updates the API Schema to the more recent OpenAPI version 3
and in addition actualizes the API specification to match the API
again.
|
|
This change adds Swagger UI to the REST API endpoint in order to
experiment with the API endpoints interactively. It also serves as the
documentation for the API endpoints.
|
|
This change updates the API to use Flask Restful instead of our own
in-house REST library. This change reduces the maintenance effort and
allows us to drastically simplify the API implementation needed for the
OpenDC v2 API.
|
|
|
|
This change updates the Gradle build configuration to use Jacoco 0.8.7,
which is necessary for Kotlin 1.5.0 to work nicely with Jacoco.
|
|
This change addresses the deprecations that were caused by the migration
to Kotlin 1.5.
|
|
|
|
This change switches one of the CI builds to use Java 16 when building
and testing the simulator.
|
|
This change removes any of the user handling and endpoints from the
OpenDC API server. The API server does not need to store user
information other than an identifier in the database.
|
|
This change updates the OpenDC API to use Auth0 for API authorization.
This removes the hard dependency on Google for logging into OpenDC and
simplifies implementation as we do not have to store user information
anymore, other than the user identifier.
|
|
This change removes the Socket.IO endpoint from the public API now that
we have switched to the REST API instead. This decreases the possible
exposure to vulnerabilities as well as the maintenance burden.
|
|
This change updates the structure of the OpenDC frontend in order to
improve the maintainability of the frontend.
|