summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-capelin/src/jmh
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-09-30 20:33:37 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-10-03 20:47:11 +0200
commitab0ae4779a674dd07d85ded4a812332d93888bc1 (patch)
tree890ee7c52dc47e672ccfcc6060e071e9e867fdbf /opendc-experiments/opendc-experiments-capelin/src/jmh
parent4010d0cfb49bb8a0ffdb2c3ac26fc0c8417a0bbf (diff)
refactor(exp/capelin): Use experiment base for Capelin experiments
This change updates the Capelin experiments to use the new `opendc-experiments-base` module for setting up the experimental environment and simulate the workloads.
Diffstat (limited to 'opendc-experiments/opendc-experiments-capelin/src/jmh')
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt35
1 files changed, 18 insertions, 17 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 c09ce96a..378c3833 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
@@ -22,6 +22,7 @@
package org.opendc.experiments.capelin
+import org.opendc.compute.service.ComputeService
import org.opendc.compute.service.scheduler.FilterScheduler
import org.opendc.compute.service.scheduler.filters.ComputeFilter
import org.opendc.compute.service.scheduler.filters.RamFilter
@@ -29,8 +30,10 @@ import org.opendc.compute.service.scheduler.filters.VCpuFilter
import org.opendc.compute.service.scheduler.weights.CoreRamWeigher
import org.opendc.compute.workload.*
import org.opendc.compute.workload.topology.Topology
-import org.opendc.compute.workload.topology.apply
import org.opendc.experiments.capelin.topology.clusterTopology
+import org.opendc.experiments.compute.setupComputeService
+import org.opendc.experiments.compute.setupHosts
+import org.opendc.experiments.provisioner.Provisioner
import org.opendc.simulator.core.runBlockingSimulation
import org.openjdk.jmh.annotations.*
import java.io.File
@@ -54,29 +57,27 @@ class CapelinBenchmarks {
@Setup
fun setUp() {
val loader = ComputeWorkloadLoader(File("src/test/resources/trace"))
- val source = trace("bitbrains-small")
vms = trace("bitbrains-small").resolve(loader, Random(1L))
topology = checkNotNull(object {}.javaClass.getResourceAsStream("/topology.txt")).use { clusterTopology(it) }
}
@Benchmark
fun benchmarkCapelin() = runBlockingSimulation {
- val computeScheduler = FilterScheduler(
- filters = listOf(ComputeFilter(), VCpuFilter(16.0), RamFilter(1.0)),
- weighers = listOf(CoreRamWeigher(multiplier = 1.0))
- )
- val runner = ComputeServiceHelper(
- coroutineContext,
- clock,
- computeScheduler,
- seed = 0L
- )
+ val serviceDomain = "compute.opendc.org"
- try {
- runner.apply(topology, isOptimized)
- runner.run(vms, interference = true)
- } finally {
- runner.close()
+ Provisioner(coroutineContext, clock, seed = 0).use { provisioner ->
+ val computeScheduler = FilterScheduler(
+ filters = listOf(ComputeFilter(), VCpuFilter(16.0), RamFilter(1.0)),
+ weighers = listOf(CoreRamWeigher(multiplier = 1.0))
+ )
+
+ provisioner.runSteps(
+ setupComputeService(serviceDomain, { computeScheduler }),
+ setupHosts(serviceDomain, topology.resolve(), optimize = isOptimized)
+ )
+
+ val service = provisioner.registry.resolve(serviceDomain, ComputeService::class.java)!!
+ service.replay(clock, vms, 0L, interference = true)
}
}
}