PROD欧州主権の BaaS プラットフォームダッシュボードを開く →

エンジニアリング · 9 分読み取り

WebAssembly コールド スタート: ベンチマークが示すもの

Affane Daylami · Fondateur · 2026年6月19日

ブログに戻る

現在、サードパーティによって共有され、細分化され、再現可能なプロトコルに従って測定されたコールド スタートの数値を公開している WebAssembly ランタイムはありません。 Wasmtime、Wasmer、および WasmEdge はそれぞれクイックブート引数を示しますが、「ブート」という単語の定義が同じであることはほとんどありません。この記事は、この山に数字を 1 つ追加するものではありません。コールド スタートが実際に何を測定するのか、公開されている数字が比較できない理由、そしてまだ独自のベンチマークを公開していないのに本番環境で wasmtime を実行している Aurabase の実際の立場について説明します。

この英語のテキストはフランス語のオリジナルから自動的に生成されたもので、まだレビューされていません。
このページは自動翻訳されました。英語版が正式です。

これは、 ベンチマーク手法の論理的な継続であり、今回は特定のメトリクスに適用されます。 Edge 関数のアーキテクチャの詳細については、Aurabase のRust アーキテクチャに関する柱記事、または 2 つのランタイムのアーキテクチャの違いについては、 Wasmtime と Wasmer の比較を参照してください。

必需品

WebAssembly のコールド スタートでは、いくつかのフェーズ (ロード、コミット、コンパイルまたはリンク、インスタンス化、最初の呼び出し) が追加され、同じフェーズが含まれていない 2 つの図は、同じ単位が表示されている場合でも比較できません。 Wasmer は、この主題に対する直接的なマーケティング対応として Instaboot を宣伝していますが、その著名人は、細分化された方法論なしにここには含まれていません。 Aurabase は、Edge 機能の本番依存関係として wasmtime バージョン 43 を実行します ( aura-functions/Cargo.tomlで検証) が、現在まで再現可能なコールド スタート ベンチマークを公開していません。この記事では Aurabase の数値は示されていません。主題はメソッドです。

#
観察

WebAssembly のコールド スタートが再びマーケティング上の議論の的になった理由

コールド スタートは再び、単なる学術研究の対象ではなく、WebAssembly ランタイム間の商業的な差別化の軸となっています。 Wasmer は、コールド ブートの問題に対する直接の答えとして提示された Instaboot と呼ばれる機能によって、これを明確なセールス ポイントにしています。

この反射は、バックエンド ベンチマーク方法論に関する記事ですでに文書化されている動的な動きをまさに思い出させます。: いくつかの競合ベンダーは、パフォーマンス数値を生成したプロトコルを常に指定せずに、自社の製品ページにパフォーマンス数値を表示しています。メソッドのないコールド スタートの数値は、メソッドのないレイテンシの数値にすぎません。

他のベンチマークと同じ罠

マーケティング ページで公開されるコールド スタートの数値は、資料も作業負荷もなく、測定の開始点と終了点の明確な定義もなく、スローガンと区別がつきません。これは、図が発表された日の Aurabase を含む、この記事で引用されているすべてのランタイムに適用されます。

#
定義

コールド スタートが実際に何を測定するのか、そしてその定義がすべてを変える理由

コールド スタートは単一の操作ではありません。これは異なるフェーズの合計であり、2 つのサプライヤーが同じ名前で同じフェーズを測定するとは限りません。

読み込み中.wasm モジュールのリカバリ: ネットワーク、ディスク、またはメモリ内にすでに存在する
検証実行前に WebAssembly のバイトコード構造を確認する
コンパイルまたはリンクオンザフライの JIT (Cranelift、LLVM) またはすでにプリコンパイルされたアーティファクトのリンク (AOT)
インスタンス化リニア メモリ、テーブル、グローバルの割り当て、可能な開始関数の実行
最初の電話リクエスト自体の処理(発表された数値に含まれる場合もあれば、除外される場合もある)

すでにメモリにロードされ、すでにコンパイルされているモジュールのインスタンス化のみをカウントする図は、ネットワークのロードとコンパイルを含む図よりも機械的に見栄えが良くなります。どちらもそれ自体は誤りではありません。問題は、2 つのどちらが測定されたかを特定せずに比較すると発生します。

#
学術研究

学術文献が示していることと、その数値が互いに比較できない理由

近年、arXiv でプレプリントとして公開された学術研究では、さまざまなランタイムでの WebAssembly モジュールのインスタンス化時間を測定しました。これらの作業の共通点は収束する数字ではなく、テストされたランタイム、モジュールのサイズ、使用されるハードウェアに応じて大きな違いがあります。

