summaryrefslogtreecommitdiff
path: root/opendc-compute
AgeCommit message (Collapse)Author
2021-09-10test(compute): Add test suite for fault injectorFabian Mastenbroek
2021-09-10docs(compute): Clarify terminology in compute serviceFabian Mastenbroek
2021-09-10refactor(compute): Integrate fault injection into compute simulatorFabian Mastenbroek
This change moves the fault injection logic directly into the opendc-compute-simulator module, so that it can operate at a higher abstraction. In the future, we might again split the module if we can re-use some of its logic.
2021-09-07fix(compute): Mark unschedulable server as terminatedFabian Mastenbroek
This change updates the compute service to mark servers that cannot be scheduled as terminated instead of error. Error is instead reserved for cases where the server is in an error state while running.
2021-09-07fix(compute): Do not allow failure of inactive guestsFabian Mastenbroek
This change fixes an issue in SimHost where guests that where inactive were also failed, causing an IllegalStateException.
2021-09-07fix(compute): Use correct memory size for host memoryFabian Mastenbroek
This change fixes an issue where all servers could not be scheduled due to the memory size of the host being computed incorrectly.
2021-09-07feat(compute): Track guest up/down timeFabian Mastenbroek
This change updates the SimHost implementation to track the up and downtime of hypervisor guests.
2021-09-07fix(compute): Start host even if it already exists on hostFabian Mastenbroek
2021-09-07fix(compute): Support overcommitted memory in SimHostFabian Mastenbroek
This change enables host to overcommit their memory when testing whether new servers can fit on the host.
2021-09-07feat(compute): Track host up/down timeFabian Mastenbroek
This change adds new metrics for tracking the up and downtime of hosts due to failures. In addition, this change adds a test to verify whether the metrics are collected correctly.
2021-09-07feat(compute): Track provisioning response timeFabian Mastenbroek
This change adds a metric for the provisioning time of virtual machines by the compute service.
2021-08-25refactor(compute): Measure power draw without PSU overheadFabian Mastenbroek
This change updates the SimHost implementation to measure the power draw of the machine without PSU overhead to make the results more realistic.
2021-08-25fix(simulator): Eliminate unnecessary double to long conversionsFabian Mastenbroek
This change eliminates unnecessary double to long conversions in the simulator. Previously, we used longs to denote the amount of work. However, in the mean time we have switched to doubles in the lower stack.
2021-08-25build: Upgrade to OpenTelemetry 1.5Fabian Mastenbroek
This change upgrades the OpenTelemetry dependency to version 1.5, which contains various breaking changes in the metrics API.
2021-08-24feat(compute): Add support for SimHost failureFabian Mastenbroek
This change adds support for failures in the SimHost implementation. Failing a host will now cause the virtual machine to enter an error state.
2021-08-24fix(capelin): Update Bitbrains trace testsFabian Mastenbroek
This change updates the Bitbrains trace tests with the updated trace that does not hardcode the duration of the trace fragments.
2021-08-24refactor(simulator): Execute traces based on timestampsFabian Mastenbroek
This change refactors the trace workload in the OpenDC simulator to track execute a fragment based on the fragment's timestamp. This makes sure that the trace is replayed identically to the original execution.
2021-08-22refactor(compute): Update FilterScheduler to follow OpenStack's NovaFabian Mastenbroek
This change updates the FilterScheduler implementation to follow more closely the scheduler implementation in OpenStack's Nova. We now normalize the weights, support many of the filters and weights in OpenStack and support overcommitting resources.
2021-08-22fix(compute): Track failed servers with counters correctlyFabian Mastenbroek
2021-08-13build: Update Kotlin dependenciesFabian Mastenbroek
This change updates the Kotlin dependencies used by OpenDC to their latest version.
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-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: 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-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-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-03simulator: Split CPUFreq subsystem in compute simulatorFabian Mastenbroek
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.
2021-06-02simulator: Add uniform interface for resource metricsFabian Mastenbroek
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.
2021-06-01simulator: Centralize resource logic in SimResourceInterpreterFabian Mastenbroek
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.
2021-05-18chore: Address deprecations due to Kotlin 1.5Fabian Mastenbroek
This change addresses the deprecations that were caused by the migration to Kotlin 1.5.
2021-05-07build: Use Gradle version catalogFabian Mastenbroek
This change adds support for the Gradle version catalog feature in our build configuration. This allows us to have a single file, gradle/libs.versions.toml, which contains all the dependency versions used in this project.
2021-05-06build: Use type-safe project accessorsFabian Mastenbroek
This change updates the build scripts to use type-safe project accessors when specifying build dependencies between modules.
2021-05-03simulator: Introduce SimResourceSchedulerFabian Mastenbroek
This change introduces the SimResourceScheduler interface, which is a generic interface for scheduling the coordination and synchronization between resource providers and resource consumers. This interface replaces the need for users to manually specify the clock and coroutine context per resource provider.
2021-04-25build: Migrate to flat project structureFabian Mastenbroek
This change updates the project structure to become flattened. Previously, the simulator, frontend and API each lived into their own directory. With this change, all modules of the project live in the top-level directory of the repository. This should improve discoverability of modules of the project.