PRODEgemen Avrupa BaaS platformuKontrol Panelini Aç →

Performans · 11 dk. okuma

WASM vs konteyner soğuk başlangıçları: çalışma zamanları ne diyor

Affane Daylami · Fondateur · 24 Mayıs 2026

Bloga geri dön

Bir WebAssembly modülü, yayınlanan kaynaklara bağlı olarak mikrosaniye veya milisaniye cinsinden örneklenir. Tipik bir Docker kapsayıcısı genellikle birkaç yüz milisaniyede, bazen de birkaç saniyede başlar. Firecracker mikroVM'si bu ikisi arasında yer alıyor: 2020'de tanıtılan AWS araştırma makalesine göre başlangıçta 125 ms'den az. Bu üç rakam ailesi aynı metodolojiyi, aynı tarihi veya aynı ölçüm protokolünü paylaşmıyor: tek bir sınıflandırmada toplanamazlar.

Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.

This article brings together what identifiable third-party sources publish about WebAssembly's cold start compared to containers: a paper presented at USENIX NSDI, official documentation from Fastly, WasmEdge and Wasmer, and an academic research project on serverless isolation. No Aurabase figures are included. Our edge functions run well on Wasmtime, verified in the repository, but no cold start benchmark specific to our infrastructure has been published to date, a distinction detailed below. For the general benchmarking method applied elsewhere on this blog, see our pillar article onbenchmarking methodology.

Temeller

  • AWS Firecracker belgesi (Agache ve diğerleri, USENIX NSDI 2020), 125 ms'nin altında bir mikroVM başlatmayı ve 5 MiB'nin altında bir bellek yükünü belgelemektedir: bu makaledeki en kesin şekilde ölçülen referans.
  • 2019'da AOT Lucet çalışma süresi (optimizasyonları daha sonra Wasmtime ile birleştirildi) için bir milisaniyenin altındaki WASM örnekleme sürelerini hızlı bir şekilde belgeledi. Bu, tedarikçi tarafından yayınlanan bir rakamdır ve burada başvurulan kaynaklarda hiçbir zaman bağımsız olarak çoğaltılmamıştır.
  • CNCF yönetimi altındaki bir proje olan WasmEdge, resmi belgelerinde, bu makalede belirtilen bağımsız karşı önlemler olmaksızın, eşdeğer bir Docker konteynerine göre önemli ölçüde daha düşük bir başlangıç ve bellek ayak izi olduğunu iddia ediyor.
  • Wasmtime, Wasmer ve WasmEdge aynı şekilde derleme yapmaz (Cranelift, Singlepass/Cranelift/LLVM seçiminiz, kendi AOT derleyicisi): bu arka uç seçimi, yalnızca çalışma süresini değil, yayınlanan rakamlar arasındaki boşluğun büyük bir kısmını açıklar.
  • Aurabase, aura-functions/Cargo.tomlile doğrulanan uç işlevleri için üretimde Wasmtime'ı kullanıyor ancak bugüne kadar kendi altyapısında ölçülen herhangi bir soğuk başlangıç rakamı yayınlamadı.
Kaynaklara ilişkin yöntem notu

Aşağıda adı geçen üçüncü taraf kaynaklar; başlıklarına, yazarlarına veya yayıncılarına ve yayın tarihlerine göre tanımlanabilir. Bu araştırma, bu yazının yazıldığı sırada sayfalarının canlı sorgusuna değil, WebAssembly ve sunucusuz ekosistemdeki tanınmış ve geniş çapta belgelenmiş yayınlara dayanmaktadır. Kesin bir rakamın yeterli bir kesinlikle doğrulanamadığı durumlarda, bu makale kesin bir değer yerine büyüklük sırasını kullanır ve bunu açıkça belirtir.

#
Çerçeveleme

WASM soğuk başlangıcı sunucusuz tartışmada neden bu kadar çok yer kaplıyor?

Soğuk başlatma, uygulama kodu çalıştırılmadan önce yürütme ortamının başlatılması gerektiğinde bir istek tarafından ödenen ek gecikmeyi ifade eder. Klasik bir uç veya sunucusuz işlevde bu, marjinal bir durum olmaktan çok uzaktır: iki trafik zirvesi arasında sıfır örneğe inen veya yürütmesini coğrafi olarak dağınık düzinelerce uç düğüme dağıtan bir platform, bu maliyeti yalnızca ilk dağıtımda değil kalıcı olarak öder.

