Logo

dev-resources.site

for different kinds of informations.

Lambda function with GraalVM Native Image - Part 4 Measuring cold and warm starts using different Lambda memory settings

Published at
11/4/2024
Categories
java
aws
serverless
graalvm
Author
vkazulkin
Categories
4 categories in total
java
open
aws
open
serverless
open
graalvm
open
Author
9 person written this
vkazulkin
open
Lambda function with GraalVM Native Image - Part 4 Measuring cold and warm starts using different Lambda memory settings

Introduction

In the part 2 of our article series we explored how to develop and deploy pure Lambda function (without using any frameworks like Spring Boot 3) with Custom Runtime containing GraalVM Native Image with GraalVM 21 runtime and in the part 3 we measured the performance (cold and warm start times) of the Lambda function with 1024 MB of memory using this approach.

In this article we'll measure cold and warms starts of the Lambda with different memory settings between 256 and 1536 MBs to explore the tradeoff between cost and performance.

Measuring cold and warm starts of Lambda function with Custom Runtime containing GraalVM Native Image with different memory settings

We'll re-use exact the same experiment described in the part 3 of this article series but with different memory settings between 256 and 1536 MBs.

Here are results of the experiment:

Cold (c) and warm (m) start time in ms:

Memory setting c p50 c p75 c p90 c p99 c p99.9 c max w p50 w p75 w p90 w p99 w p99.9 w max
256 MB 822.74 833.50 845.25 923.88 952.96 953.84 4.04 4.59 5.47 18.55 137.10 471.76
512 MB 620.04 621.40 657.70 705.37 727.57 727.97 4.16 4.65 5.46 14.32 64.54 229.29
768 MB 561.63 574.11 589.82 628.15 633.83 634.23 4.23 4.73 5.55 13.01 42.31 203.22
1024 MB 525.77 532.12 542.32 632.56 635.73 636.11 4.16 4.69 5.46 12.30 37.25 211.83
1280 MB 515.37 524.20 539.08 577.57 624.39 624.52 4.23 4.77 5.64 12.80 34.67 126.97
1536 MB 504.16 516.40 528.93 548.86 628.15 628.31 4.26 4.73 5.55 12.70 44.03 105.46

Conclusion

In this article measured cold and warms starts of the pure Lambda function having the memory setting between 256 and 1536 MB using Custom Runtime containing GraalVM Native Image with GraalVM 21 runtime.

We observe that warm start times are very close for each other also for setting lower memory like 256 or 512 MBs and difference is mainly visible for the high percentiles (>= p90). The cold start times are quite high for 256 and 512 MBs and starting from 768 MBs very decrease only a bit by giving Lambda more memory without any noticeable difference for memory greater than 1024 MB. Depending on your performance requirements you can give Lambda less memory than 1024 MBs as we initial gave in the sample application and have a very good price performance trade off with 768 MB or even a bit less memory.

At the time of publishing also newer versions became available (like GraalVM 23 runtime), so you case make the version changes and re-compile GraalVM Native image following the instructions from the part 2 of the series and re-measure the performance.

graalvm Article's
30 articles in total
Favicon
Java Can Be Serverless Too: Using GraalVM for Fast Cold Starts
Favicon
Kotlin Native and GraalVM - The Story So Far
Favicon
Native Image Quick Reference — GraalVM for JDK 23 - graalvm
Favicon
GraalVM: The Swiss Army Knife of the JVM World
Favicon
Wednesday Links - Edition 2024-10-23
Favicon
Lambda function with GraalVM Native Image - Part 4 Measuring cold and warm starts using different Lambda memory settings
Favicon
Graalvm to run wasm from spring boot
Favicon
Lambda function with GraalVM Native Image - Part 3 Measuring cold and warm starts
Favicon
Wednesday Links - Edition 2024-09-25
Favicon
Lambda function with GraalVM Native Image - Part 2 How to develop and deploy Lambda function with Custom Runtime
Favicon
Lambda function with GraalVM Native Image - Part 1 Introduction to GraalVM and its native image capabilities
Favicon
Enhancing Performance with Static Analysis, Image Initialization and Heap Snapshotting
Favicon
Turbocharge Java Microservices with Quarkus and GraalVM Native Image
Favicon
Memory Management in GraalVM Native Image
Favicon
How to build spring boot native binary
Favicon
Exploring Graal: Next-Generation JIT Compilation for Java
Favicon
Registering Reflection in Quarkus Extensions
Favicon
Even more Opentelemetry!
Favicon
O quão difícil é um Hello World em Java?
Favicon
Mi experiencia con GraalVM y Spring Boot
Favicon
Ktor build with graalvm
Favicon
Wednesday Links - Edition 2023-06-28
Favicon
Wednesday Links - Edition 2023-06-21
Favicon
Graalvanizando un script de Groovy
Favicon
Wednesday Links - Edition 2023-02-22
Favicon
Wednesday Links - Edition 2023-01-11
Favicon
GraalVM: running C/C++ application safely in the Java world
Favicon
GraalVM Native Image for Mobile Development
Favicon
Wednesday Links - Edition 2022-11-02
Favicon
Wednesday Links - Edition 2022-10-19

Featured ones: