summaryrefslogtreecommitdiff
path: root/opendc/opendc-experiments-sc20/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-03-24 22:58:27 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-03-25 10:51:28 +0100
commit27a8f2312bf9207314abb201ed74f021b818f8af (patch)
tree67069b18aab9a19902fb927a702acb91257641cd /opendc/opendc-experiments-sc20/src/main
parent225a9dd042870b1320681104aa022120611cc92b (diff)
bug: Fix race condition in VM provisioner
This change fixes a race condition in the VM provisioner where VMs were scheduled based on stale information.
Diffstat (limited to 'opendc/opendc-experiments-sc20/src/main')
-rw-r--r--opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt10
1 files changed, 8 insertions, 2 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 0fafc118..66b20bff 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
@@ -40,6 +40,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import com.xenomachina.argparser.ArgParser
import com.xenomachina.argparser.default
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
@@ -86,6 +87,7 @@ class ExperimentParameters(parser: ArgParser) {
/**
* Main entry point of the experiment.
*/
+@OptIn(ExperimentalCoroutinesApi::class)
fun main(args: Array<String>) {
ArgParser(args).parseInto(::ExperimentParameters).run {
val monitor = Sc20Monitor(outputFile)
@@ -111,6 +113,10 @@ fun main(args: Array<String>) {
println(simulationContext.clock.instant())
val bareMetalProvisioner = environment.platforms[0].zones[0].services[ProvisioningService.Key]
+
+ // Wait for the bare metal nodes to be spawned
+ delay(10)
+
val scheduler = SimpleVirtProvisioningService(
AvailableMemoryAllocationPolicy(),
simulationContext,
@@ -140,9 +146,9 @@ fun main(args: Array<String>) {
iatScale = -1.39, iatShape = 1.03,
sizeScale = 1.88, sizeShape = 1.25
)
- for (node in bareMetalProvisioner.nodes()) {
+ // for (node in bareMetalProvisioner.nodes()) {
// faultInjector.enqueue(node.metadata["driver"] as FailureDomain)
- }
+ // }
}
val reader = Sc20TraceReader(File(traceDirectory), performanceInterferenceModel, getSelectedVmList())