From 1387e68a48a00758ae2634de6eb81944d565aec4 Mon Sep 17 00:00:00 2001 From: Soufiane Jounaid Date: Sun, 9 May 2021 15:45:32 +0200 Subject: serverless: Add support for custom termination policies This change adds support for custom termination policies for function instances. This allows the user to build different strategies for downscaling function instances after they become idle. --- .../kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'opendc-experiments/opendc-experiments-serverless20/src') diff --git a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt index 3ff01e39..516bcc3e 100644 --- a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt +++ b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt @@ -34,6 +34,7 @@ import org.opendc.experiments.serverless.trace.ServerlessTraceReader import org.opendc.harness.dsl.Experiment import org.opendc.harness.dsl.anyOf import org.opendc.serverless.service.ServerlessService +import org.opendc.serverless.service.autoscaler.FunctionTerminationPolicyFixed import org.opendc.serverless.service.router.RandomRoutingPolicy import org.opendc.serverless.simulator.SimFunctionDeployer import org.opendc.serverless.simulator.delay.ColdStartModel @@ -83,7 +84,8 @@ public class ServerlessExperiment : Experiment("Serverless") { val traceById = trace.associateBy { it.id } 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 service = + ServerlessService(coroutineContext, clock, meterProvider.get("opendc-serverless"), deployer, routingPolicy, FunctionTerminationPolicyFixed(coroutineContext, clock, timeout = 10 * 60 * 1000)) val client = service.newClient() coroutineScope { -- cgit v1.2.3