From 7a11aff2ff46b0fb3bf01f537946d5fcd66a1e90 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 8 Apr 2020 15:27:24 +0200 Subject: bug: Fix incorrect reporting of overcommission --- .../kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt | 8 ++++++-- .../kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'opendc/opendc-experiments-sc20') diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt index 212b1bfb..eb6ff8de 100644 --- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt +++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt @@ -17,7 +17,7 @@ class Sc20Monitor( private val lastServerStates = mutableMapOf>() init { - outputFile.write("time,duration,requestedBurst,grantedBurst,numberOfDeployedImages,server,hostState,hostUsage,powerDraw,failedVms\n") + outputFile.write("time,duration,requestedBurst,grantedBurst,overcommissionedBurst,interferredBurst,numberOfDeployedImages,server,hostState,hostUsage,powerDraw,failedVms\n") } suspend fun onVmStateChanged(server: Server) {} @@ -32,6 +32,8 @@ class Sc20Monitor( 0, 0, 0, + 0, + 0, server, duration ) @@ -46,6 +48,8 @@ class Sc20Monitor( time: Long, requestedBurst: Long, grantedBurst: Long, + overcommissionedBurst: Long, + interferredBurst: Long, numberOfDeployedImages: Int, hostServer: Server, duration: Long = 5 * 60 * 1000L @@ -57,7 +61,7 @@ class Sc20Monitor( val usage = driver.usage.first() val powerDraw = driver.powerDraw.first() - outputFile.write("$time,$duration,$requestedBurst,$grantedBurst,$numberOfDeployedImages,${hostServer.uid},${hostServer.state},$usage,$powerDraw") + outputFile.write("$time,$duration,$requestedBurst,$grantedBurst,$overcommissionedBurst,$interferredBurst,$numberOfDeployedImages,${hostServer.uid},${hostServer.state},$usage,$powerDraw") outputFile.newLine() } 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 3392bd02..bd06520a 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 @@ -200,6 +200,8 @@ fun main(args: Array) { simulationContext.clock.millis(), event.requestedBurst, event.grantedBurst, + event.overcommissionedBurst, + event.interferredBurst, event.numberOfDeployedImages, event.hostServer ) @@ -237,7 +239,7 @@ fun main(args: Array) { chan.send(Unit) val server = scheduler.deploy( workload.image.name, workload.image, - Flavor(workload.image.cores, workload.image.requiredMemory) + Flavor(workload.image.maxCores, workload.image.requiredMemory) ) running += server // Monitor server events -- cgit v1.2.3 From a235ddbfd3c5fb6086cc5b9f637c840e40b46147 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 9 Apr 2020 17:22:54 +0200 Subject: style: Fix typo in interferedBurst --- .../main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt | 6 +++--- .../kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'opendc/opendc-experiments-sc20') diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt index eb6ff8de..a5b13f84 100644 --- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt +++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt @@ -17,7 +17,7 @@ class Sc20Monitor( private val lastServerStates = mutableMapOf>() init { - outputFile.write("time,duration,requestedBurst,grantedBurst,overcommissionedBurst,interferredBurst,numberOfDeployedImages,server,hostState,hostUsage,powerDraw,failedVms\n") + outputFile.write("time,duration,requestedBurst,grantedBurst,overcommissionedBurst,interferedBurst,numberOfDeployedImages,server,hostState,hostUsage,powerDraw,failedVms\n") } suspend fun onVmStateChanged(server: Server) {} @@ -49,7 +49,7 @@ class Sc20Monitor( requestedBurst: Long, grantedBurst: Long, overcommissionedBurst: Long, - interferredBurst: Long, + interferedBurst: Long, numberOfDeployedImages: Int, hostServer: Server, duration: Long = 5 * 60 * 1000L @@ -61,7 +61,7 @@ class Sc20Monitor( val usage = driver.usage.first() val powerDraw = driver.powerDraw.first() - outputFile.write("$time,$duration,$requestedBurst,$grantedBurst,$overcommissionedBurst,$interferredBurst,$numberOfDeployedImages,${hostServer.uid},${hostServer.state},$usage,$powerDraw") + outputFile.write("$time,$duration,$requestedBurst,$grantedBurst,$overcommissionedBurst,$interferedBurst,$numberOfDeployedImages,${hostServer.uid},${hostServer.state},$usage,$powerDraw") outputFile.newLine() } 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 bd06520a..18cfed5f 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 @@ -201,7 +201,7 @@ fun main(args: Array) { event.requestedBurst, event.grantedBurst, event.overcommissionedBurst, - event.interferredBurst, + event.interferedBurst, event.numberOfDeployedImages, event.hostServer ) -- cgit v1.2.3 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') 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 From ead9f9680792878f51be58d931c6337edeefae4b Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 10 Apr 2020 21:53:33 +0200 Subject: bug: Do not report error states as final state --- .../main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt | 7 +++---- .../kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) (limited to 'opendc/opendc-experiments-sc20') diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt index a5b13f84..c0d6de03 100644 --- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt +++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt @@ -23,10 +23,9 @@ class Sc20Monitor( suspend fun onVmStateChanged(server: Server) {} suspend fun serverStateChanged(driver: VirtDriver, server: Server) { - if ((server.state == ServerState.SHUTOFF || server.state == ServerState.ERROR) && - lastServerStates.containsKey(server) - ) { - val duration = simulationContext.clock.millis() - lastServerStates[server]!!.second + val lastServerState = lastServerStates[server] + if (server.state == ServerState.SHUTOFF && lastServerState != null) { + val duration = simulationContext.clock.millis() - lastServerState.second onSliceFinish( simulationContext.clock.millis(), 0, 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 8eeffa6b..ede18b40 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 @@ -28,7 +28,6 @@ import com.atlarge.odcsim.Domain import com.atlarge.odcsim.SimulationEngineProvider import com.atlarge.odcsim.simulationContext import com.atlarge.opendc.compute.core.Flavor -import com.atlarge.opendc.compute.core.Server import com.atlarge.opendc.compute.core.ServerEvent import com.atlarge.opendc.compute.core.ServerState import com.atlarge.opendc.compute.metal.NODE_CLUSTER -- cgit v1.2.3