> [!abstract] 概要
> WebAssembly (Wasm) の異種 interpreter 間における checkpoint/restore (C/R) の実現可能性を検討する予備研究である。WasmEdge が採用する standard interpreter と、WAMR・Wasm3 が採用する fast interpreter の間で、プログラムカウンタ、コントロールスタック、バリュースタックを相互変換する手法を提案し、エッジクラウド協調における軽量 VM マイグレーションの基盤と位置づける。
## 論文情報
- タイトル: A Checkpoint/Restore Mechanism with Interoperability Among Distinctive WebAssembly Interpreters
- 著者: Daigo Fujii, Katsuya Matsubara ([[Future University Hakodate]]), Yuki Nakata ([[SAKURA internet Inc.]])
- 媒体: APSys 2024 (ACM Asia-Pacific Workshop on Systems) Poster
- PDF: [[.raw/papers/apsys24posters-final73.pdf]]
- URL: https://apsys2024.github.io/posters/apsys24posters-final73.pdf
## 概要
WebAssembly はプラットフォーム異質性を吸収する軽量な仮想マシンとして、エッジクラウド協調に注目されている。しかし、Wasm ランタイムには standard interpreter と fast interpreter など実装戦略が異なるものがあり、それらの間で実行状態を保存・復元する C/R は困難である。本ポスターは、WasmEdge (standard interpreter) と WAMR・Wasm3 (fast interpreter) を対象に、プログラムカウンタ・コントロールスタック・バリュースタックの変換手法を示し、異種 interpreter 間の C/R に向けた予備的な知見を報告する。
## 問題設定
- 入力: 異なる Wasm interpreter 上で実行中の Wasm アプリケーションの実行状態
- 出力: 一方の interpreter から取得した checkpoint を、他方の interpreter 上で復元可能な形式に変換した状態
- 前提: JIT/AOT は対象外とし、WasmEdge (standard interpreter)、WAMR、Wasm3 (fast interpreter) の 3 つの interpreter に限定する
- 課題: fast interpreter はスタックベース命令をレジスタベースに変換するなど最適化を行うため、プログラムカウンタやスタックレイアウトが standard interpreter と異なる
## 提案手法
- **プログラムカウンタとコントロールスタックの変換**: standard interpreter のプログラムカウンタは Wasm バイトコードを指すため、相対アドレスへの変換が容易である。fast interpreter はカスタムコードを指すが、Wasm バイトコードからカスタムコードへの変換が 1 命令ずつ行われるため、等価な実行点を対応づけることが可能である。
- **バリュースタックの変換**: WAMR や Wasm3 はすべての値を 32 ビット単位で並べる一方、WasmEdge は 128 ビット単位で 0 パディングして配置する。さらに fast interpreter は standard interpreter と等価なコード位置で異なるスタック内容を持つ。そこで、スタック要素の型情報を管理するデータ構造を導入し、fast interpreter のスタックを standard interpreter の内容に変換する。checkpoint 時に Wasm コードを関数単位で走査し、あらかじめ計算された値が格納されているアドレスを収集することで、再計算を伴わずに復元できる。
## 新規性
既存の Wasm ランタイム間マイグレーション(EdgeSys '24 等)は主に WasmEdge と WAMR 間の状態変換に焦点を当てていた。本研究は、standard interpreter と fast interpreter というより広範な interpreter カテゴリ間の C/R に取り組み、特にカスタムコード上の実行点と Wasm バイトコード上の実行点の対応付け、fast interpreter におけるスタック内容の復元という技術的課題を明示した点に新規性がある。
## 実験設定
本ポスターは予備研究であり、定量的な実験結果や評価セクションは含まれていない。
## 強み / 弱点・課題
- 強み: 異種 interpreter 間の C/R における具体的な状態変換手法(プログラムカウンタ、コントロールスタック、バリュースタック)を提示した点。
- 弱点・課題: 実装・評価は予備的である。JIT/AOT 実装を対象外としており、WASI や外部リソースの状態を含む完全な C/R は扱っていない。
## 関連
- 著者: [[Daigo Fujii]] / [[Katsuya Matsubara]] / [[Yuki Nakata]]
- 所属: [[Future University Hakodate]] / [[SAKURA internet Inc.]]
- ランタイム: [[WasmEdge]] / [[WAMR]] / [[Wasm3]]
- 概念: [[WebAssembly]] / [[ランタイム中立チェックポイント]] / [[VM Migration]] / [[Application Checkpointing]] / [[Edge-cloud Collaboration]]
- 関連 MOC: [[System Engineering - MOC]] / [[Software Engineering - MOC]]
**Figure 1: ポスター全体像**
![[_attachments/apsys24posters-final73/poster-overview.png]]
(Figure 1. APSys 2024 poster "A Checkpoint/Restore Mechanism with Interoperability Among Distinctive WebAssembly Interpreters". 著者・所属、イントロダクション、interoperable Wasm VM state の詳細、参考文献を含む。Source: [[@2024__APSys__A Checkpoint-Restore Mechanism with Interoperability Among Distinctive WebAssembly Interpreters]])