PRODSouveräne europäische BaaS-PlattformÖffnen Sie das Dashboard →

Leistung · 11 Min. Lesezeit

WASM vs. Container-Kaltstarts: Was Laufzeiten sagen

Affane Daylami · Fondateur · 24. Mai 2026

Zurück zum Blog

Die Instanziierung eines WebAssembly-Moduls erfolgt je nach veröffentlichten Quellen in Mikrosekunden oder Millisekunden. Ein typischer Docker-Container startet normalerweise nach mehreren hundert Millisekunden, manchmal sogar nach mehreren Sekunden. Eine Firecracker-MikroVM liegt zwischen den beiden: weniger als 125 ms beim Start, so das AWS-Forschungspapier, in dem sie im Jahr 2020 vorgestellt wurde. Diese drei Zahlenfamilien haben weder die gleiche Methodik noch das gleiche Datum noch das gleiche Messprotokoll: Sie können nicht in einer einzigen Klassifizierung gestapelt werden.

Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.

Dieser Artikel fasst zusammen, was identifizierbare Drittquellen über den Kaltstart von WebAssembly im Vergleich zu Containern veröffentlichen: ein auf der USENIX NSDI präsentiertes Papier, offizielle Dokumentation von Fastly, WasmEdge und Wasmer sowie ein akademisches Forschungsprojekt zur serverlosen Isolation. Es sind keine Aurabase-Figuren enthalten. Unsere Edge-Funktionen laufen gut auf Wasmtime, was im Repository überprüft wurde, aber bisher wurde kein für unsere Infrastruktur spezifischer Kaltstart-Benchmark veröffentlicht, ein Unterschied, der unten näher erläutert wird. Informationen zur allgemeinen Benchmarking-Methode, die an anderer Stelle in diesem Blog angewendet wird, finden Sie in unserem -Säulenartikel zur Benchmarking-Methodik.

Das Wesentliche

  • Das AWS Firecracker-Papier (Agache et al., USENIX NSDI 2020) dokumentiert einen microVM-Start unter 125 ms und einen Speicher-Overhead unter 5 MiB: die am genauesten quantifizierte Referenz in diesem Artikel.
  • Fastly dokumentierte im Jahr 2019 WASM-Instanziierungszeiten unter einer Millisekunde für seine AOT-Lucet-Laufzeit (deren Optimierungen dann in Wasmtime zusammengeführt wurden). Hierbei handelt es sich um eine vom Anbieter veröffentlichte Zahl, die in den hier konsultierten Quellen nie unabhängig reproduziert wurde.
  • WasmEdge, ein Projekt unter CNCF-Governance, behauptet in seiner offiziellen Dokumentation einen deutlich geringeren Start- und Speicherbedarf als ein gleichwertiger Docker-Container, ohne die in diesem Artikel genannten unabhängigen Gegenmaßnahmen.
  • Wasmtime, Wasmer und WasmEdge kompilieren nicht auf die gleiche Weise (Cranelift, Singlepass/Cranelift/LLVM Ihrer Wahl, eigener AOT-Compiler): Diese Wahl des Backends erklärt einen Großteil der Lücke zwischen ihren veröffentlichten Zahlen, nicht nur die Laufzeit als solche.
  • Aurabase nutzt Wasmtime in der Produktion für seine Edge-Funktionen, verifiziert in aura-functions/Cargo.toml, veröffentlicht jedoch bisher keine Kaltstartzahlen, die auf der eigenen Infrastruktur gemessen wurden.
Methodenhinweis zu Quellen

Die nachfolgend genannten Drittquellen sind anhand ihres Titels, ihres Autors bzw. Herausgebers und ihres Veröffentlichungsdatums erkennbar. Diese Forschung basiert auf anerkannten und umfassend dokumentierten Veröffentlichungen im WebAssembly- und serverlosen Ökosystem und nicht auf einer Live-Abfrage ihrer Seiten zum Zeitpunkt des Schreibens. Wo eine genaue Zahl nicht mit ausreichender Sicherheit bestätigt werden konnte, wird in diesem Artikel eine Größenordnung anstelle eines genauen Werts verwendet und dies ausdrücklich angegeben.

#
Rahmen

Warum der WASM-Kaltstart in der serverlosen Debatte so viel Platz einnimmt

Kaltstart bezieht sich auf die zusätzliche Latenz, die eine Anforderung verursacht, wenn die Ausführungsumgebung initialisiert werden muss, bevor der Anwendungscode ausgeführt wird. Bei einer klassischen Edge- oder serverlosen Funktion ist dies alles andere als ein Randfall: Eine Plattform, die zwischen zwei Verkehrsspitzen auf null Instanzen herunterfährt oder ihre Ausführung auf Dutzende geografisch verteilter Edge-Knoten verteilt, zahlt diese Kosten dauerhaft und nicht nur bei der ersten Bereitstellung.

