diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-05-05 12:23:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-05 12:23:25 +0200 |
| commit | e1d892bcbaa7e8361c150f684ca6a0dc5e036a87 (patch) | |
| tree | 99742afbc3cd762ec527f5a6c7e31ee245ee0385 /opendc-experiments/opendc-experiments-energy21/src | |
| parent | e021d46ab1601d0c3a00724358164483608f6297 (diff) | |
| parent | 7fdfe48439f33abec8aa63fc4ab36fd687d59a43 (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-energy21/src')
2 files changed, 13 insertions, 12 deletions
diff --git a/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt b/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt index bb6dcd3a..7460a1e7 100644 --- a/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt +++ b/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt @@ -22,11 +22,11 @@ package org.opendc.experiments.energy21 +import com.typesafe.config.ConfigFactory import io.opentelemetry.api.metrics.MeterProvider import io.opentelemetry.sdk.metrics.SdkMeterProvider import io.opentelemetry.sdk.metrics.export.MetricProducer import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.coroutineScope import mu.KotlinLogging @@ -66,14 +66,9 @@ public class EnergyExperiment : Experiment("Energy Modeling 2021") { private val logger = KotlinLogging.logger {} /** - * The path to where the traces are located. + * The configuration to use. */ - 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.energy21") /** * The traces to test. @@ -85,9 +80,7 @@ public class EnergyExperiment : Experiment("Energy Modeling 2021") { */ private val powerModel by anyOf(PowerModelType.LINEAR, PowerModelType.CUBIC, PowerModelType.INTERPOLATION) - @OptIn(ExperimentalCoroutinesApi::class) override fun doRun(repeat: Int): Unit = runBlockingSimulation { - val chan = Channel<Unit>(Channel.CONFLATED) val allocationPolicy = FilterScheduler( filters = listOf(ComputeFilter(), ComputeCapabilitiesFilter()), @@ -99,8 +92,8 @@ public class EnergyExperiment : Experiment("Energy Modeling 2021") { .setClock(clock.toOtelClock()) .build() - val monitor = ParquetExperimentMonitor(outputPath, "power_model=$powerModel/run_id=$repeat", 4096) - val trace = Sc20StreamingParquetTraceReader(File(tracePath, trace), random = Random(1).asKotlinRandom()) + val monitor = ParquetExperimentMonitor(File(config.getString("output-path")), "power_model=$powerModel/run_id=$repeat", 4096) + val trace = Sc20StreamingParquetTraceReader(File(config.getString("trace-path"), trace), random = Random(1).asKotlinRandom()) withComputeService(clock, meterProvider, allocationPolicy) { scheduler -> withMonitor(monitor, clock, meterProvider as MetricProducer, scheduler) { diff --git a/opendc-experiments/opendc-experiments-energy21/src/main/resources/application.conf b/opendc-experiments/opendc-experiments-energy21/src/main/resources/application.conf new file mode 100644 index 00000000..3e011862 --- /dev/null +++ b/opendc-experiments/opendc-experiments-energy21/src/main/resources/application.conf @@ -0,0 +1,8 @@ +# Default configuration for the energy experiments +opendc.experiments.energy21 { + # Path to the directory containing the input traces + trace-path = input/traces + + # Path to the output directory to write the results to + output-path = output +} |
