summaryrefslogtreecommitdiff
path: root/opendc-experiments
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-11-09 21:24:08 +0000
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-11-13 17:42:01 +0000
commit00ac59e8e9d6a41c2eac55aa25420dce8fa9c6e0 (patch)
tree2d921b5573dcaa9b2bbbd1d7ab2e35f711493deb /opendc-experiments
parent7a4b2c45a9926de59754b1d7219159656eea6e6d (diff)
refactor(sim/core): Re-implement SimulationScheduler as Dispatcher
This change updates the `SimulationScheduler` class to implement the `Dispatcher` interface from the OpenDC Common module, so that OpenDC modules only need to depend on the common module for dispatching future task (possibly in simulation).
Diffstat (limited to 'opendc-experiments')
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt4
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt4
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt16
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt4
-rw-r--r--opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/TensorFlowTest.kt14
-rw-r--r--opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/core/SimTFDeviceTest.kt6
6 files changed, 24 insertions, 24 deletions
diff --git a/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt b/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt
index 3e3d758d..08bb2c32 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt
@@ -75,7 +75,7 @@ class CapelinBenchmarks {
fun benchmarkCapelin() = runSimulation {
val serviceDomain = "compute.opendc.org"
- Provisioner(coroutineContext, clock, seed = 0).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed = 0).use { provisioner ->
val computeScheduler = FilterScheduler(
filters = listOf(ComputeFilter(), VCpuFilter(16.0), RamFilter(1.0)),
weighers = listOf(CoreRamWeigher(multiplier = 1.0))
@@ -87,7 +87,7 @@ class CapelinBenchmarks {
)
val service = provisioner.registry.resolve(serviceDomain, ComputeService::class.java)!!
- service.replay(clock, vms, 0L, interference = true)
+ service.replay(timeSource, vms, 0L, interference = true)
}
}
}
diff --git a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt
index 2c3573dc..1f9f3439 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt
@@ -64,7 +64,7 @@ public class CapelinRunner(
val serviceDomain = "compute.opendc.org"
val topology = clusterTopology(File(envPath, "${scenario.topology.name}.txt"))
- Provisioner(coroutineContext, clock, seed).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed).use { provisioner ->
provisioner.runSteps(
setupComputeService(serviceDomain, { createComputeScheduler(scenario.allocationPolicy, Random(it.seeder.nextLong())) }),
setupHosts(serviceDomain, topology, optimize = true)
@@ -96,7 +96,7 @@ public class CapelinRunner(
null
}
- service.replay(clock, vms, seed, failureModel = failureModel, interference = operationalPhenomena.hasInterference)
+ service.replay(timeSource, vms, seed, failureModel = failureModel, interference = operationalPhenomena.hasInterference)
}
}
}
diff --git a/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt b/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
index 77b0d09f..aa7d552e 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
@@ -94,7 +94,7 @@ class CapelinIntegrationTest {
val topology = createTopology()
val monitor = monitor
- Provisioner(coroutineContext, clock, seed).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed).use { provisioner ->
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
@@ -102,7 +102,7 @@ class CapelinIntegrationTest {
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
- service.replay(clock, workload, seed)
+ service.replay(timeSource, workload, seed)
}
println(
@@ -138,7 +138,7 @@ class CapelinIntegrationTest {
val topology = createTopology("single")
val monitor = monitor
- Provisioner(coroutineContext, clock, seed).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed).use { provisioner ->
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
@@ -146,7 +146,7 @@ class CapelinIntegrationTest {
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
- service.replay(clock, workload, seed)
+ service.replay(timeSource, workload, seed)
}
println(
@@ -177,7 +177,7 @@ class CapelinIntegrationTest {
val workload = createTestWorkload(1.0, seed)
val topology = createTopology("single")
- Provisioner(coroutineContext, clock, seed).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed).use { provisioner ->
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
@@ -185,7 +185,7 @@ class CapelinIntegrationTest {
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
- service.replay(clock, workload, seed, interference = true)
+ service.replay(timeSource, workload, seed, interference = true)
}
println(
@@ -216,7 +216,7 @@ class CapelinIntegrationTest {
val workload = createTestWorkload(0.25, seed)
val monitor = monitor
- Provisioner(coroutineContext, clock, seed).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed).use { provisioner ->
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
@@ -224,7 +224,7 @@ class CapelinIntegrationTest {
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
- service.replay(clock, workload, seed, failureModel = grid5000(Duration.ofDays(7)))
+ service.replay(timeSource, workload, seed, failureModel = grid5000(Duration.ofDays(7)))
}
// Note that these values have been verified beforehand
diff --git a/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt b/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt
index 1ad9c57f..ff825260 100644
--- a/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt
@@ -49,7 +49,7 @@ class FaaSExperiment {
fun testSmoke() = runSimulation {
val faasService = "faas.opendc.org"
- Provisioner(coroutineContext, clock, seed = 0L).use { provisioner ->
+ Provisioner(coroutineContext, timeSource, seed = 0L).use { provisioner ->
provisioner.runStep(
setupFaaSService(
faasService,
@@ -63,7 +63,7 @@ class FaaSExperiment {
val service = provisioner.registry.resolve(faasService, FaaSService::class.java)!!
val trace = ServerlessTraceReader().parse(File("src/test/resources/trace"))
- service.replay(clock, trace)
+ service.replay(timeSource, trace)
val stats = service.getSchedulerStats()
diff --git a/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/TensorFlowTest.kt b/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/TensorFlowTest.kt
index 32f72686..d01a4a3c 100644
--- a/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/TensorFlowTest.kt
+++ b/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/TensorFlowTest.kt
@@ -49,7 +49,7 @@ class TensorFlowTest {
def.uid,
def.meta["gpu"] as Boolean,
coroutineContext,
- clock,
+ timeSource,
def.model.cpus[0],
def.model.memory[0],
CpuPowerModels.linear(250.0, 60.0)
@@ -67,7 +67,7 @@ class TensorFlowTest {
val stats = device.getDeviceStats()
assertAll(
- { assertEquals(3309694252, clock.millis()) },
+ { assertEquals(3309694252, timeSource.millis()) },
{ assertEquals(8.27423563E8, stats.energyUsage) }
)
}
@@ -84,7 +84,7 @@ class TensorFlowTest {
def.uid,
def.meta["gpu"] as Boolean,
coroutineContext,
- clock,
+ timeSource,
def.model.cpus[0],
def.model.memory[0],
CpuPowerModels.linear(250.0, 60.0)
@@ -102,7 +102,7 @@ class TensorFlowTest {
val stats = device.getDeviceStats()
assertAll(
- { assertEquals(176230328513, clock.millis()) },
+ { assertEquals(176230328513, timeSource.millis()) },
{ assertEquals(4.405758212825E10, stats.energyUsage) }
)
}
@@ -119,7 +119,7 @@ class TensorFlowTest {
def.uid,
def.meta["gpu"] as Boolean,
coroutineContext,
- clock,
+ timeSource,
def.model.cpus[0],
def.model.memory[0],
CpuPowerModels.linear(250.0, 60.0)
@@ -129,7 +129,7 @@ class TensorFlowTest {
UUID.randomUUID(),
def.meta["gpu"] as Boolean,
coroutineContext,
- clock,
+ timeSource,
def.model.cpus[0],
def.model.memory[0],
CpuPowerModels.linear(250.0, 60.0)
@@ -150,7 +150,7 @@ class TensorFlowTest {
val statsA = deviceA.getDeviceStats()
val statsB = deviceB.getDeviceStats()
assertAll(
- { assertEquals(1704994000, clock.millis()) },
+ { assertEquals(1704994000, timeSource.millis()) },
{ assertEquals(4.262485E8, statsA.energyUsage) },
{ assertEquals(4.262485E8, statsB.energyUsage) }
)
diff --git a/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/core/SimTFDeviceTest.kt b/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/core/SimTFDeviceTest.kt
index 910cbcc9..9f15eab6 100644
--- a/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/core/SimTFDeviceTest.kt
+++ b/opendc-experiments/opendc-experiments-tf20/src/test/kotlin/org/opendc/experiments/tf20/core/SimTFDeviceTest.kt
@@ -48,7 +48,7 @@ internal class SimTFDeviceTest {
UUID.randomUUID(),
isGpu = true,
coroutineContext,
- clock,
+ timeSource,
pu,
memory,
CpuPowerModels.linear(250.0, 100.0)
@@ -56,7 +56,7 @@ internal class SimTFDeviceTest {
// Load 1 GiB into GPU memory
device.load(1000)
- assertEquals(1140, clock.millis())
+ assertEquals(1140, timeSource.millis())
coroutineScope {
launch { device.compute(1e6) }
@@ -68,7 +68,7 @@ internal class SimTFDeviceTest {
val stats = device.getDeviceStats()
assertAll(
- { assertEquals(3681, clock.millis()) },
+ { assertEquals(3681, timeSource.millis()) },
{ assertEquals(749.25, stats.energyUsage) }
)
}