summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-07ui: Split App container into separate componentsFabian Mastenbroek
This change splits the App container into separate pages, as a starting point for removing much of the unnecessary state from Redux.
2021-07-05ui: Upgrade to Next.js 11Fabian Mastenbroek
This pull request updates the OpenDC frontend to use Next.js 11. * Upgrade to Next.js 11 * Enable React Strict mode * Enable ESLint * Fix ESLint issues
2021-07-05ui: Fix linting errorsFabian Mastenbroek
2021-07-05ui: Add support for linting via ESLintFabian Mastenbroek
2021-07-05ui: Upgrade to Next.js 11Fabian Mastenbroek
2021-07-05web: Migrate web runner to REST APIFabian Mastenbroek
This pull request updates the web runner to remove its hard dependency on a direct database connection. Instead, it now communicates via the REST API. * Add endpoint for scheduling simulation jobs * Create simple API client for web runner * Remove direct database connection from web runner * Improve validation of API input/output data Implements #144
2021-07-05runner: Use public API for scheduling simulation jobsFabian Mastenbroek
This change updates the web runner to not require direct database access for scheduling simulation jobs. Instead, the runner polls the public REST API for available jobs and reports its results through there.
2021-07-02api: Restrict API scopesFabian Mastenbroek
This change adds support for restricting API scopes in the OpenDC API server. This is necessary to make a distinction between runners and regular users.
2021-07-02api: Add endpoint for simulation jobsFabian Mastenbroek
This change adds an API endpoint for simulation jobs which allows API consumers to manage simulation jobs without needing direct database access that is currently needed for the web runner.
2021-07-02api: Add stricter validation of input/output dataFabian Mastenbroek
This change adds stricter validation of data that enters and leaves the database. As a result, we clearly separate the database model from the data model that the REST API exports.
2021-07-02api: Pass audience during Swagger UI authenticationFabian Mastenbroek
This change updates the Swagger UI configuration to pass the Auth0 audience to the authorization URL in order to obtain a valid JWT token.
2021-07-02api: Fix OpenAPI topology schemaFabian Mastenbroek
This change addresses some issues in the OpenAPI schema for the datacenter topology.
2021-06-29ui: Enable React Strict Mode via Next.jsFabian Mastenbroek
This change enables React Strict Mode via Next.js configuration in order to highlight potential problems with the web application.
2021-06-29ui: Delete unused NGINX configurationFabian Mastenbroek
2021-06-24ci: Build pushes to master branchFabian Mastenbroek
This change updates the build workflow to trigger on pushes to the master branch. We previously removed this trigger to reduce the number of CI builds when merging changes into the master branch. However, with the integration of Codecov as well as the caching steps in the workflow, it makes sense to build every push to the master branch.
2021-06-24build: Upgrade to Kotlin 1.5.20Fabian Mastenbroek
This change updates the Kotlin version used in the Gradle build to version 1.5.20. For more details, see https://kotlinlang.org/docs/releases.html#release-details.
2021-06-24simulator: Support perf interference in uniform resource modelFabian Mastenbroek
This pull request re-implements the performance interference model to integrate with the uniform resource model in OpenDC. This forms the basis for other forms of resource interference (e.g., network or disk). * Add interface for resource interference in uniform resource model (`opendc-simulator-resources`) * Remove dependency on performance interference model from trace readers * Re-implement the performance interference model on top of the interface in the uniform resource model. **Breaking API Changes** * The original performance interference model classes are removed * The SC20 trace and environment related readers have moved to the Capelin experiments module. * Changes to the interfaces in `opendc-format`. Implements #103
2021-06-24simulator: Re-implement performance interference modelFabian Mastenbroek
This change updates reimplements the performance interference model to work on top of the universal resource model in `opendc-simulator-resources`. This enables us to model interference and performance variability of other resources such as disk or network in the future.
2021-06-24format: Remove performance interference from trace readersFabian Mastenbroek
This change updates the trace reader implementation to remove their dependency on the performance interference model. In a future commit, we will instead pass the performance interference model via the host/hypervisor.
2021-06-24simulator: Add interface for resource interferenceFabian Mastenbroek
This change introduces an interface for modelling performance variability due to resource interference in systems where resources are shared across multiple consumers.
2021-06-22simulator: Add support for storage devices (v1)Fabian Mastenbroek
This change adds initial support for storage devices in the OpenDC simulator. Currently, we focus on local disks attached to the machine. In the future, we plan to support networked storage devices using the networking support in OpenDC.
2021-06-22simulator: Add support for networking (v1)Fabian Mastenbroek
This change adds support for networking in the simulator. As outlined in #84, the network model doesn't model individual packets, but instead considers dynamic flows between network devices. This pull request adds the bare-minimum implementation necessary to model network traffic. In the future, we will add advanced functionality such as routing and other L3 concepts. * Add core model for network simulation * Add model for network adapter that attaches to machine * Add virtual network switch to bridge traffic between hosts.
2021-06-22ci: Optimize Gradle build performance in Github ActionsFabian Mastenbroek
This change updates the Github Actions Gradle workflows in order to improve the runtime performance of these workflows. We have now enabled build caching as well as parallel builds to speed up the build process. Moreover, we now cache the Gradle wrapper.
2021-06-22simulator: Add virtual network switchFabian Mastenbroek
This change adds a virtual network switch to the OpenDC networking module. Currently, the switch bridges the traffic equally across all ports. In the future, we'll also add routing support to the switch.
2021-06-22simulator: Add support for attaching network adapter to machineFabian Mastenbroek
This change bridges the compute and network simulation module by adding support for network adapters in the compute module. With these network adapters, compute workloads can communicate over the network that the adapters are connected to.
2021-06-21simulator: Re-organize compute simulator moduleFabian Mastenbroek
This change re-organizes the classes of the compute simulator module to make a clearer distinction between the hardware, firmware and software interfaces in this module.
2021-06-21simulator: Add core module for network simulationFabian Mastenbroek
This change adds a basic framework as basis for network simulation support in OpenDC. It is modelled similarly to the power system that has been added recently.
2021-06-21simulator: Optimize resource interpreter implementationFabian Mastenbroek
This pull request implements several optimizations in the resource interpreter implementation. * Interpreter is now shared across hosts in experiments * Interpreter allocations are pooled where possible * Resource lifecycle concept is eliminated * Optimized flag management in interpreter
2021-06-21simulator: Reduce allocations in interpreter hot pathFabian Mastenbroek
This change updates the resources module to reduce the number of object allocations in the interpreter's hot path. This in turn should reduce the GC pressure.
2021-06-21simulator: Optimize flag management of resource contextFabian Mastenbroek
This change optimizes the internal flag management used in the SimResourceContextImpl to use bitwise flags instead of enums. This approach simplifies the implementation immensely and reduces the number of branches.
2021-06-21simulator: Remove concept of resource lifecycleFabian Mastenbroek
This change removes the AutoCloseable interface from the SimResourceProvider and removes the concept of a resource lifecycle. Instead, resource providers are now either active (running a resource consumer) or in-active (being idle), which simplifies implementation.
2021-06-21simulator: Pool update allocations in interpreterFabian Mastenbroek
This change updates the SimResourceInterpreter implementation to pool the allocations of the Update objects. This reduces the amount of allocations necessary in the hot path of the simulator.
2021-06-21simulator: Optimize access to remainingWork propertyFabian Mastenbroek
This change updates the SimResourceContextImpl to optimize the access to the remainingWork property, which is required by many calls in the hot path.
2021-06-21exp: Enable interpreter sharing across hostsFabian Mastenbroek
This change enables the experiments to share the SimResourceInterpreter across multiple hosts, which allows updates to be scheduled efficiently for all machines at the same time. This is especially beneficial if the machines operate on the same time slices.
2021-06-21simulator: Add Linux CPU frequency scaling governors Hongyu
This change adds the CPU frequency scaling governors including the conservative and on-demand governors that are found in the Linux kernel. # Implementation Notes * A `ScalingPolicy` has been added to aid the frequency scaling process.
2021-06-20simulator: Add Linux CPU frequency scaling governorsHongyu
This change adds the CPU frequency scaling governors that are found in the Linux kernel, which include the conservative and on-demand governor.
2021-06-17build: Update dependenciesFabian Mastenbroek
This change updates the project dependencies to follow the latest available version where possible.
2021-06-17faas: Rename opendc-serverless to opendc-faasFabian Mastenbroek
This change renames the opendc-serverless module to opendc-faas to better distinguish between the two terms (Serverless and FaaS) and be clearer about the intent of the module. The opendc-faas module holds the code for the FaaS platform on top of OpenDC. Although this is one approach of doing serverless, serverless can also entail other services that will not be covered by this module.
2021-06-16exp: Fix power tracking for energy experimentsFabian Mastenbroek
This change fixes an issue where the power in the energy experiments is always reported as zero due to the changes in commit 652b869.
2021-06-15build: Upgrade to Gradle 7.1Fabian Mastenbroek
This change upgrades the Gradle build system to version 7.1.
2021-06-15exp: Fix execution of energy experimentsFabian Mastenbroek
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.
2021-06-14simulator: Add energy modelling subsystem to OpenDCFabian Mastenbroek
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`
2021-06-14simulator: Add energy modelling subsystem to OpenDCFabian Mastenbroek
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`
2021-06-14simulator: Add model for PSU power lossHongyu He
This change introduces power loss to the PSU component.
2021-06-11simulator: Add model for UPSHongyu He
This change adds a new model for the UPS to the OpenDC simulator power subsystem.
2021-06-11simulator: Integrate power subsystem with compute subsystemFabian Mastenbroek
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.
2021-06-11simulator: Add power loss to SimPduHongyu He
This change adds a model for power loss to the Power Distribution Unit (PDU) model in OpenDC.
2021-06-10simulator: Add module for datacenter power componentsFabian Mastenbroek
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).
2021-06-09simulator: Add memory resourceFabian Mastenbroek
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.
2021-06-09Remove dependency on HadoopFabian Mastenbroek
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.