Das Thema hat im WASM-Ökosystem eine fast symbolische Bedeutung erlangt, seit im März 2019 ein Satz von Solomon Hykes, Mitbegründer von Docker, auf Twitter veröffentlicht wurde: „Wenn WASM+WASI 2008 existiert hätte, hätten wir Docker nicht erstellen müssen. So wichtig ist es. WebAssembly auf dem Server ist die Zukunft des Computings.“ Dies ist die Meinung eines anerkannten Praktikers, keine Messung. Es erklärt, warum das Thema fasziniert, nicht jedoch Ersetzen Sie eine bezogene Figur.

Aurabase bietet zwei Pfade für seine Edge-Funktionen: den Studio-Editor, der Code in der Deno-Laufzeit ausführt, wie in unserem Supabase-Migrationsleitfadendokumentiert, und die aura functions deployCLI, die einen separaten Pfad für in Rust geschriebene und auf Wasmtime in WASM kompilierte Funktionen anstrebt. Es ist dieser zweite Weg, den dieser Artikel beleuchtet, ohne ihm eine Kaltstartfigur zu nennen, die es noch nicht gibt.

#
Architektur

Warum ein WASM-Modul strukturell schneller startet als ein Container

Der Unterschied ergibt sich nicht aus einer absolut gesehen schnelleren Laufzeit, sondern aus einem kürzeren Stapel von Schritten zwischen der Abfrage und dem Anwendungscode.

Durch das Starten eines Containers wird der Host-Kernel mobilisiert: Erstellen eines neuen Prozesses, Einrichten der Kontrollgruppen und Namespaces, die ihn isolieren, Mounten der Ebenen des Images und anschließendes Starten der Anwendungslaufzeit im Inneren (Node.js und seine V8-Engine beispielsweise haben selbst Initialisierungskosten). Jeder Schritt fügt Systemaufrufe hinzu und, für ein Bild, das lokal nie gesehen wird, einen Netzwerk-Download, bevor er überhaupt beginnt.

Ein WebAssembly-Modul ist auf der Sprachebene der virtuellen Maschine isoliert, nicht auf der Betriebssystemebene. Ein Modul zu instanziieren bedeutet, seinen linearen Speicher zuzuweisen, seine Importe zu binden und dann zu seinem Einstiegspunkt zu springen, alles innerhalb des bereits gestarteten Prozesses der Host-Laufzeit. Keine neuen Prozesse, keine Image-Ebenen, keine Standard-Dateisystem-Mounts.

Durch die Wahl des Kompilierungsmodus wird eine zusätzliche Variable hinzugefügt. Wasmtime kompiliert beim Laden des Moduls über sein Cranelift-Backend zu JIT oder kann es vorab mit wasmtime compilevorkompilieren, wodurch eine .cwasm-Datei erstellt wird, die bereits in nativen Maschinencode umgewandelt wurde. Durch die frühe Kompilierung (AOT) wird der Kompilierungsschritt aus dem kritischen Pfad der Anfrage entfernt: Dies ist genau der Hebel, den eine kaltstartempfindliche Edge-Architektur aktivieren muss.

Cargo.tomltoml
# Tatsächlicher Auszug aus dem Aurabase-Repository
# WASM-Laufzeit
wasmtime = { version = "43", features = ["async", "cranelift"] }

Hierbei handelt es sich um eine Produktionsabhängigkeit, nicht um eine Entwicklungsabhängigkeit: Sie bestätigt, dass Wasmtime tatsächlich auf dem CLI-Pfad der Aurabase-Edge-Funktionen ausgeführt wird. Es werden jedoch keine Latenzzahlen bestätigt, was auch so bleibt, solange kein datierter Benchmark veröffentlicht wird.

#
Zahlen veröffentlicht

Container und MicroVM: die am genauesten quantifizierte Referenz

In diesem Bereich ist die stärkste Quelle ein Branchenforschungsbericht und kein Marketing-Blogbeitrag. Firecracker, die leichte microVM-Technologie, die von AWS entwickelt und insbesondere für Lambda und Fargate verwendet wird, wurde auf der USENIX NSDI 2020-Konferenz von Agache et al. vorgestellt. im Artikel „Firecracker: Lightweight Virtualization for Serverless Applications“.

