summaryrefslogtreecommitdiff
path: root/simulator/opendc-simulator
diff options
context:
space:
mode:
Diffstat (limited to 'simulator/opendc-simulator')
-rw-r--r--simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimAbstractMachine.kt14
1 files changed, 11 insertions, 3 deletions
diff --git a/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimAbstractMachine.kt b/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimAbstractMachine.kt
index 1bdbb7e8..39ae34fe 100644
--- a/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimAbstractMachine.kt
+++ b/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimAbstractMachine.kt
@@ -38,8 +38,6 @@ import kotlin.coroutines.CoroutineContext
/**
* Abstract implementation of the [SimMachine] interface.
- *
- * @param context The [CoroutineContext] in which the machine runs.
*/
public abstract class SimAbstractMachine(private val clock: Clock) : SimMachine {
private val _usage = MutableStateFlow(0.0)
@@ -47,6 +45,13 @@ public abstract class SimAbstractMachine(private val clock: Clock) : SimMachine
get() = _usage
/**
+ * The speed of the CPU cores.
+ */
+ public val speed: List<Double>
+ get() = _speed
+ private var _speed = mutableListOf<Double>()
+
+ /**
* A flag to indicate that the machine is terminated.
*/
private var isTerminated = false
@@ -89,13 +94,16 @@ public abstract class SimAbstractMachine(private val clock: Clock) : SimMachine
val ctx = Context(resources, meta + mapOf("coroutine-context" to context))
val totalCapacity = model.cpus.sumByDouble { it.frequency }
+ _speed = MutableList(model.cpus.size) { 0.0 }
+
workload.onStart(ctx)
for ((cpu, source) in resources) {
val consumer = workload.getConsumer(ctx, cpu)
val job = source.speed
.onEach {
- _usage.value = resources.values.sumByDouble { it.speed.value } / totalCapacity
+ _speed[cpu.id] = source.speed.value
+ _usage.value = _speed.sum() / totalCapacity
}
.launchIn(this)