summaryrefslogtreecommitdiff
path: root/opendc-simulator/opendc-simulator-compute/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-08-18 12:18:08 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-08-24 11:20:19 +0200
commita9539a3e444c1bd4fb7090dad38f3b568afe092a (patch)
treed708f12e7769ebda31e73d47556e4fd300e45eda /opendc-simulator/opendc-simulator-compute/src/main
parent484848e2e0bfdaf46f10112e358d3475dbf8e725 (diff)
fix(simulator): Support trace fragments with zero cores available
This change fixes an issue with the simulator where trace fragments with zero cores to execute would give a NaN amount of work.
Diffstat (limited to 'opendc-simulator/opendc-simulator-compute/src/main')
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt10
1 files changed, 9 insertions, 1 deletions
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt
index fc49f357..48be8e1a 100644
--- a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt
+++ b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt
@@ -89,7 +89,10 @@ public class SimTraceWorkload(public val trace: Sequence<Fragment>, private val
return SimResourceCommand.Idle(timestamp)
}
- val usage = fragment.usage / fragment.cores
+ val usage = if (fragment.cores > 0)
+ fragment.usage / fragment.cores
+ else
+ 0.0
val deadline = timestamp + fragment.duration
val duration = deadline - now
val work = duration * usage / 1000
@@ -103,6 +106,11 @@ public class SimTraceWorkload(public val trace: Sequence<Fragment>, private val
/**
* A fragment of the workload.
+ *
+ * @param timestamp The timestamp at which the fragment starts.
+ * @param duration The duration of the fragment.
+ * @param usage The CPU usage during the fragment.
+ * @param cores The amount of cores utilized during the fragment.
*/
public data class Fragment(val timestamp: Long, val duration: Long, val usage: Double, val cores: Int)
}