diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2024-11-03 20:00:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-03 20:00:26 +0100 |
| commit | f3e578a2a43c99997dbf35e09debfde255a4ae22 (patch) | |
| tree | 312dde871072cff0468d2a5a11cd671d85063220 /opendc-experiments/opendc-experiments-base/src | |
| parent | 6fa203b9187b474816e7719baed8c97eadd689cb (diff) | |
Rewritten the Carbon model (#260)
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src')
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, ) |
