summaryrefslogtreecommitdiff
path: root/opendc-simulator/opendc-simulator-resources/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-06-14 13:57:25 +0200
committerGitHub <noreply@github.com>2021-06-14 13:57:25 +0200
commite24e7c1601257cf27d71db8ca3ae273b24ab06ed (patch)
tree913777f9e7c0008abaaf18445932583e4b01c972 /opendc-simulator/opendc-simulator-resources/src/main
parente11cc719201b1e09a30fc88a30524219a17a1af0 (diff)
parentb5826e9dcf4a6b510d26168ba02b1781b3b6c521 (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/main')
-rw-r--r--opendc-simulator/opendc-simulator-resources/src/main/kotlin/org/opendc/simulator/resources/SimResourceSource.kt6
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) {