Faasm

Faasm is a high-performance stateful serverless runtime.

Faasm provides multi-tenant isolation, but also lets functions share regions of memory.These shared memory regions give low-latency concurrent access to data, and are synchronisedglobally to support large-scale parallelism.

Faasm defines a custom host interface which lets functions performserverless-specific tasks (e.g. invoking other functions and managing state), as well as interactingwith the underlying host (e.g. using the filesystem and networking). The Faasm host interface achievesthe same goal as , but in a serverless-specific context.

A preprint of our paper on Faasm can be found here.

Quick start

Then run the Faasm CLI, from which you can build, deploy and invoke functions:

  1. # Start the CLI
  2. ./bin/cli.sh
  3.  
  4. # Upload the demo "hello" function
  5. inv upload demo hello
  6. # Invoke the function
  7. inv invoke demo hello

Note that the first time you run the local set-up it will generate some machine code specificto your host. This is stored in the machine-code directory in the root of the project and reusedon subsequent runs.

  • Usage and set-up - using the CLI and other features.
  • - writing and deploying Faasm functions in C/C++.
  • Python functions - isolating and executing functions in Python.
  • - links and resources for writing Faasm Rust functions.
  • Distributed state - sharing state between functions.
  • - deploying Faasm as part of a full serverless platform.
  • Bare metal/ VM deployment - deploying Faasm on bare metal or VMs as a stand-alone system.
  • - performing inference in Faasm functions with TF Lite.
  • API - invoking and managing functions and state through Faasm's HTTP API.
  • and OpenMP - executing existing MPI and OpenMP applications in Faasm.
  • - developing and modifying Faasm.
  • Faasm.js - executing Faasm functions in the browser and on the server.
  • - snapshot-and-restore to reduce cold starts.