summaryrefslogtreecommitdiff
path: root/simulator/opendc-experiments
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-01-03 20:34:29 +0100
committerGitHub <noreply@github.com>2021-01-03 20:34:29 +0100
commit74a4bff83bfb6366cc193d1fc9c4a07e49649649 (patch)
treee5ce165378b1d70fa4a9b348acbde707e1e1aaea /simulator/opendc-experiments
parent1e1a0fe43d46e9bd578978f85fe3c6b4b1b39577 (diff)
parentc3a0a1711360c866a38b273dcf681f3aab9ae0ae (diff)
Merge pull request #68 from atlarge-research/feat/event-tracer
Add experimental event tracer
Diffstat (limited to 'simulator/opendc-experiments')
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/TestExperiment.kt3
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt6
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Run.kt6
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt9
4 files changed, 19 insertions, 5 deletions
diff --git a/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/TestExperiment.kt b/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/TestExperiment.kt
index 3786eebf..1221c7d3 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/TestExperiment.kt
+++ b/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/TestExperiment.kt
@@ -31,6 +31,7 @@ import org.opendc.compute.core.metal.service.ProvisioningService
import org.opendc.format.environment.sc18.Sc18EnvironmentReader
import org.opendc.format.trace.gwf.GwfTraceReader
import org.opendc.simulator.utils.DelayControllerClockAdapter
+import org.opendc.trace.core.EventTracer
import org.opendc.workflows.service.StageWorkflowService
import org.opendc.workflows.service.WorkflowEvent
import org.opendc.workflows.service.WorkflowSchedulerMode
@@ -59,6 +60,7 @@ public fun main(args: Array<String>) {
val token = Channel<Boolean>()
val testScope = TestCoroutineScope()
val clock = DelayControllerClockAdapter(testScope)
+ val tracer = EventTracer(clock)
val schedulerAsync = testScope.async {
val environment = Sc18EnvironmentReader(object {}.javaClass.getResourceAsStream("/env/setup-test.json"))
@@ -67,6 +69,7 @@ public fun main(args: Array<String>) {
StageWorkflowService(
this,
clock,
+ tracer,
environment.platforms[0].zones[0].services[ProvisioningService],
mode = WorkflowSchedulerMode.Batch(100),
jobAdmissionPolicy = NullJobAdmissionPolicy,
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt b/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt
index 09f44199..f939738d 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt
+++ b/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt
@@ -52,6 +52,7 @@ import org.opendc.simulator.compute.interference.PerformanceInterferenceModel
import org.opendc.simulator.failures.CorrelatedFaultInjector
import org.opendc.simulator.failures.FailureDomain
import org.opendc.simulator.failures.FaultInjector
+import org.opendc.trace.core.EventTracer
import java.io.File
import java.time.Clock
import kotlin.math.ln
@@ -140,7 +141,8 @@ public suspend fun createProvisioner(
coroutineScope: CoroutineScope,
clock: Clock,
environmentReader: EnvironmentReader,
- allocationPolicy: AllocationPolicy
+ allocationPolicy: AllocationPolicy,
+ eventTracer: EventTracer
): Pair<ProvisioningService, SimVirtProvisioningService> {
val environment = environmentReader.use { it.construct(coroutineScope, clock) }
val bareMetalProvisioner = environment.platforms[0].zones[0].services[ProvisioningService]
@@ -148,7 +150,7 @@ public suspend fun createProvisioner(
// Wait for the bare metal nodes to be spawned
delay(10)
- val scheduler = SimVirtProvisioningService(coroutineScope, clock, bareMetalProvisioner, allocationPolicy)
+ val scheduler = SimVirtProvisioningService(coroutineScope, clock, bareMetalProvisioner, allocationPolicy, eventTracer)
// Wait for the hypervisors to be spawned
delay(10)
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Run.kt b/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Run.kt
index 660fc882..8d8d608d 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Run.kt
+++ b/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Run.kt
@@ -37,6 +37,7 @@ import org.opendc.experiments.sc20.trace.Sc20ParquetTraceReader
import org.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader
import org.opendc.format.environment.sc20.Sc20ClusterEnvironmentReader
import org.opendc.simulator.utils.DelayControllerClockAdapter
+import org.opendc.trace.core.EventTracer
import java.io.File
import kotlin.random.Random
@@ -102,12 +103,15 @@ public data class Run(override val parent: Scenario, val id: Int, val seed: Int)
parent.parent.parent.bufferSize
)
+ val tracer = EventTracer(clock)
+
testScope.launch {
val (bareMetalProvisioner, scheduler) = createProvisioner(
this,
clock,
environment,
- allocationPolicy
+ allocationPolicy,
+ tracer
)
val failureDomain = if (parent.operationalPhenomena.failureFrequency > 0) {
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt b/simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt
index 9c44edfc..72a2484a 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt
+++ b/simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt
@@ -48,6 +48,7 @@ import org.opendc.format.environment.EnvironmentReader
import org.opendc.format.environment.sc20.Sc20ClusterEnvironmentReader
import org.opendc.format.trace.TraceReader
import org.opendc.simulator.utils.DelayControllerClockAdapter
+import org.opendc.trace.core.EventTracer
import java.io.File
import java.time.Clock
@@ -97,13 +98,15 @@ class Sc20IntegrationTest {
val traceReader = createTestTraceReader()
val environmentReader = createTestEnvironmentReader()
lateinit var scheduler: SimVirtProvisioningService
+ val tracer = EventTracer(clock)
testScope.launch {
val res = createProvisioner(
this,
clock,
environmentReader,
- allocationPolicy
+ allocationPolicy,
+ tracer
)
val bareMetalProvisioner = res.first
scheduler = res.second
@@ -160,13 +163,15 @@ class Sc20IntegrationTest {
val traceReader = createTestTraceReader(0.5, seed)
val environmentReader = createTestEnvironmentReader("single")
lateinit var scheduler: SimVirtProvisioningService
+ val tracer = EventTracer(clock)
testScope.launch {
val res = createProvisioner(
this,
clock,
environmentReader,
- allocationPolicy
+ allocationPolicy,
+ tracer
)
scheduler = res.second