diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-04-01 21:14:34 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-04-08 20:19:49 +0200 |
| commit | 831ba3d882a46dad2abe6ac281b736b729dc7080 (patch) | |
| tree | 21020cd0451664006a5bf291a5c27dd74f6129d0 /simulator/opendc-experiments/opendc-experiments-serverless20 | |
| parent | 69a881dca5ace9ba4ed294f72fd9a192fab83b3f (diff) | |
serverless: Model cold start delays
Diffstat (limited to 'simulator/opendc-experiments/opendc-experiments-serverless20')
| -rw-r--r-- | simulator/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/simulator/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt b/simulator/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt index e4dc6753..757617f8 100644 --- a/simulator/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt +++ b/simulator/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt @@ -37,6 +37,8 @@ import org.opendc.harness.dsl.anyOf import org.opendc.serverless.service.ServerlessService import org.opendc.serverless.service.router.RandomRoutingPolicy import org.opendc.serverless.simulator.SimFunctionDeployer +import org.opendc.serverless.simulator.delay.ColdStartModel +import org.opendc.serverless.simulator.delay.StochasticDelayInjector import org.opendc.simulator.compute.SimMachineModel import org.opendc.simulator.compute.model.MemoryUnit import org.opendc.simulator.compute.model.ProcessingNode @@ -44,6 +46,7 @@ import org.opendc.simulator.compute.model.ProcessingUnit import org.opendc.simulator.utils.DelayControllerClockAdapter import org.opendc.telemetry.sdk.toOtelClock import java.io.File +import java.util.* import kotlin.math.max /** @@ -71,6 +74,11 @@ public class ServerlessExperiment : Experiment("Serverless") { */ private val routingPolicy by anyOf(RandomRoutingPolicy()) + /** + * The cold start models to test. + */ + private val coldStartModel by anyOf(ColdStartModel.LAMBDA, ColdStartModel.AZURE, ColdStartModel.GOOGLE) + @OptIn(ExperimentalCoroutinesApi::class) override fun doRun(repeat: Int): Unit = runBlockingTest { val clock = DelayControllerClockAdapter(this) @@ -81,7 +89,8 @@ public class ServerlessExperiment : Experiment("Serverless") { val trace = ServerlessTraceReader().parse(tracePath) val traceById = trace.associateBy { it.id } - val deployer = SimFunctionDeployer(clock, this, createMachineModel()) { FunctionTraceWorkload(traceById.getValue(it.name)) } + val delayInjector = StochasticDelayInjector(coldStartModel, Random()) + val deployer = SimFunctionDeployer(clock, this, createMachineModel(), delayInjector) { FunctionTraceWorkload(traceById.getValue(it.name)) } val service = ServerlessService(coroutineContext, clock, meterProvider.get("opendc-serverless"), deployer, routingPolicy) val client = service.newClient() |
