summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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.
2021-10-25perf(compute): Redesign VM interference algorithmFabian Mastenbroek
This change redesigns the virtual machine interference algorithm to have a fixed memory usage per `VmInterferenceModel` instance. Previously, for every interference domain, a copy of the model would be created, leading to OutOfMemory errors when running multiple experiments at the same time.
2021-10-25perf(telemetry): Do not allocate lambda in fast-pathFabian Mastenbroek
This commit changes the lookup for host and server aggregators to use `getOrPut` instead of `computeIfAbsent`. The former will inline the lambda and not cause any memory allocation in the fast-path (e.g., the key exists), while the latter always allocates lambda for constructing the aggregator.
2021-10-25feat(compute): Support filtering hosts based on CPU capacityFabian Mastenbroek
This change allows users to create servers with a smaller CPU capacity than the host, by specifying the CPU capacity via metadata. This also allows filtering hosts based on their available CPU capacity.
2021-10-25merge: Support conversion from Azure traces to OpenDC traces (#36)Fabian Mastenbroek
This pull request adds support for converting Azure traces to the OpenDC trace format. * Support GZIP files in Azure trace * Fix timestamp retrieval for Azure trace * Add column for CPU capacity in OpenDC format * Support conversion from Azure trace format
2021-10-25feat(trace): Support conversion from Azure trace formatFabian Mastenbroek
This change adds support for converting the Azure VM traces into the OpenDC trace format.
2021-10-25feat(trace): Add column for CPU capacity in OpenDC formatFabian Mastenbroek
This change adds a new column to resource table of the OpenDC trace format for the CPU capacity provisioned for a virtual machine, so that this capacity can be assigned to the virtual machine during simulation.
2021-10-25fix(trace): Fix timestamp retrieval for Azure traceFabian Mastenbroek
This change addresses an issue where the timestamps in the Azure trace where not retrieved correctly from the files.
2021-10-25refactor(trace): Support GZIP files in Azure traceFabian Mastenbroek
This change updates the Azure VM trace format implementation to directly support loading a trace in GZIP format in order to prevent users having to decompress the trace files so they can be opened by OpenDC.
2021-10-25merge: Address several regressions in simulatorFabian Mastenbroek
This pull request addresses several regressions that have been introduced in the past few pull requests. - Fix queue resizing logic - Change clock resolution from milliseconds to nanoseconds in `OtelClockAdapter` - Compute energy usage in absence of convergence - Fix duplicate classpath entries - Fix release workflow **Breaking API Changes** - `OtelClockAdapter` now exports time in nanoseconds as the method contract describes.
2021-10-25ci: Fix release workflowFabian Mastenbroek
This change fixes an issue with a missing whitespace in the release workflow, causing the workflow to not be parsed correctly.
2021-10-25build(jmh): Fix duplicate classpath entriesFabian Mastenbroek
This change fixes an issue with the JMH plugin where entries would be included twice on the classpath or entries that did not belong on the classpath were also included.