Docker'ın kurucu ortağı Solomon Hykes'in Mart 2019'da Twitter'da yayınladığı şu cümleden beri konu WASM ekosisteminde neredeyse sembolik bir önem kazandı: "Eğer WASM+WASI 2008'de mevcut olsaydı, Docker'ı yaratmamıza gerek kalmazdı. İşte bu kadar önemli. Sunucudaki WebAssembly bilgi işlemin geleceğidir. » Bu tanınmış bir uygulayıcının görüşüdür, bir ölçüm değil. Konunun neden büyüleyici olduğunu açıklıyor, kaynaklı bir rakamın yerini almaz.

Aurabase, uç işlevleri için iki yol sunar: Supabase geçiş kılavuzumuzdabelgelendiği gibi kodu Deno çalışma zamanında çalıştıran Studio editörü ve Rust'ta yazılan ve Wasmtime'da WASM'ye derlenen işlevler için ayrı bir yol hedefleyen aura functions deployCLI. Bu makalenin, henüz var olmayan bir başlangıç rakamı vermeden, ışık tuttuğu ikinci yol budur.

#
Mimarlık

Bir WASM modülü neden yapısal olarak bir konteynerden daha hızlı başlıyor?

Aradaki fark, mutlak anlamda daha hızlı bir çalışma zamanından kaynaklanmıyor; sorgu ile uygulama kodu arasındaki adımların daha kısa yığınından kaynaklanıyor.

Bir kapsayıcıyı başlatmak ana bilgisayar çekirdeğini harekete geçirir: yeni bir süreç oluşturmak, onu izole eden grupları ve ad alanlarını ayarlamak, görüntünün katmanlarını monte etmek ve ardından uygulama çalışma zamanını içeride başlatmak (örneğin, Node.js ve onun V8 motorunun kendilerinin bir başlatma maliyeti vardır). Her adımda sistem çağrıları eklenir ve yerel olarak hiç görülmemiş bir görüntü için daha başlamadan ağdan indirme işlemi yapılır.

WebAssembly modülü, işletim sistemi düzeyinde değil, sanal makine dili düzeyinde yalıtılmıştır. Bir modülün başlatılması, onun doğrusal belleğinin tahsis edilmesi, içe aktarılanların bağlanması, ardından giriş noktasına atlanması anlamına gelir; bunların tümü ana bilgisayar çalışma zamanının önceden başlatılmış süreci dahilindedir. Yeni işlemler yok, görüntü katmanları yok, varsayılan dosya sistemi bağlantıları yok.

Derleme modunun seçimi ek bir değişken ekler. Wasmtime, modül yüklendiğinde Cranelift arka ucu aracılığıyla JIT'e derler veya önceden yerel makine koduna dönüştürülmüş bir .cwasm dosyası üreten wasmtime compileile önceden derleyebilir. Erken derleme (AOT), derleme adımını isteğin kritik yolundan kaldırır: Bu, tam olarak soğuk başlatmaya duyarlı bir uç mimarisinin etkinleştirmesi gereken kaldıraçtır.

Cargo.tomltoml
# Aurabase deposundan gerçek alıntı
# WASM Çalışma Zamanı
wasmtime = { version = "43", features = ["async", "cranelift"] }

Bu bir geliştirme değil üretim bağımlılığıdır: Wasmtime'ın gerçekten Aurabase uç fonksiyonlarının CLI yolunda çalıştığını doğrular. Ancak herhangi bir gecikme rakamını doğrulamaz ve tarihli bir kıyaslama yayınlanmadığı sürece bu durum geçerli kalır.

#
Yayınlanan rakamlar

Konteynerler ve microVM: en hassas şekilde ölçülen referans

Bu alanda en güçlü kaynak, bir pazarlama blog yazısı değil, bir sektör araştırma makalesidir. AWS tarafından geliştirilen ve özellikle Lambda ve Fargate için kullanılan hafif microVM teknolojisi Firecracker, USENIX NSDI 2020 konferansında Agache ve diğerleri tarafından sunuldu. “Firecracker: Sunucusuz Uygulamalar için Hafif Sanallaştırma” makalesinde.

Bu belge, aynı fiziksel makinede binlerce mikroVM'yi çalıştırma yeteneği ile birlikte, 125 ms'den daha az bir önyükleme süresini ve mikroVM başına 5 MiB'den daha az bir bellek ek yükünü belgelemektedir. Bu, hakemli bir akademik yayından alınan ve o zamandan bu yana sunucusuz izolasyonla ilgili literatürde geniş çapta alıntı yapılan eski bir rakamdır (2020).