Dieses Papier dokumentiert eine Startzeit von weniger als 125 ms und einen Speicher-Overhead von weniger als 5 MiB pro Mikro-VM, mit der Möglichkeit, Tausende von Mikro-VMs auf derselben physischen Maschine auszuführen. Hierbei handelt es sich um eine datierte Zahl (2020), die aus einer von Experten begutachteten wissenschaftlichen Veröffentlichung stammt und seitdem in der Literatur zur serverlosen Isolation häufig zitiert wird.

Ein Standard-Docker-Container ist im Allgemeinen länger: von einigen hundert Millisekunden bis zu mehreren Sekunden, abhängig von der Größe des Images, der Notwendigkeit, es herunterzuladen, und der Startzeit der eingebetteten Anwendungslaufzeit. Im Gegensatz zu Firecracker wird hier keine einzelne Zahl allgemein zitiert: Das Ergebnis hängt zu sehr vom getesteten Bild für einen einzelnen Wert ab, um einen Konsens zu erzielen.

#
Zahlen veröffentlicht

WebAssembly: Was Fastly, WasmEdge und akademische Forschungsdokumente dokumentieren

Drei Quellen, drei unterschiedliche Status: ein historischer Lieferant, ein Projekt unter der Leitung der Stiftung und eine Forschungsarbeit.

Fastly startete Compute@Edge im Jahr 2019 auf Lucet, seinem eigenen vorkompilierenden WASM-Compiler und seiner Runtime. Bei dieser Markteinführung dokumentierte das Unternehmen WASM-Instanziierungszeiten von unter einer Millisekunde, eine Größenordnung, die einen nachhaltigen Einfluss auf den WASM-Kaltstartdiskurs in der Branche hatte. Im Jahr 2021 stellte Fastly die autonome Entwicklung von Lucet ein und verlagerte seine Bemühungen auf Wasmtime, dessen Cranelift-Kompilierungs-Backend einen Teil dieser Optimierungen übernommen hat: Dies ist einer der Gründe, warum Wasmtime auch heute noch eine Referenz für diese Art von Ladung ist.

WasmEdge, eine WASM-Laufzeit unter CNCF-Governance (ursprünglich SSVM, unterstützt von Second State), behauptet in seiner offiziellen Dokumentation einen deutlich geringeren Start- und Speicherbedarf als ein gleichwertiger Docker-Container, mit einer expliziten Positionierung auf Edge- und IoT-Lasten. Hierbei handelt es sich um eine vom Projektherausgeber selbst veröffentlichte Zahl, die als solche zu lesen ist: eine Produktaussage, keine unabhängige Prüfung.

Auf der Seite der akademischen Forschung baut Faasm (Shillaker & Pietzuch, USENIX ATC 2020, auch in der Vorabveröffentlichung verfügbar) eine zustandsbehaftete serverlose Plattform auf, die auf WebAssembly-Isolation (über WAVM, nicht Wasmtime) basiert, gerade weil es die Instanziierung einer Funktion zu viel geringeren Kosten ermöglicht als die Isolation durch Container oder durch VM. In dem Artikel geht es nicht speziell um Wasmtime, aber er bietet eine unabhängige wissenschaftliche Bestätigung des Strukturarguments im vorherigen Abschnitt.

#
Laufzeiten

Wasmtime vs. Wasmer vs. WasmEdge: Warum die veröffentlichten Zahlen nicht übereinstimmen

Wenn man diese drei Laufzeiten nur namentlich vergleicht, verbirgt sich die eigentliche Variable: das gewählte Kompilierungs-Backend, das das Gleichgewicht zwischen Startgeschwindigkeit und Ausführungsleistung radikal verändert.

WasmtimeCranelift (standardmäßig JIT) + AOT über wasmtime-KompilierungBytecode Alliance · offene Governance, verwendet von Fastly, Shopify, Aurabase
WasmerSinglepass, Cranelift oder LLVM Ihrer WahlSinglepass minimiert die Kompilierungszeit; LLVM maximiert die Ausführungsleistung
WasmEdgeProjektspezifischer AOT-CompilerCNCF · positioniert Edge/IoT und Cloud-nativ

Singlepass, Wasmers schnellstes Kompilierungs-Backend, existiert genau deshalb, weil sein Team den Kaltstart als eine eindeutige Achse der Leistung bei der stationären Ausführung identifiziert hat: Ein in Singlepass kompiliertes Modul startet schneller, läuft aber bei Spitzenlast langsamer als das gleiche Modul, das in LLVM kompiliert wurde. Es handelt sich um einen akzeptierten Kompromiss, nicht um einen versteckten Fehler.