私たちは自主的に、これらの出版物から取得した正確な数値をこの記事に含めることはありません。執筆時に各論文の方法論を徹底的に再確認せずに、孤立した数値を再公表すると、この記事で説明している問題が再現されることになります。つまり、実際に何を測定するのかを知ることを可能にするコンテキストのない数値です。

一方、この差異が学習することは直接役に立ちます。コールド スタートは、一般的な方法論の記事で説明した 環境パリティ の規律 (比較したすべてのシステムで同一のハードウェア、同じリージョン、同じキャッシュ状態) で思い出したとおり、測定コンテキストに強く依存します。

#
実行時の風景

Wasmtime、Wasmer、WasmEdge: コンパイルの異なる優先順位

この議論で最も引用されている 3 つのスタンドアロン WebAssembly ランタイムは、コンパイル速度と実行パフォーマンスのバランスが同じではありません。これが、コールド スタートの数値が用語ごとに比較されない理由の一部を説明しています。

ワサムタイムCranelift コンパイル バックエンド (歴史的には、デプロイメント前にプリコンパイル ルートが可能)Aurabase によるエッジ機能の本番環境で使用されます
ワスマー実行時のパフォーマンスではなくコンパイル速度を重視して設計されたバックエンドを含む、いくつかの交換可能なバックエンドを長い間文書化してきました。Markets Instaboot、すでに初期化されたインスタンスのスナップショットによる再起動
ワズムエッジ独自の競争力のある議論を伴う、迅速なスタートに焦点を当てたパブリック ポジショニング代替ランタイムもこのマーケティング領域で活躍
この表は、ランタイムを分類するためではなく、比較できないことを説明するために使用されます。

これらのアーキテクチャは、プロジェクト自体によって公的に文書化されています。この記事ではバージョンごとに再検証は行っておらず、パフォーマンス ランキングを構成するものではありません。これらは、3 つの異なるランタイムによって表示される 3 つのコールド スタートの数値がすべて正確であるにもかかわらず、互いに比較できない理由を説明しているだけです。

サーバーレスの議論で最も頻繁に対立する 2 つのランタイム間の完全なアーキテクチャの詳細については、専用の比較 Wasmtime と Wasmerを参照してください。

#
再資格

Instaboot が示していることと、その製品ページだけでは証明されていないこと

Wasmer が公に伝えている製品の位置付けによれば、Instaboot はリクエストごとに完全な起動を再開するのではなく、スナップショット メカニズムによってすでに初期化されているインスタンスを復元します。これは、対象とする問題と一致する、実際のアーキテクチャ上の選択です。

ただし、この記事では、Wasmer 製品ページに表示されているパフォーマンスの数値を繰り返すことはしません。この数値がどのようなハードウェア、どのようなワークロード、どのような測定プロトコルで生成されたのかが分からないまま、この数値を再公開すると、マーケティング数値を独立したベンチマーク結果として扱うという、まさに上記の間違いを犯すことになります。

この警戒を正当化する判例

「コールドスタートは 1 ミリ秒未満」などの数値は、再現可能なベンチマークの裏付けなしに、以前の Aurabase コンテンツを含めてすでに公に出回っています。現在、内部的にはサポートされていないものとして扱われます。細分化された方法論が伴わない限り、同じルールが、Instaboot を含む競合するランタイムによって表示されるあらゆる図に適用されます。

#
コードをチェックインしました

Aurabase が自社のコールド スタートについて今日言えること、言えないこと

Aurabase は、パイロット プロジェクトではなく、本番環境の Wasmtime でエッジ機能を実行します。まさにこの出願で認められる内容と、その主張がどこで終わるのかがここにあります。

3
引用された WASM ランタイム
Wasmtime、Wasmer、WasmEdge
0
ベンチマーク コールド スタート AURABASE がリリースされました
現在までに再現性のある日付の付いた測定はありません
43
WASMTIME バージョンは運用中です
aura-functions/Cargo.toml、prod の依存関係

依存関係は、dev-dependency やコメントではなく、サービスの実稼働依存関係で、有効化された機能 async および cranelift とともにハード宣言されます。

Cargo.tomltoml
# リポジトリからの実際の抽出
[dependencies]

# WASM ランタイム
wasmtime = { version = "43", features = ["async", "cranelift"] }

