summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-capelin/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-10-15 14:43:43 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-10-25 17:58:53 +0200
commite76bebe9e81c3813422da6d67fbab7d9f471a317 (patch)
tree059a9f2cb2c5e465ac7faacf9fe74d38c96af228 /opendc-experiments/opendc-experiments-capelin/src/main
parenta1be58f1013697223a339a6a49302e1e42a6662d (diff)
perf(compute): Redesign VM interference algorithm
This change redesigns the virtual machine interference algorithm to have a fixed memory usage per `VmInterferenceModel` instance. Previously, for every interference domain, a copy of the model would be created, leading to OutOfMemory errors when running multiple experiments at the same time.
Diffstat (limited to 'opendc-experiments/opendc-experiments-capelin/src/main')
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt8
1 files changed, 3 insertions, 5 deletions
diff --git a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt
index 4e855f82..53c9de11 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt
@@ -30,14 +30,13 @@ import org.opendc.compute.workload.createComputeScheduler
import org.opendc.compute.workload.export.parquet.ParquetComputeMetricExporter
import org.opendc.compute.workload.grid5000
import org.opendc.compute.workload.topology.apply
-import org.opendc.compute.workload.util.PerformanceInterferenceReader
+import org.opendc.compute.workload.util.VmInterferenceModelReader
import org.opendc.experiments.capelin.model.OperationalPhenomena
import org.opendc.experiments.capelin.model.Topology
import org.opendc.experiments.capelin.model.Workload
import org.opendc.experiments.capelin.topology.clusterTopology
import org.opendc.harness.dsl.Experiment
import org.opendc.harness.dsl.anyOf
-import org.opendc.simulator.compute.kernel.interference.VmInterferenceModel
import org.opendc.simulator.core.runBlockingSimulation
import org.opendc.telemetry.compute.collectServiceMetrics
import org.opendc.telemetry.sdk.metrics.export.CoroutineMetricReader
@@ -99,9 +98,8 @@ abstract class Portfolio(name: String) : Experiment(name) {
val seeder = Random(repeat.toLong())
val performanceInterferenceModel = if (operationalPhenomena.hasInterference)
- PerformanceInterferenceReader()
+ VmInterferenceModelReader()
.read(File(config.getString("interference-model")))
- .let { VmInterferenceModel(it, Random(seeder.nextLong())) }
else
null
@@ -116,7 +114,7 @@ abstract class Portfolio(name: String) : Experiment(name) {
clock,
computeScheduler,
failureModel,
- performanceInterferenceModel
+ performanceInterferenceModel?.withSeed(repeat.toLong())
)
val exporter = ParquetComputeMetricExporter(