Bu, kıyaslama metodolojimizinmantıksal devamıdır ve bu kez belirli bir metriğe uygulanır. Edge işlevlerimizin mimarisinin ayrıntıları için Aurabase'inRust mimarisihakkındaki temel makalemize veya iki çalışma zamanı arasındaki mimari farklılıklar için Wasmtime ve Wasmer karşılaştırmamıza bakın.
Temeller
WebAssembly soğuk başlatması birkaç aşama ekler (yükleme, kaydetme, derleme veya bağlantı kurma, başlatma, ilk çağrı) ve aynı aşamaları içermeyen iki rakam, aynı birimi görüntüleseler bile karşılaştırılamaz. Wasmer, Instaboot'u konuya doğrudan bir pazarlama tepkisi olarak pazarlıyor ancak kamuya mal olmuş rakamları, ayrıştırılmış bir metodoloji olmadan buraya dahil edilmiyor. Aurabase, Edge işlevleri için üretim bağımlılığı olarak wasmtime sürüm 43'ü çalıştırıyor (aura-functions/Cargo.tomlile doğrulandı), ancak bugüne kadar herhangi bir tekrarlanabilir soğuk başlatma kıyaslaması yayınlamadı. Bu makalede hiçbir Aurabase rakamı verilmemektedir: konu yöntemdir.
WebAssembly soğuk başlangıcı neden bir kez daha tartışmalı bir pazarlama argümanı haline geldi?
Soğuk başlangıç, yalnızca akademik bir araştırmanın konusu değil, bir kez daha WebAssembly çalışma zamanları arasındaki ticari farklılaşmanın bir ekseni haline geldi. Wasmer, soğuk başlatma sorununa doğrudan bir yanıt olarak sunulan Instaboot adlı bir özellikle bunu açık bir satış noktası haline getiriyor.
Bu refleks, arka uç kıyaslama metodolojisihakkındaki makalemizde zaten belgelenen dinamiği tam olarak hatırlatmaktadır: birçok rakip satıcı, onları üreten protokolü her zaman belirtmeden performans rakamlarını kendi ürün sayfalarında görüntüler. Yöntemi olmayan bir soğuk başlangıç rakamı, yöntemi olmayan bir gecikme rakamından başka bir şeyi kanıtlamaz.
Bir pazarlama sayfasında yayınlanan, malzemesiz, iş yükü olmayan ve ölçümün başlangıç ve bitiş noktası net bir şekilde tanımlanmayan bir soğuk başlangıç rakamının bir slogandan farkı yoktur. Bu, bir rakamın yayınlandığı günkü Aurabase dahil, bu makalede belirtilen tüm çalışma süreleri için geçerlidir.
Soğuk bir başlangıç aslında neyi ölçer ve tanımın neden her şeyi değiştirdiğini
Soğuk başlatma tek bir işlem değildir: farklı aşamaların toplamıdır ve iki tedarikçinin aynı aşamaları aynı ad altında ölçmesi gerekmez.
| Yükleniyor | .wasm modülünün kurtarılması: ağ, disk veya bellekte zaten mevcut |
|---|---|
| Doğrulama | Yürütmeden önce WebAssembly bayt kodu yapısını kontrol etme |
| Derleme veya bağlama | Anında JIT (Cranelift, LLVM) veya önceden derlenmiş bir yapıyı bağlama (AOT) |
| Örnekleme | Doğrusal belleğin, tabloların ve globallerin tahsisi, olası bir başlatma fonksiyonunun yürütülmesi |
| İlk çağrı | Talebin kendisinin işlenmesi, bazen açıklanan rakama dahil edilir, bazen hariç tutulur |
Yalnızca önceden yüklenmiş ve halihazırda belleğe derlenmiş bir modülün örneğini sayan bir şekil, ağ yükleme ve derlemeyi içeren bir rakamdan mekanik olarak daha iyi görünecektir. Her ikisi de kendi başına yanlış değildir: sorun, ikisinden hangisinin ölçüldüğü belirtilmeden bunları karşılaştırdığımızda ortaya çıkar.
Akademik literatür neyi gösteriyor ve rakamları neden birbiriyle karşılaştırılmıyor?
Son yıllarda arXiv'de ön baskı olarak yayınlanan akademik çalışma, WebAssembly modüllerinin farklı çalışma zamanlarında örneklenme süresini ölçmüştür. Bu çalışmaların ortak noktası yakınsak bir rakam değil; test edilen çalışma süresine, modülün boyutuna ve kullanılan donanıma bağlı olarak önemli bir farktır.
Bu yayınlardan alınan kesin rakamları gönüllü olarak bu makaleye dahil etmiyoruz. Yazma sırasında her makalenin metodolojisini iyice kontrol etmeden, izole edilmiş bir sayıyı yeniden yayınlamak, bu makalenin belgelediği sorunu tam olarak yeniden üretecektir: gerçekte neyi ölçtüğünü bilmemize olanak tanıyan, bağlamı olmayan bir sayı.
Öte yandan, bu varyansın öğrendiği şey doğrudan faydalıdır: Soğuk başlangıç, tam olarak genel metodoloji makalemizde açıklanan ortam eşliği disiplini tarafından hatırlandığı gibi (karşılaştırılan tüm sistemler için aynı donanım, aynı bölge, aynı önbellek durumu) büyük ölçüde ölçüm bağlamına bağlıdır.
Wasmtime, Wasmer, WasmEdge: farklı derleme öncelikleri
Bu tartışmada en çok bahsedilen üç bağımsız WebAssembly çalışma zamanı, derleme hızını ve yürütme performansını aynı şekilde dengelememektedir; bu, soğuk başlangıç rakamlarının neden terim ile terim arasında karşılaştırma yapmadığını kısmen açıklamaktadır.
| Wasmtime | Dağıtımdan önce tarihsel olarak olası bir ön derleme rotasına sahip Cranelift derleme arka ucu | Üretimde Aurabase tarafından Edge işlevleri için kullanıldı |
|---|---|---|
| Vasmer | Çalışma zamanı performansından ziyade derleme hızı için tasarlanmış bir arka uç da dahil olmak üzere birçok değiştirilebilir arka ucu uzun süredir belgelemiştir. | Markets Instaboot, önceden başlatılmış bir örneğin anlık görüntüsüyle yeniden başlatma |
| WasmEdge | Kamuya açık konumlandırma, kendi rekabetçi argümanıyla hızlı bir başlangıca odaklandı | Bu pazarlama alanında da aktif olan alternatif çalışma zamanı |
Bu mimariler projelerin kendisi tarafından kamuya açık olarak belgelenmektedir. Bu makale için bunları sürüm sürüm yeniden doğrulamadık ve bunlar bir performans sıralaması teşkil etmiyor. Bunlar yalnızca, üç farklı çalışma süresi tarafından görüntülenen üç soğuk başlangıç rakamının neden hepsinin doğru olabileceğini, ancak yine de birbirleriyle karşılaştırılamayacağını açıklıyor.
Sunucusuz tartışmalarda sıklıkla karşı çıkılan iki çalışma zamanı arasındaki mimari ayrıntıların tamamı için özel karşılaştırmamıza bakın Wasmtime ve Wasmer.
Instaboot'un gösterdiği ve ürün sayfasının tek başına neyi kanıtlayamadığı
Wasmer'in halka açık olarak iletişim kurduğu ürün konumlandırmasına göre Instaboot, her istekte tam başlatmayı yeniden başlatmak yerine, anlık görüntü mekanizması tarafından zaten başlatılmış olan bir örneği geri yükler. Hedeflediği sorunla tutarlı, gerçek bir mimari seçimdir.
Ancak bu makalenin yapmadığı şey, Wasmer ürün sayfasında gösterilen performans rakamını tekrarlamak değildir. Bu rakamı hangi donanımın, hangi iş yükünün ve hangi ölçüm protokolünün ürettiğini bilmeden, yeniden yayınlamak tam olarak yukarıda belgelenen hatayı yapar: bir pazarlama numarasını bağımsız bir karşılaştırma sonucu olarak ele almak.
"1 ms'den daha az soğuk başlatma" gibi bir rakam, önceki Aurabase içeriği de dahil olmak üzere, tekrarlanabilir bir kıyaslamayla desteklenmeden, zaten kamuya açık olarak dolaşıyordu. Artık dahili olarak desteklenmiyor olarak değerlendiriliyor. Aynı kural, ayrıştırılmış bir metodoloji eşlik etmediği sürece Instaboot da dahil olmak üzere rakip bir çalışma zamanı tarafından görüntülenen herhangi bir rakam için geçerlidir.
Aurabase'in kendi soğuk başlangıcı hakkında bugün söyleyebilecekleri ve söyleyemeyecekleri
Aurabase, Edge işlevlerini bir pilot projede değil, üretim aşamasında Wasmtime üzerinde çalıştırıyor. İşte başvurunun tam olarak neye izin verdiği ve bu iddianın nerede bittiği.
Bağımlılık, async ve cranelift özellikleri etkinleştirilerek, dev-dependency veya bir yorumda değil, hizmetin üretim bağımlılıklarında etkin olarak bildirildi:
Bu dosyanın söylemediği şey: kıyaslama metodolojimiz'de açıklanan protokole göre ölçülen hiçbir soğuk başlangıç rakamı bugün bu çalışma zamanı için depoda mevcut değildir. Ayrıştırılmış yüzdelikler, donanım ve iş yükü ile tarihli bir ölçüm yayınlanana kadar, ürünün ölçülen özelliği olarak hiçbir Aurabase rakamı belirtilmemelidir. Platformun genel mimarisi için Aurabase Rust mimarisisütun makalemize bakın. Burada ele alınan metodolojik sorudan bağımsız olarak, soğuk başlatma WASM ile soğuk başlatma kabı arasında somut bir karşılaştırma için WASM vekapları arasındaki özel makalemize bakın.
İnanmadan Önce Soğuk Başlangıç Numarasını Nasıl Okuyabilirsiniz?
İlkini yayınladığımız gün bizimki de dahil olmak üzere herhangi bir başlangıç rakamına sorulacak yedi soru.
- Hangi aşamalar dahildir? Ağ yükleme, doğrulama, derleme, örnekleme, ilk çağrı: yalnızca bir kısmını sayan bir rakam, hepsini sayan bir rakamla karşılaştırılamaz.
- Modül gerçekten "soğuk" muydu? Zaten bellekte veya disk önbelleğinde bulunan bir modül, ilk kez yüklenen bir modülle aynı şeyi test etmez.
- JIT derlemesi mi yoksa önceden derlenmiş yapıt (AOT) mı? İki stratejinin yapısal olarak farklı başlangıç maliyetleri vardır.
- Tek haneli mi yoksa dağılım mı? On turdaki en iyi koşu, bin koşudaki p95 ile aynı değere sahip değildir.
- Ekipman ve bölge belirtildi mi? Donanım özelliği olmayan bir şekil üçüncü şahıslar tarafından çoğaltılamaz.
- Eşit yük ve topolojide karşılaştırma? Şirket içinde barındırılan bir çalışma zamanını, rapor edilmeden yönetilen bir hizmetle karşılaştırmak, okumayı bozar.
- Test edilen çalışma zamanının tarihi ve sürümü? Hızla gelişen bir projeye ilişkin tarihsiz bir rakamın, birkaç ay sonra hiçbir anlamı yoktur.
SSS
Alıntı yapılan dış kaynaklar: genel ürün belgeleri Wasmer (Instaboot), genel proje belgeleri Wasmtime (Bytecode Alliance), gösterdikleri performans rakamlarını bağımsız olarak tekrar kontrol etmeden bu makalenin hazırlanmasında danışılmıştır.