From ee770ffe22e1eb2d7f28c010d6252222d2f4bc1a Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Tue, 18 Feb 2025 11:58:56 +0100 Subject: Added the option to select which files to export. (#307) * Added the option to select which files to export. * Updated documentation --- .../opendc/experiments/base/experiment/ExperimentFactories.kt | 1 - .../kotlin/org/opendc/experiments/base/experiment/Scenario.kt | 2 -- .../experiments/base/experiment/specs/ExperimentSpec.kt | 1 - .../experiments/base/experiment/specs/ExportModelSpec.kt | 11 +++++++++++ .../opendc/experiments/base/experiment/specs/ScenarioSpec.kt | 2 -- .../org/opendc/experiments/base/runner/ScenarioRunner.kt | 4 +++- 6 files changed, 14 insertions(+), 7 deletions(-) (limited to 'opendc-experiments/opendc-experiments-base') diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/ExperimentFactories.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/ExperimentFactories.kt index 5d158ea3..ecb0c69f 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/ExperimentFactories.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/ExperimentFactories.kt @@ -75,7 +75,6 @@ public fun getExperiment(experimentSpec: ExperimentSpec): List { outputFolder = outputFolder, runs = experimentSpec.runs, initialSeed = experimentSpec.initialSeed, - computeExportConfig = scenarioSpec.computeExportConfig, topologySpec = scenarioSpec.topology, workloadSpec = scenarioSpec.workload, allocationPolicySpec = scenarioSpec.allocationPolicy, diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/Scenario.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/Scenario.kt index a99bd061..64ff51ad 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/Scenario.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/Scenario.kt @@ -22,7 +22,6 @@ package org.opendc.experiments.base.experiment -import org.opendc.compute.simulator.telemetry.parquet.ComputeExportConfig import org.opendc.experiments.base.experiment.specs.AllocationPolicySpec import org.opendc.experiments.base.experiment.specs.CheckpointModelSpec import org.opendc.experiments.base.experiment.specs.ExportModelSpec @@ -50,7 +49,6 @@ public data class Scenario( val outputFolder: String = "output", val runs: Int = 1, val initialSeed: Int = 0, - val computeExportConfig: ComputeExportConfig, val topologySpec: ScenarioTopologySpec, val workloadSpec: WorkloadSpec, val allocationPolicySpec: AllocationPolicySpec, diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExperimentSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExperimentSpec.kt index 6d8c8ebf..91d0b986 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExperimentSpec.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExperimentSpec.kt @@ -96,7 +96,6 @@ public data class ExperimentSpec( id, name, outputFolder, - computeExportConfig = computeExportConfig, topologyList[(i / topologyDiv) % topologyList.size], workloadList[(i / workloadDiv) % workloadList.size], allocationPolicyList[(i / allocationDiv) % allocationPolicyList.size], diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExportModelSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExportModelSpec.kt index 62f1ea4b..a345fcb9 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExportModelSpec.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ExportModelSpec.kt @@ -23,6 +23,8 @@ package org.opendc.experiments.base.experiment.specs import kotlinx.serialization.Serializable +import org.opendc.compute.simulator.telemetry.OutputFiles +import org.opendc.compute.simulator.telemetry.parquet.ComputeExportConfig /** * specification describing how the results should be exported @@ -32,8 +34,17 @@ import kotlinx.serialization.Serializable @Serializable public data class ExportModelSpec( val exportInterval: Long = 5 * 60, + val computeExportConfig: ComputeExportConfig = ComputeExportConfig.ALL_COLUMNS, + val filesToExport: List = OutputFiles.entries.toList(), + var filesToExportDict: MutableMap = OutputFiles.entries.associateWith { false }.toMutableMap(), ) { init { require(exportInterval > 0) { "The Export interval has to be higher than 0" } + + // Create a dictionary with each output file to false. + // Set each file in [filesToExport] to true in the dictionary. + for (file in filesToExport) { + filesToExportDict[file] = true + } } } diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ScenarioSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ScenarioSpec.kt index b41eb37b..eb0d71ed 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ScenarioSpec.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/ScenarioSpec.kt @@ -23,14 +23,12 @@ package org.opendc.experiments.base.experiment.specs import kotlinx.serialization.Serializable -import org.opendc.compute.simulator.telemetry.parquet.ComputeExportConfig @Serializable public data class ScenarioSpec( var id: Int = -1, var name: String = "", val outputFolder: String = "output", - val computeExportConfig: ComputeExportConfig, val topology: ScenarioTopologySpec, val workload: WorkloadSpec, val allocationPolicy: AllocationPolicySpec = AllocationPolicySpec(), diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt index 7cbce23a..683bd5b6 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt @@ -147,10 +147,12 @@ public fun addExportModel( File("${scenario.outputFolder}/raw-output/$index"), "seed=$seed", bufferSize = 4096, - computeExportConfig = scenario.computeExportConfig, + scenario.exportModelSpec.filesToExportDict, + computeExportConfig = scenario.exportModelSpec.computeExportConfig, ), Duration.ofSeconds(scenario.exportModelSpec.exportInterval), startTime, + scenario.exportModelSpec.filesToExportDict, ), ) } -- cgit v1.2.3