Cold Start Influencing Factors in Function as a Service

Programming language, package size, and memory/CPU settings significantly affect FaaS cold-start latency

Featured image

Venue: UCC
Slides: Google Slides

Topic: Systematically benchmark cold-start latency in FaaS (AWS Lambda, Azure Functions) across programming language, deployment package size, and memory/CPU settings to identify which factors matter and by how much.


Summary

Cold start in FaaS occurs when no idle container is available for a function invocation — a new container must be started, adding latency. This paper benchmarks cold starts across multiple influencing factors on AWS Lambda and Azure Functions, using Java (compiled) and JavaScript (interpreted) as representative languages. Key findings: programming language runtime, package size, and memory/CPU allocation all significantly affect cold-start overhead.


Background

FaaS and cold starts

Why benchmarking is needed


Hypotheses Tested

  1. Programming language: compiled languages (Java) will have more cold-start overhead than interpreted (JavaScript) due to environment startup (e.g., JVM initialization).
  2. Deployment package size: larger packages increase cold-start latency.
  3. Memory/CPU setting: more resources → faster container load → lower cold-start overhead.
  4. (Not fully tested) Number of dependencies, concurrency level, prior executions, container shutdown time.

Experimental Setup

Platforms and languages

Algorithm

Measurement

  1. Client records local start timestamp.
  2. Sends REST call to platform’s API gateway.
  3. Platform starts/reuses container, executes function, logs platform-side timestamps.
  4. Client records end timestamp.
  5. Cold vs. warm start overhead = difference between cold and warm execution times.

Evaluation


Key Terms


Meeting Notes

(to be filled)