Bei einer von einem Laufzeitanbieter veröffentlichten Zahl handelt es sich nicht um eine unabhängige Prüfung

Wasmer hat seine eigenen Leistungsvergleiche mit Wasmtime veröffentlicht, eine Praxis, die in der WASM-Community Debatten über die verwendete Methodik und die Vergleichbarkeit der getesteten Szenarien ausgelöst hat. Dies ist kein Vorwurf der Bösgläubigkeit, sondern eine strukturelle Mahnung. Ein Laufzeiteditor hat ein begründetes Interesse daran, das Szenario zu veröffentlichen, in dem er gewinnt, was eine unabhängige Überprüfung umso nützlicher macht, bevor er sich für eine Architekturauswahl für eine einzelne Zahl entscheidet.

#
Zusammenfassung

Vergleichstabelle: Was jede Quelle dokumentiert und was nicht

<125ms
Stiefel-Feuerwerkskörper
Agache et al., NSDI 2020
3
WASM-LAUFZEITEN IM VERGLEICH
Wasmtime, Wasmer, WasmEdge
0
Benchmark-Kaltstart-Aurabase
Wasmtime wurde in der Produktion überprüft, keine Messungen veröffentlicht
Kracher (AWS)< 125 ms Startzeit, < 5 MiB Overhead. Von Experten begutachtete ForschungsarbeitAgache et al., USENIX NSDI 2020
Lucet → Wasmtime (Fastly)Instanziierung unter der Millisekunde (2019) Lieferantenzahl, hier nicht wiedergegebenAnkündigung von Compute@Edge, Fastly
WasmEdgeGeringerer Start- und Speicherbedarf im Vergleich zum DockerPublisher-ProduktanspruchOffizielle WasmEdge-Dokumentation (CNCF)
Faasm (Suche)Die WASM-Isolierung ist deutlich günstiger zu instanziieren als ein Container. Verwendet WAVM, nicht WasmtimeShillaker & Pietzuch, USENIX ATC 2020
Standard-Docker-ContainerHunderte von ms bis mehrere Sekunden. Keine einheitliche KonsenszahlWeitgehend dokumentiertes Verhalten

Diese fünf Zeilen stellen keine einheitliche Klassifizierung dar: Sie stammen aus unterschiedlichen Methoden, Daten und Laufzeitgenerationen. Für eine tiefergehende methodische Kritik der Zuverlässigkeit dieser Art von WASM-Benchmark geht unser Artikel über die Grenzen von WebAssembly-Benchmarks über den vorliegenden Vergleich hinaus, der sich weiterhin auf die konkreten Aussagen der einzelnen Quellen konzentriert.

#
Praktische Implikationen

Was diese Lücke wirklich für die Wahl der Edge-Architektur ändert

Der Kaltstartvorteil von WASM kommt vor allem bei den Lasten zum Tragen, die am empfindlichsten auf die Latenz der ersten Anfrage reagieren, und nicht bei allen Lasten gleichermaßen.

Dies belastet insbesondere den sehr unregelmäßigen Edge-Verkehr (Bursts, gefolgt von Stille), die Isolation pro Anfrage statt pro Container, der von mehreren Anfragen gemeinsam genutzt wird, und eine Infrastruktur, die zwischen zwei Spitzen tatsächlich auf null Instanzen herunterfährt, anstatt dauerhaft einen heißen Pool aufrechtzuerhalten. Bei einer stabilen und vorhersehbaren Last, bei der die Instanzen ohnehin heiß bleiben, ist die Kaltstartlücke strukturell weniger wichtig.

WebAssembly unterliegt auch Einschränkungen, die sich vom Kaltstart unterscheiden: Der Zugriff auf das Dateisystem oder das Netzwerk erfolgt über WASI, eine Schnittstelle, die sich abhängig von den Laufzeiten und deren Versionen noch weiterentwickelt, und ein Modul, das für einen schnellen Start kompiliert wurde (Singlepass auf der Wasmer-Seite zum Beispiel), ist nicht unbedingt das schnellste, wenn es einmal unter hoher Last eingerichtet wurde. Kaltstart und Spitzenausführungsleistung bleiben zwei unterschiedliche Achsen, die bei demselben Kompilierungsprofil selten gleichzeitig optimal sind.

Um die Wahl einer Edge-Architektur anhand dieses Kriteriums zu bewerten, muss Aurabase jedem Anbieter drei konkrete Fragen stellen: Welche genaue Laufzeit wird verwendet, welches Kompilierungs-Backend (JIT oder AOT) und wurde die Zahl für den erweiterten Kaltstart von einem unabhängigen Dritten oder nur vom Laufzeitherausgeber selbst gemessen?

