summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-base/src/main
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2024-04-17 18:17:17 +0200
committerGitHub <noreply@github.com>2024-04-17 18:17:17 +0200
commitd652fa2fa76556edd81d3b8087a0c943d462ec49 (patch)
tree072c2d033704452e44ebf44ea76943bc0f0f89e5 /opendc-experiments/opendc-experiments-base/src/main
parentfff89d25bd3c7b874e68261d21695c473c30ed7d (diff)
Added support for carbon traces (#218)
* Started with the carbon trace implementation * Moved the carbon trace system to the proper folders
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src/main')
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/Scenario.kt1
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioFactories.kt1
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioSpecs.kt2
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt4
4 files changed, 8 insertions, 0 deletions
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/Scenario.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/Scenario.kt
index 192bba1e..f0e5717a 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/Scenario.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/Scenario.kt
@@ -30,6 +30,7 @@ public data class Scenario(
val workload: WorkloadSpec,
val allocationPolicy: AllocationPolicySpec,
val failureModel: FailureModel?,
+ val carbonTracePath: String? = null,
val exportModel: ExportSpec = ExportSpec(),
val outputFolder: String = "output",
val name: String = "",
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioFactories.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioFactories.kt
index d806e95e..93b2a2b5 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioFactories.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioFactories.kt
@@ -48,6 +48,7 @@ public fun getScenario(scenarioSpec: ScenarioSpec): Scenario {
workload,
allocationPolicy,
failureModel,
+ scenarioSpec.carbonTracePath,
exportModel,
scenarioSpec.outputFolder,
scenarioSpec.name,
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioSpecs.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioSpecs.kt
index 20c8a6e0..f39b16dd 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioSpecs.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/models/scenario/ScenarioSpecs.kt
@@ -47,6 +47,7 @@ public data class ScenarioSpec(
val workload: WorkloadSpec,
val allocationPolicy: AllocationPolicySpec,
val failureModel: FailureModelSpec = FailureModelSpec(),
+ val carbonTracePath: String? = null,
val exportModel: ExportSpec = ExportSpec(),
val outputFolder: String = "output",
val initialSeed: Int = 0,
@@ -55,6 +56,7 @@ public data class ScenarioSpec(
) {
init {
require(runs > 0) { "The number of runs should always be positive" }
+ require(carbonTracePath == null || File(carbonTracePath).exists()) { "The provided carbon trace cannot be found: $carbonTracePath" }
// generate name if not provided
if (name == "") {
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 04998309..59c11f34 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
@@ -24,6 +24,7 @@ package org.opendc.experiments.base.runner
import me.tongfei.progressbar.ProgressBarBuilder
import me.tongfei.progressbar.ProgressBarStyle
+import org.opendc.compute.carbon.getCarbonTrace
import org.opendc.compute.service.ComputeService
import org.opendc.compute.service.scheduler.ComputeSchedulerEnum
import org.opendc.compute.service.scheduler.createComputeScheduler
@@ -118,6 +119,8 @@ public fun runScenario(
setupHosts(serviceDomain, scenario.topology, optimize = true),
)
+ val carbonTrace = getCarbonTrace(scenario.carbonTracePath)
+
val partition = scenario.name + "/seed=$seed"
val workloadLoader = ComputeWorkloadLoader(File(scenario.workload.pathToFile))
@@ -135,6 +138,7 @@ public fun runScenario(
),
Duration.ofSeconds(scenario.exportModel.exportInterval),
startTime,
+ carbonTrace,
),
)