summaryrefslogtreecommitdiff
path: root/opendc/opendc-experiments-sc20
diff options
context:
space:
mode:
Diffstat (limited to 'opendc/opendc-experiments-sc20')
-rw-r--r--opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt9
1 files changed, 5 insertions, 4 deletions
diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt
index 18cfed5f..8eeffa6b 100644
--- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt
+++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt
@@ -228,20 +228,21 @@ fun main(args: Array<String>) {
null
}
- val running = mutableSetOf<Server>()
val finish = Channel<Unit>(Channel.RENDEZVOUS)
+ var submitted = 0
+ var finished = 0
val reader = Sc20TraceReader(File(traceDirectory), performanceInterferenceModel, getSelectedVmList())
while (reader.hasNext()) {
val (time, workload) = reader.next()
delay(max(0, time - simulationContext.clock.millis()))
+ submitted++
launch {
chan.send(Unit)
val server = scheduler.deploy(
workload.image.name, workload.image,
Flavor(workload.image.maxCores, workload.image.requiredMemory)
)
- running += server
// Monitor server events
server.events
.onEach {
@@ -250,10 +251,10 @@ fun main(args: Array<String>) {
// Detect whether the VM has finished running
if (it.server.state == ServerState.SHUTOFF) {
- running -= server
+ finished++
}
- if (running.isEmpty() && !reader.hasNext()) {
+ if (finished == submitted && !reader.hasNext()) {
finish.send(Unit)
}
}