Faasm: Lightweight Isolation for Efficient Stateful Serverless Computing

Metadane

  • Autorzy: Simon Shillaker, Peter Pietzuch (Imperial College London)
  • Rok: 2020
  • Źródło: 2020 USENIX Annual Technical Conference (ATC 2020), pp. 923–937
  • DOI/Link: https://www.usenix.org/conference/atc20/presentation/shillaker
  • Status: reference
  • Cytowania: ~200+
  • Tagi: #reference #serverless #webassembly #isolation #stateful

Streszczenie

Faasm proponuje alternatywny model izolacji dla serverless oparty na WebAssembly zamiast kontenerów lub MicroVMs. Kluczowa innowacja: dwa regiony pamięci — local (prywatna per-funkcja, zapisywalna) i global (współdzielona, read-only dla niezmiennych danych jak modele ML). Umożliwia stateful serverless bez drogich transferów danych między wywołaniami.

Faasm jest uruchamiany jako jeden wielowątkowy proces hostujący wiele funkcji Wasm w oddzielnych izolowanych kontekstach. Eliminuje overhead OS-level isolation.

Kluczowe Wnioski

  • Cold start: 10× szybszy niż Docker (Faasm ≈ kilka ms vs Docker ≈ 50-100ms)
  • Model pamięci: local (prywatna per-thread) + global (CoW shared memory)
  • Throughput: znacząco wyższy niż kontenery dla short-running functions
  • Stateful serverless: funkcje mogą dzielić dane przez pamięć globalną bez serialization overhead
  • Bezpieczeństwo: WASM linear memory zapewnia izolację bez OS-level namespaces

Metodologia

Implementacja w C++ bazująca na WAVM (WebAssembly Virtual Machine). Ewaluacja na AWS EC2 (c4.8xlarge, 36 vCPU). Porównanie z OpenWhisk + Docker i Knative + Docker. Workloady: matrix multiplication, tf-lite, sparse SGD, word count.

Główne Koncepcje

  • Faaslet: lekki wątek wykonujący jedną funkcję Wasm w izolowanym środowisku
  • Local memory: prywatna pamięć per-Faaslet (stack + heap), niedostępna z zewnątrz
  • Global memory: współdzielona pamięć CoW dla stateful funkcji
  • Proto-Faaslet: pre-initialized Faaslet do eliminacji cold start overhead

Wyniki

Faasm osiąga 10× szybszy cold start niż Docker przy porównywalnym (lub lepszym) throughputcie. Dla workloadów stateful (ML inference) eliminuje overhead deserializacji modelu przy każdym wywołaniu.

Luka dla JE

Gap badawczy: Faasm mierzy czas i throughput, ale nie energię. Pytania otwarte:

  • Czy izolacja WASM (Faasm model) jest energetycznie tańsza niż kontener przy tym samym workloadzie JS?
  • Jak Faasm (WASM isolation) porównuje się z V8 Isolates (JS engine isolation) energetycznie?
  • Czy różnica w cold start (10× Docker) przekłada się na proporcjonalną różnicę energetyczną?

To jest bezpośrednia podstawa dla JE-14 (koszt izolacji) i JE-15 (EcoRuntime design).

Powiązane Tematy

  • Firecracker (Agache 2020) — MicroVM baseline do porównania
  • Sledge (Boucher 2020) — WASM runtime dla edge (pokrewna architektura)
  • V8 Isolates — JS-natywna izolacja (Cloudflare Workers)
  • Not So Fast (Jangda 2019) — overhead WASM vs native

Notatki

Publikacja dodana jako referencja. Brak PDF — dostępna przez USENIX Open Access.

Elementów w folderze: 0.