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.