diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2024-09-10 12:15:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-10 12:15:05 +0200 |
| commit | ad8051faa1f0a6e7f78384e9e0607e847848c033 (patch) | |
| tree | dd12f1f942e2eeb270d2a6f971e27f56308699b7 /opendc-experiments/opendc-experiments-base | |
| parent | 3f05c61faeb94a2f1c920d87a6ca8bde34d551e0 (diff) | |
rewritten the checkpointing model (#250)
* Updated the checkpointing system to use SimTrace. The checkpoint model can now also scale, which means the interval between checkpoints can increase or decrease over time.
* spotless kotlin
* Fixed tests
* spotless apply
Diffstat (limited to 'opendc-experiments/opendc-experiments-base')
3 files changed, 14 insertions, 6 deletions
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt index 8c1fa803..f5829f6d 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt @@ -121,8 +121,9 @@ public suspend fun ComputeService.replay( delay(max(0, (start - now - simulationOffset))) } - val checkpointTime = checkpointModelSpec?.checkpointTime ?: 0L - val checkpointWait = checkpointModelSpec?.checkpointWait ?: 0L + val checkpointInterval = checkpointModelSpec?.checkpointInterval ?: 0L + val checkpointDuration = checkpointModelSpec?.checkpointDuration ?: 0L + val checkpointIntervalScaling = checkpointModelSpec?.checkpointIntervalScaling ?: 1.0 // val workload = SimRuntimeWorkload( // entry.duration, @@ -131,7 +132,7 @@ public suspend fun ComputeService.replay( // checkpointWait // ) - val workload = entry.trace.createWorkload(start, checkpointTime, checkpointWait) + val workload = entry.trace.createWorkload(start, checkpointInterval, checkpointDuration, checkpointIntervalScaling) val meta = mutableMapOf<String, Any>("workload" to workload) launch { 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 5462b406..074fe49c 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 @@ -99,7 +99,13 @@ public fun runScenario( addExportModel(provisioner, serviceDomain, scenario, seed, startTime, carbonTrace, scenario.id) val service = provisioner.registry.resolve(serviceDomain, ComputeService::class.java)!! - service.replay(timeSource, tasks, failureModelSpec = scenario.failureModelSpec, seed = seed) + service.replay( + timeSource, + tasks, + failureModelSpec = scenario.failureModelSpec, + checkpointModelSpec = scenario.checkpointModelSpec, + seed = seed, + ) } } diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/CheckpointModelSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/CheckpointModelSpec.kt index 6147d25d..ad0fba1d 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/CheckpointModelSpec.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/scenario/specs/CheckpointModelSpec.kt @@ -26,6 +26,7 @@ import kotlinx.serialization.Serializable @Serializable public data class CheckpointModelSpec( - val checkpointWait: Long = 60 * 60 * 1000, - val checkpointTime: Long = 5 * 60 * 1000, + val checkpointInterval: Long = 60 * 60 * 1000, + val checkpointDuration: Long = 5 * 60 * 1000, + val checkpointIntervalScaling: Double = 1.0, ) |
