summaryrefslogtreecommitdiff
path: root/opendc-simulator/opendc-simulator-compute/src
AgeCommit message (Collapse)Author
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-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 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: 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: 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-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: 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-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-03simulator: Migrate frequency scaling governors to OS layerFabian Mastenbroek
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.
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: Start consumers directly from workloadFabian Mastenbroek
This change updates the SimWorkload interfaces to allow implementations to start consumers for the machine resource providers directly.
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-04simulator: Update power draw on machine drawFabian Mastenbroek
This change fixes an issue where the power draw of a machine is initially zero and does not update until the CPU usage is higher than zero, while the idle power is the machine is not actually zero.
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-05-03simulator: Fix compute benchmarksFabian Mastenbroek
This change fixes an issue with the compute benchmarks where the workload was being re-used across iterations.
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.