Standart bir Docker kapsayıcısı genellikle daha yüksektir: görüntünün boyutuna, indirme ihtiyacına ve yerleşik uygulama çalışma zamanının önyükleme süresine bağlı olarak birkaç yüz milisaniyeden birkaç saniyeye kadar. Firecracker'ın aksine, burada evrensel olarak alıntılanan tek bir rakam yoktur: sonuç, fikir birliğine varmak için tek bir değer için test edilen görüntüye fazlasıyla bağlıdır.

#
Yayınlanan rakamlar

WebAssembly: Fastly, WasmEdge ve akademik araştırma belgesi

Üç kaynak, üç farklı durum: tarihi bir tedarikçi, vakıf yönetimi altındaki bir proje ve bir araştırma makalesi.

Compute@Edge'i 2019'da kendi ön derleme WASM derleyicisi ve çalışma zamanı olan Lucet'te hızla başlattı. Bu lansmanda şirket, WASM örnekleme sürelerini bir milisaniyenin altında belgeledi; bu, sektördeki WASM soğuk başlangıç söylemi üzerinde kalıcı bir etkiye sahip olan bir büyüklük sırasıdır. 2021'de Fastly, Lucet'in otonom gelişimini durdurdu ve çabalarını, Cranelift derleme arka ucu bu optimizasyonların bir kısmını devralan Wasmtime'a yönlendirdi: Wasmtime'ın bugün bu tür yükler için bir referans olarak kalmasının nedenlerinden biri de budur.

CNCF yönetişimi (başlangıçta SSVM, Second State tarafından desteklenir) altındaki bir WASM çalışma zamanı olan WasmEdge, resmi belgelerinde, uç ve IoT yüklerinde açık bir konumlandırma ile eşdeğer bir Docker konteynerinden önemli ölçüde daha düşük bir başlangıç ve bellek alanı kapladığını iddia ediyor. Bu, proje yayıncısının kendisi tarafından yayınlanan ve şu şekilde okunacak bir rakamdır: bağımsız bir denetim değil, bir ürün iddiası.

Akademik araştırma tarafında, Faasm (Shillaker & Pietzuch, USENIX ATC 2020, ayrıca ön yayında mevcuttur), tam olarak bir işlevin konteyner veya VM ile izolasyondan çok daha düşük bir maliyetle başlatılmasına izin verdiği için WebAssembly izolasyonuna (Wasmtime değil, WAVM aracılığıyla) dayanan durum bilgisi olan sunucusuz bir platform oluşturur. Makale özellikle Wasmtime ile ilgili değil ancak önceki bölümdeki yapısal argümana bağımsız akademik doğrulama sağlıyor.

#
Çalışma zamanları

Wasmtime vs Wasmer vs WasmEdge: yayınlanan sayılar neden sıralanmıyor

Bu üç çalışma zamanını yalnızca adlarına göre karşılaştırmak, gerçek değişkeni gizler: seçilen derleme arka ucu, başlatma hızı ile yürütme performansı arasındaki dengeyi kökten değiştirir.

WasmtimeCranelift (varsayılan olarak JIT) + wasmtime derlemesi yoluyla AOTBytecode Alliance · Fastly, Shopify, Aurabase tarafından kullanılan açık yönetim
VasmerTercihinize göre Singlepass, Cranelift veya LLVMSinglepass derleme süresini en aza indirir; LLVM yürütme performansını en üst düzeye çıkarır
WasmEdgeProjeye özel AOT derleyicisiCNCF · konumlandırılmış uç/IoT ve bulut tabanlı

Wasmer'in en hızlı derleme arka ucu olan Singlepass'ın var olmasının nedeni, ekibinin soğuk başlatmayı kararlı durum yürütme performansının farklı bir ekseni olarak tanımlamasıdır: Singlepass'ta derlenen bir modül, LLVM'de derlenen aynı modüle göre daha hızlı başlar, ancak yoğun yük sırasında daha yavaş çalışır. Bu kabul edilmiş bir uzlaşmadır, gizli bir kusur değil.

Bir çalışma zamanı satıcısı tarafından yayınlanan bir rakam bağımsız bir denetim değildir

