summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-base/src
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2024-11-03 20:00:26 +0100
committerGitHub <noreply@github.com>2024-11-03 20:00:26 +0100
commitf3e578a2a43c99997dbf35e09debfde255a4ae22 (patch)
tree312dde871072cff0468d2a5a11cd671d85063220 /opendc-experiments/opendc-experiments-base/src
parent6fa203b9187b474816e7719baed8c97eadd689cb (diff)
Rewritten the Carbon model (#260)
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src')
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt36
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/ExperimentFactories.kt1
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/Scenario.kt1
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ExperimentSpec.kt6
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ScenarioSpec.kt1
5 files changed, 18 insertions, 27 deletions
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 d803fd7e..d525e066 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,8 +24,6 @@ package org.opendc.experiments.base.runner
import me.tongfei.progressbar.ProgressBarBuilder
import me.tongfei.progressbar.ProgressBarStyle
-import org.opendc.compute.carbon.CarbonTrace
-import org.opendc.compute.carbon.getCarbonTrace
import org.opendc.compute.simulator.provisioner.Provisioner
import org.opendc.compute.simulator.provisioner.registerComputeMonitor
import org.opendc.compute.simulator.provisioner.setupComputeService
@@ -82,16 +80,6 @@ public fun runScenario(
val serviceDomain = "compute.opendc.org"
Provisioner(dispatcher, seed).use { provisioner ->
- val topology = clusterTopology(scenario.topologySpec.pathToFile, Random(seed))
- provisioner.runSteps(
- setupComputeService(
- serviceDomain,
- { createComputeScheduler(scenario.allocationPolicySpec.policyType, Random(it.seeder.nextLong())) },
- maxNumFailures = scenario.maxNumFailures,
- ),
- setupHosts(serviceDomain, topology),
- )
-
val checkpointInterval = scenario.checkpointModelSpec?.checkpointInterval ?: 0L
val checkpointDuration = scenario.checkpointModelSpec?.checkpointDuration ?: 0L
val checkpointIntervalScaling = scenario.checkpointModelSpec?.checkpointIntervalScaling ?: 1.0
@@ -105,15 +93,27 @@ public fun runScenario(
)
val tasks = getWorkloadType(scenario.workloadSpec.type).resolve(workloadLoader, Random(seed))
- val carbonTrace = getCarbonTrace(scenario.carbonTracePath)
- val startTime = Duration.ofMillis(tasks.minOf { it.submissionTime }.toEpochMilli())
- addExportModel(provisioner, serviceDomain, scenario, seed, startTime, carbonTrace, scenario.id)
+ val startTimeLong = tasks.minOf { it.submissionTime }.toEpochMilli()
+ val startTime = Duration.ofMillis(startTimeLong)
- val monitor = provisioner.getMonitor()
+ val topology = clusterTopology(scenario.topologySpec.pathToFile, Random(seed))
+ provisioner.runSteps(
+ setupComputeService(
+ serviceDomain,
+ { createComputeScheduler(scenario.allocationPolicySpec.policyType, Random(it.seeder.nextLong())) },
+ maxNumFailures = scenario.maxNumFailures,
+ ),
+ setupHosts(serviceDomain, topology, startTimeLong),
+ )
+
+ addExportModel(provisioner, serviceDomain, scenario, seed, startTime, scenario.id)
val service = provisioner.registry.resolve(serviceDomain, ComputeService::class.java)!!
- service.setMetricReader(monitor)
service.setTasksExpected(tasks.size)
+
+ val monitor = provisioner.getMonitor()
+ service.setMetricReader(monitor)
+
service.replay(
timeSource,
tasks,
@@ -139,7 +139,6 @@ public fun addExportModel(
scenario: Scenario,
seed: Long,
startTime: Duration,
- carbonTrace: CarbonTrace,
index: Int,
) {
provisioner.runStep(
@@ -153,7 +152,6 @@ public fun addExportModel(
),
Duration.ofSeconds(scenario.exportModelSpec.exportInterval),
startTime,
- carbonTrace,
),
)
}
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/ExperimentFactories.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/ExperimentFactories.kt
index ca0578a2..524d4219 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/ExperimentFactories.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/ExperimentFactories.kt
@@ -82,7 +82,6 @@ public fun getExperiment(experimentSpec: ExperimentSpec): List<Scenario> {
exportModelSpec = scenarioSpec.exportModel,
failureModelSpec = scenarioSpec.failureModel,
checkpointModelSpec = scenarioSpec.checkpointModel,
- carbonTracePath = scenarioSpec.carbonTracePath,
maxNumFailures = scenarioSpec.maxNumFailures,
)
trackScenario(scenarioSpec, outputFolder)
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/Scenario.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/Scenario.kt
index f649e4f8..e62669e4 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/Scenario.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/Scenario.kt
@@ -57,6 +57,5 @@ public data class Scenario(
val exportModelSpec: ExportModelSpec = ExportModelSpec(),
val failureModelSpec: FailureModelSpec?,
val checkpointModelSpec: CheckpointModelSpec?,
- val carbonTracePath: String? = null,
val maxNumFailures: Int = 10,
)
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ExperimentSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ExperimentSpec.kt
index b957ea18..7805ed2b 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ExperimentSpec.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ExperimentSpec.kt
@@ -56,7 +56,6 @@ public data class ExperimentSpec(
val exportModels: Set<ExportModelSpec> = setOf(ExportModelSpec()),
val failureModels: Set<FailureModelSpec?> = setOf(null),
val checkpointModels: Set<CheckpointModelSpec?> = setOf(null),
- val carbonTracePaths: Set<String?> = setOf(null),
val computeExportConfig: ComputeExportConfig = ComputeExportConfig.ALL_COLUMNS,
val maxNumFailures: Set<Int> = setOf(10),
) {
@@ -75,8 +74,7 @@ public data class ExperimentSpec(
public fun getCartesian(): Sequence<ScenarioSpec> {
return sequence {
- val carbonTracePathDiv = maxNumFailures.size
- val checkpointDiv = carbonTracePathDiv * carbonTracePaths.size
+ val checkpointDiv = maxNumFailures.size
val failureDiv = checkpointDiv * checkpointModels.size
val exportDiv = failureDiv * failureModels.size
val allocationDiv = exportDiv * exportModels.size
@@ -90,7 +88,6 @@ public data class ExperimentSpec(
val exportModelList = exportModels.toList()
val failureModelList = failureModels.toList()
val checkpointModelList = checkpointModels.toList()
- val carbonTracePathList = carbonTracePaths.toList()
val maxNumFailuresList = maxNumFailures.toList()
for (i in 0 until numScenarios) {
@@ -106,7 +103,6 @@ public data class ExperimentSpec(
exportModelList[(i / exportDiv) % exportModelList.size],
failureModelList[(i / failureDiv) % failureModelList.size],
checkpointModelList[(i / checkpointDiv) % checkpointModelList.size],
- carbonTracePathList[(i / carbonTracePathDiv) % carbonTracePathList.size],
maxNumFailuresList[i % maxNumFailuresList.size],
),
)
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ScenarioSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ScenarioSpec.kt
index 8f2146f1..b4f04c1c 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ScenarioSpec.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/ScenarioSpec.kt
@@ -37,6 +37,5 @@ public data class ScenarioSpec(
val exportModel: ExportModelSpec = ExportModelSpec(),
val failureModel: FailureModelSpec? = null,
val checkpointModel: CheckpointModelSpec? = null,
- val carbonTracePath: String? = null,
val maxNumFailures: Int = 10,
)