#
Häufig gestellte Fragen

FAQs

Ist der Kaltstart von WebAssembly immer noch schneller als ein Docker-Container?+
In der Größenordnung gehen die in diesem Artikel genannten Quellen in diese Richtung: Mikrosekunden bis Millisekunden für die Instanziierung eines WASM-Moduls, verglichen mit Hunderten von Millisekunden bis mehreren Sekunden für einen klassischen Container. Aber keine dieser Zahlen stammt aus einem Messprotokoll, das beiden Technologiefamilien gemeinsam ist, zu unterschiedlichen Zeitpunkten und in unterschiedlichen Versionen. Es handelt sich um einen weithin dokumentierten Trend und nicht um eine numerische Garantie, die für jede Last gültig ist.
Warum geben Wasmtime, Wasmer und WasmEdge unterschiedliche Startnummern bekannt?+
Weil sie nicht auf die gleiche Weise kompiliert werden. Wasmtime verwendet Cranelift als Standard-Backend und bietet Early Build (AOT) über Wasmtime Compile. Bei Wasmer können Sie zwischen Singlepass (schnellste Kompilierung), Cranelift oder LLVM (höchste Laufzeitleistung, langsamere Kompilierung) wählen. WasmEdge enthält einen eigenen AOT-Compiler, der für Edge und IoT entwickelt wurde. Die Wahl des Backends erklärt einen Großteil der Lücke zwischen den von den einzelnen Projekten veröffentlichten Zahlen.
Was ändert sich eigentlich durch die AOT-Kompilierung (Ahead-of-Time) für den Kaltstart?+
Eine AOT-Kompilierung entfernt den Kompilierungsschritt aus dem kritischen Pfad der Anfrage: Das WASM-Modul wird bereits vor dem Aufruf in Maschinencode umgewandelt, es muss nur noch geladen und instanziiert werden. Dies ist das Prinzip hinter wasmtime-Kompilierungen auf der Wasmtime-Seite und dem eigenen Compiler von WasmEdge. Eine JIT-Kompilierung zahlt einen Teil dieser Kosten mit jeder neuen kalten Instanz, es sei denn, die Laufzeit speichert das Ergebnis zwischen.
Hat Aurabase einen Kaltstart-Benchmark für seine Edge-WASM-Funktionen veröffentlicht?+
Nein. Aurabase verwendet Wasmtime in der Produktion für den CLI-Pfad seiner Edge-Funktionen. Die Abhängigkeit wurde in aura-functions/Cargo.toml (Version 43, Async- und Cranelift-Funktionen) überprüft. Bisher wurden jedoch keine für diese Infrastruktur gemessenen Kaltstartzahlen veröffentlicht. Unser methodisches Engagement für alle zukünftigen Leistungszahlen ist in unserem Artikel zur Benchmark-Methodik detailliert beschrieben.
Was ist der Unterschied zwischen dem Kaltstart einer WASM-Laufzeit und dem einer serverlosen Postgres-Datenbank?+
Dies sind zwei verschiedene Schichten des Stapels. Der hier beschriebene Kaltstart betrifft die Code-Ausführungsumgebung, die WASM-Laufzeit selbst. Eine serverlose Postgres-Datenbank fügt ihre eigene Startlatenz hinzu, die mit dem Verbindungspool zusammenhängt, wenn eine angehaltene Instanz fortgesetzt oder eine neue verschlüsselte Verbindung hergestellt wird. Unser Artikel zum serverlosen Postgres-Kaltstart befasst sich speziell mit dieser zweiten Ebene.
Können wir den von den WASM-Laufzeiteditoren selbst veröffentlichten Kaltstart-Benchmarks vertrauen?+
Mit Vorsicht. Eine vom Herausgeber einer Laufzeit veröffentlichte Abbildung beschreibt deren eigene Testbedingungen, die selten unabhängig reproduziert werden, und die WASM-Community hat bereits öffentliche Meinungsverschiedenheiten über die Methodik für Leistungsvergleiche zwischen Laufzeiten erlebt. In unserem Artikel über die Einschränkungen von WebAssembly-Benchmarks gehen wir ausführlicher auf diese methodischen Probleme ein.

Informationen zur Datenbankebene dieses Problems finden Sie in unserem Artikel zum serverlosen Postgres-Kaltstart.

BEREIT ZUM EINSATZ?

Ihr Backend in fünf Minuten.

Keine Kreditkarte erforderlich · 500 MB kostenlos · 50.000 MAU