summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-capelin/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-05 12:23:25 +0200
committerGitHub <noreply@github.com>2021-05-05 12:23:25 +0200
commite1d892bcbaa7e8361c150f684ca6a0dc5e036a87 (patch)
tree99742afbc3cd762ec527f5a6c7e31ee245ee0385 /opendc-experiments/opendc-experiments-capelin/src/main
parente021d46ab1601d0c3a00724358164483608f6297 (diff)
parent7fdfe48439f33abec8aa63fc4ab36fd687d59a43 (diff)
harness: Improve OpenDC Experiment Harness (v1)
This pull request contains several improvements to the OpenDC Experiment Harness, which aims to improve user-experience of users when re-running experiments in the repository. * Split the harness into separate modules * Add support for adding additional classpath entries when running experiments via the console * Initial support for configuration of experiments using HOCON.
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.kt21
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/main/resources/application.conf6
2 files changed, 12 insertions, 15 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 fc6f79d3..b70eefb2 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
@@ -22,6 +22,7 @@
package org.opendc.experiments.capelin
+import com.typesafe.config.ConfigFactory
import io.opentelemetry.sdk.metrics.export.MetricProducer
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancel
@@ -60,19 +61,9 @@ public abstract class Portfolio(name: String) : Experiment(name) {
private val logger = KotlinLogging.logger {}
/**
- * The path to where the environments are located.
+ * The configuration to use.
*/
- private val environmentPath by anyOf(File("input/environments/"))
-
- /**
- * The path to where the traces are located.
- */
- private val tracePath by anyOf(File("input/traces/"))
-
- /**
- * The path to where the output results should be written.
- */
- private val outputPath by anyOf(File("output/"))
+ private val config = ConfigFactory.load().getConfig("opendc.experiments.capelin")
/**
* The path to the original VM placements file.
@@ -115,7 +106,7 @@ public abstract class Portfolio(name: String) : Experiment(name) {
@OptIn(ExperimentalCoroutinesApi::class)
override fun doRun(repeat: Int): Unit = runBlockingSimulation {
val seeder = Random(repeat.toLong())
- val environment = Sc20ClusterEnvironmentReader(File(environmentPath, "${topology.name}.txt"))
+ val environment = Sc20ClusterEnvironmentReader(File(config.getString("env-path"), "${topology.name}.txt"))
val chan = Channel<Unit>(Channel.CONFLATED)
val allocationPolicy = createComputeScheduler(seeder)
@@ -131,7 +122,7 @@ public abstract class Portfolio(name: String) : Experiment(name) {
val rawReaders = workloadNames.map { workloadName ->
traceReaders.computeIfAbsent(workloadName) {
logger.info { "Loading trace $workloadName" }
- Sc20RawParquetTraceReader(File(tracePath, workloadName))
+ Sc20RawParquetTraceReader(File(config.getString("trace-path"), workloadName))
}
}
@@ -141,7 +132,7 @@ public abstract class Portfolio(name: String) : Experiment(name) {
val trace = Sc20ParquetTraceReader(rawReaders, performanceInterferenceModel, workload, seeder.nextInt())
val monitor = ParquetExperimentMonitor(
- outputPath,
+ File(config.getString("output-path")),
"portfolio_id=$name/scenario_id=$id/run_id=$repeat",
4096
)
diff --git a/opendc-experiments/opendc-experiments-capelin/src/main/resources/application.conf b/opendc-experiments/opendc-experiments-capelin/src/main/resources/application.conf
new file mode 100644
index 00000000..f0e0f2d3
--- /dev/null
+++ b/opendc-experiments/opendc-experiments-capelin/src/main/resources/application.conf
@@ -0,0 +1,6 @@
+# Default configuration for the Capelin experiments
+opendc.experiments.capelin {
+ env-path = input/environments/
+ trace-path = input/traces/
+ output-path = output
+}