Wasmer, WASM topluluğunda kullanılan metodoloji ve test edilen senaryoların karşılaştırılabilirliği konusunda tartışmalara yol açan bir uygulama olan Wasmtime'a karşı kendi performans karşılaştırmalarını yayınladı. Bu bir kötü niyet suçlaması değil, yapısal bir hatırlatmadır. Bir çalışma zamanı düzenleyicisinin kazandığı senaryoyu yayınlama konusunda çıkarı vardır; bu, tek bir sayı üzerinden mimari seçimine karar vermeden önce bağımsız doğrulamayı çok daha yararlı hale getirir.

#
Özet

Karşılaştırmalı tablo: her kaynağın neyi belgelediği ve neyi belgelemediği

<125ms
Önyükleme Havai Fişek
Agache ve diğerleri, NSDI 2020
3
WASM ÇALIŞMA SÜRELERİ KARŞILAŞTIRILDI
Wasmtime, Wasmer, WasmEdge
0
KIYASLAMA SOĞUK BAŞLATMA AURABASE
Wasmtime üretimde kontrol edildi, ölçüm yayınlanmadı
Havai Fişek (AWS)< 125 ms başlatma, < 5 MiB genel gider Hakemli araştırma makalesiAgache ve diğerleri, USENIX NSDI 2020
Lucet → Wasmtime (Hızlı)Milisaniye (2019) Tedarikçi rakamına göre örnekleme, burada çoğaltılmamıştırCompute@Edge Hızla Duyuruluyor
WasmEdgeDockerPublisher ürün iddiasına göre daha küçük başlangıç ve bellek alanıResmi WasmEdge belgeleri (CNCF)
Faazm (arama)WASM izolasyonunun başlatılması, bir konteynerden çok daha ucuzdur. Wasmtime yerine WAVM kullanırShillaker & Pietzuch, USENIX ATC 2020
Standart Docker konteyneriYüzlerce ms ila birkaç saniye Tek bir fikir birliği numarası yokGeniş çapta belgelenmiş davranış

Bu beş satır tek bir sınıflandırma olarak okunmaz: farklı metodolojilerden, tarihlerden ve çalışma zamanı nesillerinden gelirler. Bu tür WASM kıyaslamalarının güvenilirliğine ilişkin daha derinlemesine bir metodolojik eleştiri için, WebAssembly kıyaslamalarının sınırları hakkındaki makalemiz, her kaynağın somut olarak iddia ettiği şeye odaklanmaya devam eden mevcut karşılaştırmanın ötesine geçer.

#
Pratik çıkarımlar

Bu boşluk, uç mimari seçimi açısından gerçekte neyi değiştiriyor?

WASM'nin soğuk başlatma avantajı, tüm yüklerde eşit olarak değil, en çok ilk isteğin gecikmesine en duyarlı yüklerde dikkate alınır.

Özellikle çok düzensiz kenar trafiğine (ani patlamalar ve ardından sessizlikler), çeşitli istekler arasında paylaşılan konteyner başına izolasyon yerine istek başına izolasyona ve sıcak havuzu kalıcı olarak tutmak yerine aslında iki zirve arasında sıfır örneğe inen bir altyapıya ağırlık verir. Örneklerin yine de sıcak kaldığı istikrarlı ve öngörülebilir bir yükte, soğuk başlatma aralığı yapısal olarak daha az önemlidir.

WebAssembly ayrıca soğuk başlangıçtan farklı kısıtlamaları da korur: dosya sistemine veya ağa erişim, çalışma zamanlarına ve sürümlerine bağlı olarak hala gelişmekte olan bir arayüz olan WASI üzerinden geçer ve hızlı bir şekilde başlamak üzere derlenen bir modül (örneğin, Wasmer tarafında Singlepass), ağır yük altında kurulduğunda mutlaka en hızlısı olmayabilir. Soğuk başlatma ve en yüksek yürütme performansı iki ayrı eksen olarak kalır; aynı derleme profilinde aynı anda nadiren optimaldir.

Bu kritere göre uç mimari seçimini değerlendirmek için Aurabase, herhangi bir tedarikçiye sorulacak üç somut soruyu içeriyordu: tam olarak hangi çalışma zamanının kullanıldığı, hangi derleme arka ucunun (JIT veya AOT) kullanıldığı ve gelişmiş soğuk başlangıç rakamının bağımsız bir üçüncü taraf tarafından mı yoksa yalnızca çalışma zamanı yayıncısının kendisi tarafından mı ölçüldüğü.

#
Sıkça Sorulan Sorular

SSS

