diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-06-14 13:57:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-14 13:57:25 +0200 |
| commit | e24e7c1601257cf27d71db8ca3ae273b24ab06ed (patch) | |
| tree | 913777f9e7c0008abaaf18445932583e4b01c972 /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) { |