このファイルに記載されていないこと: ベンチマーク方法論 で説明されているプロトコルに従って測定されたコールド スタートの数値は、現在このランタイムのリポジトリには存在しません。パーセンタイル、ハードウェア、ワークロードを細分化した日付の測定結果が公開されるまでは、製品の測定された特性として Aurabase の数値を引用すべきではありません。プラットフォームの一般的なアーキテクチャについては、柱となる記事 Aurabase Rust アーキテクチャを参照してください。コールド スタート WASM とコールド スタート コンテナーの具体的な比較については、ここで取り上げる方法論的な質問とは別に、専用記事 WASM vsコンテナーを参照してください。

#
読書グリッド

コールド スタート番号を信じる前に読み取る方法

リリース日のものも含め、コールド スタートのフィギュアに尋ねるべき 7 つの質問。

  1. どのようなフェーズが含まれていますか? ネットワークの読み込み、検証、コンパイル、インスタンス化、最初の呼び出し: 一部のみをカウントした図は、それらすべてをカウントした図と比較できません。
  2. モジュールは本当に「コールド」でしたか? すでにメモリまたはディスク キャッシュにあるモジュールは、初めてロードされたモジュールと同じことをテストしません。
  3. JIT コンパイルまたはプリコンパイル済みアーティファクト (AOT)? 2 つの戦略には構造的に異なる初期コストがあります。
  4. 1 桁ですか、それとも分布ですか? 10 回の実行で最高の実行は、1,000 回の実行での p95 と同じ値にはなりません。
  5. 機器と地域は指定されていますか? ハードウェア仕様のない図は第三者による複製ができません。
  6. 等しい負荷とトポロジでの比較? セルフホステッド ランタイムをレポートせずにマネージド サービスと比較すると、解釈が歪められます。
  7. テストされたランタイムの日付とバージョン? 急速に進化しているプロジェクトの日付のない数字は、数か月後には何の意味も持ちません。
#
よくある質問

よくある質問

WebAssembly のコールド スタートとは正確には何ですか?+
これは、まだアクティブになっていない機能に対するリクエストの到着と、その最初の有効な応答を分ける時間です。今回は、モジュールのロード、バイトコードの検証、コンパイルまたはリンク、インスタンス化 (リニア メモリ、テーブル、グローバル)、リクエストの処理という、いくつかの個別のフェーズが追加されます。 2 つのコールド スタートの数値は、必ずしも同じ位相を測定するとは限りません。
「WebAssembly のコールド スタートは 1 ミリ秒未満」という数字は本当ですか?+
この数値は、ハードウェア、ワークロード、メソッドを細分化した再現可能なベンチマークの裏付けなしに、以前の Aurabase コンテンツを含めて公に流通しました。現在、内部的にはサポートされていないものとして扱われます。同じ注意が、方法論が公開されていない競合ランタイムによって表示されるコールド スタートの数値にも当てはまります。
Wasmer 機能である Instaboot とは何ですか?+
Wasmer が公に伝えている製品の位置づけによれば、Instaboot はリクエストごとに完全な起動を再開するのではなく、スナップショットによってすでに初期化されているインスタンスを復元します。この記事には、Wasmer 製品ページに表示されているパフォーマンス数値は含まれていません。別の方法論や資料がなければ、この図を再公開すると、文書に記載されている問題が再現されてしまいます。
Aurabase は Edge 機能のコールド スタート図をリリースしましたか?+
いいえ、Aurabase は、aura-functions の運用依存関係として Wasmtime バージョン 43 (非同期およびクレーンリフト機能) を実行します。この事実は、サービスの Cargo.toml で直接確認されています。ただし、再現可能な古いプロトコルに従ったコールド スタート ベンチマークは現在、このランタイムのリポジトリに存在しません。
WebAssembly はコンテナよりも速く起動しますか?+
アーキテクチャ的には、WebAssembly モジュールはコンテナーよりも起動面が小さいため (ゲスト カーネルやマウントする完全なファイル システムがない)、迅速なコールド スタートが可能になります。ただし、実際の違いはテストしたシナリオに大きく依存します。 WASM とコンテナーの比較に特化した記事では、具体的なケースを使用してこの点を説明します。

引用された外部ソース: 公開製品ドキュメント Wasmer (Instaboot)、公開プロジェクト ドキュメント Wasmtime (Bytecode Alliance)、この記事の準備のために参照しましたが、示されているパフォーマンス数値を個別に再確認することはありません。

導入の準備はできていますか?

5 分でバックエンドが完成します。

クレジット カードは不要 · 500 MB 無料 · 50,000 MAU