WebAssembly soğuk başlatma hala Docker kapsayıcısından daha hızlı mı?+
Bu makalede belirtilen kaynaklar büyüklük sırasına göre şu yönde ilerlemektedir: klasik bir kapsayıcı için yüzlerce milisaniyeden birkaç saniyeye kıyasla, bir WASM modülünün başlatılması için mikrosaniyelerden milisaniyelere kadar bir süre. Ancak bu rakamların hiçbiri, iki teknoloji ailesi için farklı tarihlerde ve farklı versiyonlarda ortak olan bir ölçüm protokolünden gelmiyor. Herhangi bir yük için geçerli sayısal bir garanti olarak değil, geniş çapta belgelenmiş bir trend olarak ele alınmalıdır.
Wasmtime, Wasmer ve WasmEdge neden farklı başlangıç numaralarını duyuruyor?+
Çünkü aynı şekilde derlenmiyorlar. Wasmtime, varsayılan arka uç olarak Cranelift'i kullanır ve wasmtime derlemesi yoluyla erken derleme (AOT) sunar. Wasmer, Singlepass (en hızlı derleme), Cranelift veya LLVM (en yüksek çalışma zamanı performansı, daha yavaş derleme) arasında seçim yapmanızı sağlar. WasmEdge, uç ve IoT için tasarlanmış kendi AOT derleyicisini içerir. Arka uç seçimi, her proje tarafından yayınlanan rakamlar arasındaki farkın büyük bir kısmını açıklıyor.
AOT (önceden) derlemesi soğuk başlangıç için gerçekte neyi değiştirir?+
Bir AOT derlemesi, derleme adımını isteğin kritik yolundan kaldırır: WASM modülü, çağrılmadan önce zaten makine koduna dönüştürülmüştür, geriye kalan tek şey onu yüklemek ve başlatmaktır. Wasmtime tarafında Wasmtime derlemelerinin ve WasmEdge'in kendi derleyicisinin arkasındaki prensip budur. Bir JIT derlemesi, çalışma zamanı sonucu önbelleğe almadığı sürece her yeni soğuk örnekte bu maliyetin bir kısmını öder.
Aurabase, uç WASM işlevleri için bir soğuk başlangıç kıyaslaması yayınladı mı?+
Hayır. Aurabase, uç fonksiyonlarının CLI yolu için üretimde Wasmtime'ı kullanıyor, bağımlılık aura-functions/Cargo.toml (sürüm 43, eşzamansız ve vinç kaldırma özellikleri) aracılığıyla doğrulandı, ancak bugüne kadar bu altyapı üzerinde ölçülen soğuk başlangıç rakamları yayınlanmadı. Gelecekteki performans rakamlarına yönelik metodoloji taahhüdümüz, kıyaslama metodolojisi makalemizde ayrıntılı olarak açıklanmıştır.
WASM çalışma zamanının soğuk başlatılması ile sunucusuz Postgres veritabanının soğuk başlatılması arasındaki fark nedir?+
Bunlar yığının iki farklı katmanıdır. Burada açıklanan soğuk başlangıç, kod yürütme ortamıyla, yani WASM çalışma zamanıyla ilgilidir. Sunucusuz bir Postgres veritabanı, askıya alınmış bir örneği devam ettirirken veya yeni bir şifreli bağlantı kurarken bağlantı havuzuyla ilgili olarak kendi başlatma gecikmesini ekler. Sunucusuz Postgres soğuk başlatma hakkındaki makalemiz özellikle bu ikinci katmana değinmektedir.
WASM çalışma zamanı editörlerinin kendileri tarafından yayınlanan soğuk başlangıç kıyaslamalarına güvenebilir miyiz?+
Dikkatli bir şekilde. Bir çalışma zamanının yayıncısı tarafından yayınlanan bir rakam, nadiren bağımsız olarak çoğaltılan kendi test koşullarını açıklamaktadır ve WASM topluluğu, çalışma zamanları arasındaki performans karşılaştırmalarına yönelik metodoloji konusunda zaten kamuya açık anlaşmazlıklar yaşamıştır. WebAssembly kıyaslamalarının sınırlamalarına adanan makalemiz, bu metodolojik sorunları daha derinlemesine detaylandırmaktadır.

Aynı sorunun veritabanı katmanı için sunucusuz Postgres soğuk başlatma hakkındaki makalemize bakın.

DAĞITILMAYA HAZIR MISINIZ?

Beş dakika içinde arka ucunuz.

Kredi kartı gerekmez · 500 MB ücretsiz · 50.000 MAU