diff options
Diffstat (limited to 'simulator')
2 files changed, 6 insertions, 2 deletions
diff --git a/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.kt index 997eba0c..763234f8 100644 --- a/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.kt +++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.kt @@ -41,6 +41,7 @@ import org.opendc.format.environment.EnvironmentReader import org.opendc.format.trace.TraceReader import org.opendc.simulator.compute.SimFairShareHypervisorProvider import org.opendc.simulator.compute.interference.PerformanceInterferenceModel +import org.opendc.simulator.compute.workload.SimTraceWorkload import org.opendc.simulator.compute.workload.SimWorkload import org.opendc.simulator.failures.CorrelatedFaultInjector import org.opendc.simulator.failures.FaultInjector @@ -261,6 +262,7 @@ public suspend fun processTrace( delay(max(0, (entry.start - offset) - clock.millis())) launch { chan.send(Unit) + val workload = SimTraceWorkload((entry.meta["workload"] as SimTraceWorkload).trace) val server = client.newServer( entry.name, image, @@ -269,7 +271,7 @@ public suspend fun processTrace( entry.meta["cores"] as Int, entry.meta["required-memory"] as Long ), - meta = entry.meta + meta = entry.meta + mapOf("workload" to workload) ) suspendCancellableCoroutine { cont -> diff --git a/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt b/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt index 694a928b..ffb332d1 100644 --- a/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt +++ b/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkload.kt @@ -34,12 +34,14 @@ import org.opendc.simulator.resources.consumer.SimConsumerBarrier * consumption for some period of time. */ public class SimTraceWorkload(public val trace: Sequence<Fragment>) : SimWorkload { - private var offset = 0L + private var offset = Long.MIN_VALUE private val iterator = trace.iterator() private var fragment: Fragment? = null private lateinit var barrier: SimConsumerBarrier override fun onStart(ctx: SimMachineContext) { + check(offset == Long.MIN_VALUE) { "Workload does not support re-use" } + barrier = SimConsumerBarrier(ctx.cpus.size) fragment = nextFragment() offset = ctx.clock.millis() |
