Hot Functions for IronFunctions Improves Performance by 8x

Seif Lotfy
Iron.io Technical Blog
2 min readDec 29, 2016

IronFunctions is a server-less application platform. Unlike AWS Lambda it’s open-source, can run on any cloud — public, on-premise, or hybrid, and language agnostic, while maintaining AWS Lambda compatibility.

The initial release of IronFunction got some amazing feedback and the past few weeks were spent addressing some of outstanding issues. In this post I will be highlighting the biggest feature with the upcoming release:

TL;DR:

Hot Functions improve IronFunctions throughput by 8x (depending on duration of task). By re-using containers or what we call Hot Functions each call is reduced by 300 ms.

Long Version:

For every call, IronFunctions would spin up a new container to handle the job. That lead to 300ms overhead per job,due container startup time.

Hot Functions reside in long-lived containers addressing the same type of task. Hot Functions take incoming workload and feed into their standard input and read from their standard output. In addition, permanent network
connections are reused. However the structure of hot functions looks different now.

We ran our benchmark on a 1 GB Digital Ocean instance and used honeycomb.io to plot the results.

Simple function printing “Hello World” called for 10s (MAX CONCURRENCY = 1).

Hot Functions have 162x higher throughput.

Complex function pulling image and md5 checksumming called for 10s (MAX CONCURRENCY = 1).

Hot Functions have 1,39x higher throughput.

By combining Hot Functions with concurrency we saw even better results: Complex function pulling image and md5 checksumming called for 10s (MAX CONCURRENCY = 7).

Hot Functions have 7,84x higher throughput.

There’s more to this release as well. IronFunctions brings Single Flight pattern for DB calls as well as stability and optimization fixes across the board. IronFunctions is maturing quickly, stay tuned for upcoming posts….

--

--