From e86cb2f8a9075187607e5f49cf93fda9b75f7338 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 9 Apr 2020 17:55:13 +0200 Subject: bug: Do not schedule too large VMs on hypervisors --- .../kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'opendc/opendc-experiments-sc20/src') 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) { null } - val running = mutableSetOf() val finish = Channel(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) { // 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) } } -- cgit v1.2.3