DEV Community

Vadym Kazulkin for AWS Heroes

Posted on

Lambda function with GraalVM Native Image - Part 5 Measuring cold and warm starts with GraalVM 23

Introduction

In the part 2 of this article series we explained how to develop and deploy Lambda function based on GraalVM Native Image with Custom Runtime using GraalVM version 21 and in the part 3 we measured the Lambda performance (cold and warm starts) with this approach. Since then, GraalVM 23 was released, and many dependencies used in our sample application got their version updates. So, it was time for me to update the application to the newest versions available end of December 2024 and to re-measure Lambda performance.

Sample Application

General setup and the idea of the sample application described in the part 2 remained the same, but I published the updated version of the sample application here. It not only uses GraalVM 23.0.1 as its base but also includes all updated AWS dependencies like bom from software.amazon.awssdk but also other AWS dependencies like aws-lambda-java-core, aws-lambda-java-events, aws-lambda-java-serialization to the newest versions. The same was true also for other dependencies like lambda-runtime-graalvm (from com.formkiq) and even native-image-maven-plugin, see the pom.xml The source code and IaC basically remained the same, but few other logging classes needed to be initialized at the build time and had to be added to native-image.properties. It's probably more convenient to include the whole package org.slf4j into Native Image Build Configuration than adding so many individual classes to the --initialize-at-build-time and --trace-class-initialization properties.

Measuring cold and warm starts of Lambda function with Custom Runtime containing GraalVM 23 Native Image

The approach to execute the Lambda performance measurements described in the part 3 remained the same. Here are the results :

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

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
618.18 628.78 638.28 667.64 705.37 705.61 4.03 4.62 5.25 10.33 38.76 103.27

Conclusion

In this article, we measured performance (cold and warms start times) of the pure Lambda function having 1024 MB of memory using Custom Runtime containing GraalVM 23 Native Image.

Comparing to the Lambda performance measurements from the part 3 done with GraalVM 21 Native Image and older versions the dependencies we observe that the cold start time with GraalVM 23 increased between 50 and 100ms depending on the percentile. This might have something to deal with the bigger native image artifact size as the updated versions of the dependencies were mostly bigger in size than the previous ones. The bigger the Lambda artifact size is, the higher the cold start generally will be. On the other side the warm start/execution time slightly decreased for nearly all percentiles which suggests that some improvements have been introduced within GraalVM 23 and the Native Image.

If you have read my article(s) and liked its content, please support me by following me on my GitHub account and giving my repos a star.

Postmark Image

20% off for developers shipping features, not fixing email

Build your product without worrying about email infrastructure. Our reliable delivery, detailed analytics, and developer-friendly API let you focus on shipping features that matter.

Start free

Top comments (0)

Postmark Image

20% off for developers who'd rather build features than debug email

Stop wrestling with email delivery and get back to the code you love. Postmark handles the complexities of email infrastructure so you can ship your product faster.

Start free

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay