summaryrefslogtreecommitdiff
path: root/opendc-simulator
AgeCommit message (Collapse)Author
2025-01-10Fixed a small bug in the Power Source (#289)Dante Niewenhuis
* Fixed a small bug which caused the PowerSource to not always report the correct energy usage * spotless
2025-01-10Restructured Testing files (#287)Dante Niewenhuis
2025-01-07Updated the FlowDistributor (#285)Dante Niewenhuis
* Updated the FlowDistributor to work in more cases and be more performant. * Removed old FlowDistributor
2024-12-17Updated the FlowEngine so nodes that have to be updated in the current cycle ↵Dante Niewenhuis
cannot be scheduled twice. (#284) Updated the FlowNodeQueue
2024-12-12Solved a small bug that let FlowNodes update while they are in a closed ↵Dante Niewenhuis
state. (#283)
2024-12-06Renamed Multiplexer to FlowDistributor (#282)Dante Niewenhuis
* Restructured opendc-simulator-flow. Renamed Multiplexer to FlowDistributor. * spotless applied * Added FlowDistributor topologies back
2024-12-06refactored the MultiplexerTest to not need parquet files anymore (#281)Dante Niewenhuis
2024-12-06Added 9 new tests specifically testing the Multiplexer. This assumes the ↵Dante Niewenhuis
Multiplexer is using MaxMinFairness given that this is currently the default and only fairness available in OpenDC. (#280)
2024-11-29Multiplexer update (#278)Dante Niewenhuis
* Fixed the Multiplexer.java to properly divide the supply over the different consumers. Fixed a bug where fragments were being loaded in reversed order. * Optimized the Multiplexer.java, by only updating the supply of the consumer that updated its demand when possible.
2024-11-29Fixed a bug where fragments were being loaded in reversed order. (#276)Dante Niewenhuis
2024-11-28Removed the IndexOf function from Multiplexer.java, by adding a ↵Dante Niewenhuis
consumerIndex variable to FlowEdge.java (#275)
2024-11-26Connected the cpu power model given by the topology.json to SimCpu.java (#274)Dante Niewenhuis
* Connected the cpu power model given by the topology.json to SimCpu.java * ran spotless
2024-11-26Streamlined the FlowNetwork for better performance (#273)Dante Niewenhuis
2024-11-07Fixed power source bug (#265)Dante Niewenhuis
* Fixed a small bug making the power source not update energy usage properly * small update to the test
2024-11-05Documentation update (#261)Dante Niewenhuis
* Updated a lot of documentation, added a new get-started tutorial. * Applied Spotless * Applied Spotless Java * Added bitbrains workload to site
2024-11-03Rewritten the Carbon model (#260)Dante Niewenhuis
2024-10-30Added power sources to OpenDC (#258)Dante Niewenhuis
* Added power sources to OpenDC. In the current form each Cluster has a single power source that is connected to all hosts in that cluster * Added power sources to OpenDC. In the current form each Cluster has a single power source that is connected to all hosts in that cluster * Ran spotless Kotlin and Java
2024-10-29Updated all floats to Doubles (#257)Dante Niewenhuis
* Updated tests Changed all floats into doubles to have consistency over the whole framework Made a small update to the multiplexer to better push through supply and demand Fixed small typo Updated M3SA paths. fixed merge conflicts Removed unused components. Updated tests. Improved checkpointing model Improved model, started with SimPowerSource implemented FailureModels and Checkpointing First working version midway commit first update All simulation are now run with a single CPU and single MemoryUnit. multi CPUs are combined into one. This is for performance and explainability. * Updated test memory
2024-10-25Rewrote the FlowEngine (#256)Dante Niewenhuis
* Removed unused components. Updated tests. Improved checkpointing model Improved model, started with SimPowerSource implemented FailureModels and Checkpointing First working version midway commit first update All simulation are now run with a single CPU and single MemoryUnit. multi CPUs are combined into one. This is for performance and explainability. * fixed merge conflicts * Updated M3SA paths. * Fixed small typo
2024-09-16All simulation are now run with a single CPU and single MemoryUnit. multi ↵Dante Niewenhuis
CPUs are combined into one. This is for performance and explainability. (#255)
2024-09-10rewritten the checkpointing model (#250)Dante Niewenhuis
* Updated the checkpointing system to use SimTrace. The checkpoint model can now also scale, which means the interval between checkpoints can increase or decrease over time. * spotless kotlin * Fixed tests * spotless apply
2024-09-05Sim trace update (#249)Dante Niewenhuis
* Started on reimplementing the SimTrace implementation * updated trace format. Fragments now do not have a deadline, but a duration. The Fragments are executed in order.
2024-08-27Renamed input files and internally server is changed to task (#246)Dante Niewenhuis
* Updated SimTrace to use a single ArrayDeque instead of three separate lists for deadline, cpuUsage, and coreCount * Renamed input files to tasks.parquet and fragments.parquet. Renamed server to task. OpenDC nows exports tasks.parquet instead of server.parquet
2024-08-27Updated SimTrace to use a single ArrayDeque instead of three separate lists ↵Dante Niewenhuis
for deadline, cpuUsage, and coreCount (#245)
2024-08-22Added Unit of measurament system with new deserialization (#242)Alessio Leonardo Tomei
2024-06-17Fixed CPU limit problem (#234)Dante Niewenhuis
* Fixed a problem which caused the CPU limit to be much lower than it should be. AllocationPolicy is now properly exposed to the user * Fixed tests * spotless kotlin
2024-05-07Revamped failure models (#228)Dante Niewenhuis
2024-04-22Updated the power models and added tests (#222)Dante Niewenhuis
* Updated the power models and added tests * Updated test topologies
2024-04-22Merged scenario and portfolio (#220)Radu Nicolae
* sync with the master branch * rebase * multimodel - simulation is currently run as many times as you can see a model * factory method - handles models without given params * removed redundant flags * modelType * flags removed * implemented output into a folder * multimodel ipynb setup - to be implemented and also ran as a python script, when the simulation occurs * towards a mutimodel python implementation - issue observed - the saved files have same data? * json parsing handles now lists for topology, workloads, allocaitonPolicies, powerModels * scenarioFile inputs lists, and creates multiple combinations of scenarios * multi-model prediction repaired, now we predict using multiple models * commit before removing powerModel from scenario * commit after removing powerModel from scenario * commit after removing powerModel from scenario (and actually running) * powermodels now can output their name and full name (with min and max) * now we can select where to output (seed or output folder) * input files - clear naming + output naming improved * minimal changes * all tests passing + json files from tests updated to the new json format * json files from topology now accept only one power model (instead of list) * json files from topology now accept only one power model (instead of list) * multi and single input from tests updated to match the format * tests passed locally * spotless applies * demo folder removed
2024-03-05Cpu fix (#208)Dante Niewenhuis
* Updated the topology format to JSON. Updated TopologyReader.kt to handle JSON filed. Added documentation for the new format. * applied spotless kotlin * small update * Updated for spotless apply * Updated for spotless apply
2024-03-05Updated package versions, updated web server tests. (#207)Dante Niewenhuis
* Updated all package versions including kotlin. Updated all web-server tests to run. * Changed the java version of the tests. OpenDC now only supports java 19. * small update * test update * new update * updated docker version to 19 * updated docker version to 19
2024-02-14Updated metrics and parquet output (#195)Dante Niewenhuis
* Updated metrics and parquet output * fixed typos
2024-01-08refactored opendc-experiment-compute (#190)Dante Niewenhuis
* removed experiment-compute and integrated all components into opendc-compute * updated workflow gradle file * removed unneeded code
2023-12-14Updated tests to run successfully (#187)Dante Niewenhuis
* made sure all tests run * fixed typo * executed spotlessApply * added back web-server tests * updated SimTraceWorkloadTest * commented CapelinRunneer and GreenifierRunner tests * commented one SimTraceWorkloadTest * altered codecov execution * changed codecov
2023-11-14Updated TraceReader, Simulation now continues until all tasks are doneDante Niewenhuis
2023-01-11Heap size comparison was incorrect. FixedSacheendra Talluri
2022-12-07bug(sim/flow): Record capacity changes on idle outletsFabian Mastenbroek
This change fixes an issue with the `ForwardingFlowMultiplexer` where the capacity of new outlets were not recorded correctly due to no handler being attached to idle outlets, causing the `pull` events to be disregarded. This bug manifested in an issue where the CPU counters where reporting negative values. This was caused by the CPU usage/demand being subtracted from a zero capacity.
2022-11-13test(sim/power): Remove use of Spy object from TestInletFabian Mastenbroek
This change removes the use of a Spy object from the TestInlet class. Since the Spy is not actually used in our tests, we remove it due to the high initialization cost.
2022-11-13refactor: Replace use of CoroutineContext by DispatcherFabian Mastenbroek
This change replaces the use of `CoroutineContext` for passing the `SimulationDispatcher` across the different modules of OpenDC by the lightweight `Dispatcher` interface of the OpenDC common module.
2022-11-13refactor(sim/core): Re-implement SimulationScheduler as DispatcherFabian Mastenbroek
This change updates the `SimulationScheduler` class to implement the `Dispatcher` interface from the OpenDC Common module, so that OpenDC modules only need to depend on the common module for dispatching future task (possibly in simulation).
2022-11-13refactor: Use InstantSource as time sourceFabian Mastenbroek
This change updates the modules of OpenDC to always accept the `InstantSource` interface as source of time. Previously we used `java.time.Clock`, but this class is bound to a time zone which does not make sense for our use-cases. Since `java.time.Clock` implements `java.time.InstantSource`, it can be used in places that require an `InstantSource` as parameter. Conversion from `InstantSource` to `Clock` is also possible by invoking `InstantSource#withZone`.
2022-10-31feat(sim/compute): Add support for snapshotting workloadsFabian Mastenbroek
This change updates the interface of `SimWorkload` to support snapshotting workloads. We introduce a new method `snapshot()` to this interface which returns a new `SimWorkload` that can be started at a later point in time and on another `SimMachine`, which continues progress from the moment the workload was snapshotted.
2022-10-31refactor(sim/compute): Report exceptions in onStop as suppressedFabian Mastenbroek
This change updates the implementation of `SimMachineContext` to report exceptions thrown in `onStop` as suppressed exceptions if an exception caused the workload to stop.
2022-10-31feat(sim/flow): Support synchronous update of FlowStageFabian Mastenbroek
This change adds a new method to `FlowStage` called `sync()` which enables users to synchronously update the stage at the current timestamp. This functionality is neccessary to support snapshotting since we need to synchronize the state of the `FlowStage` before creating a snapshot of the workload.
2022-10-28feat(sim/compute): Add support for chaining workloadsFabian Mastenbroek
This change adds a new static method `chain` to `SimWorkloads` to chain multiple workloads sequentially.
2022-10-28feat(sim/compute): Add support for resetting machine contextFabian Mastenbroek
This change updates the interface of `SimMachineContext` to allow workloads to reset all resources provided by the machine to the workload. This allows us to implement a `SimWorkload` that can compose multiple workloads.
2022-10-28refactor(sim/compute): Provide workload constructors in SimWorkloadsFabian Mastenbroek
This change introduces a new class SimWorkloads which provides construction methods for the standard workloads available in OpenDC.
2022-10-28feat(sim/compute): Add completion parameter to startWorkloadFabian Mastenbroek
This change updates the interface of `SimMachine#startWorkload` to introduce a parameter `completion` that is invoked when the workload completes either succesfully or due to failure. This functionality has often been implemented by wrapping a `SimWorkload` and catching its exceptions. However, since this functionality is used in all usages of `SimMachine#startWorkload` we instead embed it into `SimMachine` itself.
2022-10-21refactor(sim/flow): Remove old flow simulatorFabian Mastenbroek
This change removes the old version of the flow simulator from the OpenDC repository. The old version has been replaced by the new flow2 framework which is able to simulate flows more efficiently.
2022-10-21perf(sim/compute): Optimize workload implementation of SimTraceFabian Mastenbroek
This change updates the workload implementation of SimTrace by introducing multiple implementations of the FlowStageLogic interface, which is selected dynamically when the workload starts. This change helps eliminate the unecessary division (and memory fetch) when running a workload with just a single CPU.