summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-02-18perf(common): Optimize TimerSchedulerFabian Mastenbroek
This change updates the TimerScheduler implementation to directly use the Delay object instead of running the timers inside a coroutine. Constructing the coroutine is more expensive, so we prefer running in a Runnable.
2022-02-18refactor(utils): Rename utils module to common moduleFabian Mastenbroek
This change adds a new module, opendc-common, that contains functionality that is shared across OpenDC's modules. We move the existing utils module into this new module.
2022-02-18feat(utils): Add Pacer to pace scheduling cyclesFabian Mastenbroek
This change adds a new Pacer class that can pace the incoming scheduling requests into scheduling cycles by allowing the user to specify a scheduling quantum.
2022-02-18build: Update to Gradle 7.4Fabian Mastenbroek
This change updates the Gradle wrapper to version 7.4.
2022-02-18build(web/ui): Bump next to 12.1.0 (#58)dependabot[bot]
Bumps [next](https://github.com/vercel/next.js) from 11.1.3 to 12.1.0. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v11.1.3...v12.1.0) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-17fix(web/ui): Fix creation of topologiesFabian Mastenbroek
This change fixes an issue with the creation of topologies in the frontend. Previously, the frontend relied on Redux to update the state. However, since we removed the reliance on Redux, we also need to create a new topology using the functions from React Query to actually send a request to the API server.
2022-02-17merge: Update deployment via DockerFabian Mastenbroek
This pull request updates the deployment process to be compatible with the latest auth changes. - Support custom audience in web runner - Fix API deployment using Docker Compose - Actualize deployment guide - Update to OpenJDK 17 **External Dependencies** - Mongo 5 - OpenJDK 17
2022-02-17build(docker): Update to OpenJDK 17Fabian Mastenbroek
This change updates the base image of the simulator to OpenJDK 17.
2022-02-17docs: Actualize deployment guideFabian Mastenbroek
This change updates the deployment guide for the recent change of the simulator runner which now communicates via the API instead of directly with the Mongo database. See 6752b6d50faab447b3edc13bddf14f53401392f1 for more information.
2022-02-17ci: Fix API deployment using Docker ComposeFabian Mastenbroek
This change updates the Docker Compose configuration to properly deploy the API server, by passing the necessary Auth0 information to it.
2022-02-17fix(web/runner): Support custom audience in web runnerFabian Mastenbroek
This change adds support for custom audience values in the web runner. If the audience used by the user is different from the default value (https://api.opendc.org/v2/), then the runner fails to obtain a valid access token for the API.
2022-02-15refactor: Update OpenTelemetry to version 1.11Fabian Mastenbroek
This change updates the OpenDC codebase to use OpenTelemetry v1.11, which stabilizes the metrics API. This stabilization brings quite a few breaking changes, so significant changes are necessary inside the OpenDC codebase.
2022-01-22build(ui): Upgrade nanoid to 3.2.0 (#54)dependabot[bot]
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.25 to 3.2.0. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.1.25...3.2.0) --- updated-dependencies: - dependency-name: nanoid dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-11merge: Update to Kotlin 1.6.10Fabian Mastenbroek
This pull request updates the OpenDC codebase to use Kotlin 1.6.10 for building the project. * Update to Kotlin 1.6.10 * Update build dependencies to their latest version * Update project dependencies to their latest version where possible. * Add Dependabot configuration
2022-01-11ci: Add Dependabot configuration for GitHub actionsFabian Mastenbroek
This change adds a Dependabot configuration to the repository to check for GitHub Actions updates.
2022-01-11build: Update project dependenciesFabian Mastenbroek
This change updates the project dependencies to their latest versions where possible.
2022-01-11build: Update to Kotlin 1.6.10Fabian Mastenbroek
This change updates the build script to use Kotlin 1.6.10 for building OpenDC.
2021-12-30merge: Address log4j vulnerabilitiesFabian Mastenbroek
This pull request addresses the issues with log4j in OpenDC. * Update log4j to version 2.17.1 * Update Gradle to version 7.3.3 * Update other dependencies
2021-12-29build: Update build dependenciesFabian Mastenbroek
This change updates the dependencies for the simulator. These changes may include possible fixes for the vulnerabilities in log4j.
2021-12-29build: Update to Gradle 7.3.3Fabian Mastenbroek
This change updates the Gradle wrapper version to 7.3.3 which includes a fix for the recent log4j vulnerabilities.
2021-12-29build: Update to log4j 2.17.1Fabian Mastenbroek
This change fixes vulnerabilities found in earlier versions of log4j.
2021-12-12fix(trace): Read dependencies from .gwf trace file (#50)Florian Gerlinghoff
Tasks from a .gwf trace file did not have dependencies because this property was not assigned after being read in the GwfTaskTableReader. I removed the conversion from String to Long in parseParents because it seems like other readers (the Parquet reader in particular) return Strings as well, which is why they are converted to Long in line 75 of TraceHelpers.kt. Co-authored-by: Fabian Mastenbroek <mail.fabianm@gmail.com>
2021-12-11build: Update to log4j 2.15.0Fabian Mastenbroek
This change addresses the RCE vulnerability in log4j <= 2.14.1.
2021-12-09merge: Support convergence of space shared hypervisorFabian Mastenbroek
This change addresses an issue with the SimSpaceSharedHypervisor implementation where it did not emit convergence events due to missing implementation. This caused issues with users of this class trying to obtain usage data, which depended on these events being emitted. * Support `FlowConvergenceListener` in `FlowForwarder` and `ForwardingFlowMux` * Support `FlowConvergenceListener` in `SimSpaceSharedHypervisor`. ## Breaking API Changes :warning: * N/A
2021-12-09ci: Fix issue with actions/upload-artifact@v2Fabian Mastenbroek
This change is a workaround for the issue with actions/upload-artifact@v2 which randomly fails on Windows instances.
2021-12-09fix(simulator): Support convergence of space shared hypervisorFabian Mastenbroek
This change addresses an issue with the SimSpaceSharedHypervisor implementation where it did not emit convergence events due to missing implementation. This caused issues with users of this class trying to obtain usage data, which depended on these events being emitted.
2021-12-09build(ui): Bump next to 11.1.3 (#47)dependabot[bot]
Bumps [next](https://github.com/vercel/next.js) from 11.1.2 to 11.1.3. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v11.1.2...v11.1.3) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-01bug(workflow): Activate timer even without incoming jobsFabian Mastenbroek
This change fixes an issue where a scheduling cycle is not scheduled when there are no incoming jobs. Still, there might be pending tasks that can be scheduled. Therefore, we remove this conditional.
2021-11-24merge: Update to Kotlin 1.6 (#45)Fabian Mastenbroek
This pull request updates the Kotlin version used by OpenDC to 1.6 as well as updating the dependencies to their latest version where possible.
2021-11-24build: Update OpenDC dependenciesFabian Mastenbroek
This change updates the OpenDC dependencies to their latest version where possible. We do not update OpenTelemetry, since the new version contains breaking changes that need to be resolved seperately.
2021-11-24build: Update to Kotlin 1.6Fabian Mastenbroek
This change updates the build process to use Kotlin 1.6.0.
2021-11-19docs: Add CITATION.cffFabian Mastenbroek
This change adds a CITATION.cff file to the repository which Github uses to display how users can cite the project.
2021-11-17merge: Improve workflow service (#43)Fabian Mastenbroek
This pull request is the first in a series of changes to the workflow service. This pull request aims to help users setup workflow simulations. The next pull requests will focus on improving the design of the workflow service. * Remove WorkflowSchedulerMode * Add helper tools for workflow simulations (e.g. `WorkflowServiceHelper`) **Breaking API Changes** * Removal of `WorkflowSchedulerMode` * Rename from `ComputeWorkloadRunner` to `ComputeServiceHelper`
2021-11-17refactor(workflow): Remove WorkflowSchedulerModeFabian Mastenbroek
This change removes the WorkflowSchedulerMode interface in favour of an integrated timer scheduler approach that batches scheduling cycles over a user-specified quantum. This quantum can be lowered to a small value to get the interactive behavior. There is no replacement for the random behavior, but we believe that such a policy makes no sense in a real-world scenario.
2021-11-16feat(workflow): Add helper tools for workflow simulationsFabian Mastenbroek
This change adds a new module, opendc-workflow-workload that contains helper code for constructing workflow simulations using OpenDC.
2021-11-11merge: Upgrade to Gradle 7.3 (#42)Fabian Mastenbroek
This pull request upgrades Gradle to version 7.3. OpenDC uses Gradle to orchestrate the build process. * Upgrade to Gradle wrapper to 7.3 * Fix Gradle release candidate test workflow
2021-11-11ci: Build with Java 17Fabian Mastenbroek
This change updates the CI workflows to build the simulator with Java 17 by default, which is the latest available release.
2021-11-11ci: Fix Gradle release candidate test workflowFabian Mastenbroek
This change fixes an issue with the workflow that tests the latest Gradle release candidate where the distribution of the Java runtime was not specified, which has been made a required parameter since setup-java@v2.
2021-11-11build: Upgrade to Gradle 7.3Fabian Mastenbroek
This change updates the Gradle wrapper to version 7.3. This release adds official support for Java 17 as well as various improvements. See the release notes for more information: https://docs.gradle.org/7.3/release-notes.html
2021-11-02ci: Update Github Actions workflows (#40)Fabian Mastenbroek
This pull request updates the CI pipeline of the project. **Implementation Notes** - Update to Codecov action v2 - Update to `setup-java` v2 - Migrate to `gradle/gradle-build-action@v2` - Add workflows for testing Java and Gradle EA releases - Update build dependencies **External Dependencies** - Kotlin, Github Actions, Ktlint, Dokka
2021-11-02build: Update build dependenciesFabian Mastenbroek
2021-11-02ci: Add workflows for testing Java and Gradle EA releasesFabian Mastenbroek
This change adds two workflows that test weekly whether OpenDC builds against the latest Gradle release candidate (RC) and Java early access (EA) release.
2021-11-02ci: Update Java Github Actions workflowsFabian Mastenbroek
This change updates the Github Actions workflows for the Java/Kotlin part of the project. We now use the gradle-build-action from Gradle to build the project, which does caching for us. In addition, we update the Codecov action to version 2, since the old version is deprecated and will stop working next year.
2021-11-02build(ui): Bump ansi-regex to 5.0.1 (#38)dependabot[bot]
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v5.0.0...v5.0.1) --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-02refactor(trace): Support gaps in trace dataFabian Mastenbroek
This change updates the implementation of the trace converter and SimTrace implementation to support cases where there is a gap between samples in the trace data. This change allows users to specify what to do in case samples are missing in the trace. The available options are specified in `SimTrace.FillMode`. Currently, we support either carrying the previous value forward or set the usage to zero.
2021-10-25merge: Improve the OpenDC compute model (#37)Fabian Mastenbroek
This pull request contains various improvements to the OpenDC compute simulation model. - Support filtering hosts based on CPU capacity - Do not allocate lambda in fast-path - Redesign VM interference algorithm - Report provisioning time of virtual machines - Prevent allocations during collection cycle - Use correct flow input capacity for counters - Support running workloads without coroutines **Breaking API Changes** - `VirtualMachine` now requires `cpuCapacity` parameter. - `VmInterferenceModel` needs to be constructed using `VmInterferenceModel.Builder` and can't be passed a list of groups anymore. - Scheduling latency is not collected anymore. Instead, use the boot time and provisioning time to derive the scheduling latency. - Telemetry data is recorded using `*TableReader` interfaces as opposed to the `*Data` classes. These classes are re-used per row and should not be shared with other threads, since the underlying data may change. - `SimMachine` does not implement `AutoCloseable` anymore. Machines can be removed from a `SimHypervisor` using the `removeMachine` method. - `SimMachine.run` is moved to an extension method called `runWorkload`. Users can now also choose to run a workload using the asynchronous `SimMachine.startWorkload`.
2021-10-25refactor(simulator): Support running workloads without coroutinesFabian Mastenbroek
This change updates the SimMachine interface to drop the coroutine requirement for running a workload on a machines. Users can now asynchronously start a workload and receive notifications via the workload callbacks. Users still have the possibility to suspend execution during workload execution by using the new `runWorkload` method, which is implemented on top of the new `startWorkload` primitive.
2021-10-25fix(simulator): Use correct flow input capacity for countersFabian Mastenbroek
This change fixes an issue with the FlowMultiplexer implementation where the capacity of each flow input was equal to the capacity of all flow outputs. Now, the user can specify the capacity of the input, which will be used to correctly compute the active and idle time.
2021-10-25perf(telemetry): Prevent allocations during collection cycleFabian Mastenbroek
This change redesigns the ComputeMonitor interface to reduce the number of memory allocations necessary during a collection cycle.
2021-10-25feat(telemetry): Report provisioning time of virtual machinesFabian Mastenbroek
This change adds support for collecting the provisioning time of virtual machines in addition to their boot time.