diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-06-14 13:57:25 +0200 |
|---|---|---|
| committer | Hongyu <hongyuhe.cs@googlemail.com> | 2021-06-14 17:04:42 +0200 |
| commit | f255858563a02be0f68857bd6a32f8e09d58a0b0 (patch) | |
| tree | 387f76bacd90c3e51980f42dff3e996d47cf63c1 /opendc-simulator/opendc-simulator-resources/src | |
| parent | e11cc719201b1e09a30fc88a30524219a17a1af0 (diff) | |
| parent | b5826e9dcf4a6b510d26168ba02b1781b3b6c521 (diff) | |
simulator: Add energy modelling subsystem to OpenDC
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`
Diffstat (limited to 'opendc-simulator/opendc-simulator-resources/src')
| -rw-r--r-- | opendc-simulator/opendc-simulator-resources/src/main/kotlin/org/opendc/simulator/resources/SimResourceSource.kt | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/opendc-simulator/opendc-simulator-resources/src/main/kotlin/org/opendc/simulator/resources/SimResourceSource.kt b/opendc-simulator/opendc-simulator-resources/src/main/kotlin/org/opendc/simulator/resources/SimResourceSource.kt index 9f062cc3..2f70e3cc 100644 --- a/opendc-simulator/opendc-simulator-resources/src/main/kotlin/org/opendc/simulator/resources/SimResourceSource.kt +++ b/opendc-simulator/opendc-simulator-resources/src/main/kotlin/org/opendc/simulator/resources/SimResourceSource.kt @@ -44,7 +44,11 @@ public class SimResourceSource( } override fun onConsume(ctx: SimResourceControllableContext, work: Double, limit: Double, deadline: Long): Long { - return min(deadline, ctx.clock.millis() + getDuration(work, speed)) + return if (work.isInfinite()) { + Long.MAX_VALUE + } else { + min(deadline, ctx.clock.millis() + getDuration(work, speed)) + } } override fun onUpdate(ctx: SimResourceControllableContext, work: Double) { |
