Slide 1
Slide 1 text
Feasibility of Runtime-Neutral Wasm Instrumentation
for Edge-Cloud Workload Handover
Yuki Nakata1,2, Katsuya Matsubara2
1 SAKURA internet Inc., Japan 2 Future University Hakodate, Japan
Goal: Platform-neutral workload handover
Towards implementation of a Wasm runtime optimized for self-hosting
Which Wasm instrumentation is the most efficient and runtime-neutral?
Suitable Wasm runtime
depends on each platform
• Different implementation and
execution strategy (JIT, AOT and interpreter)
…
Rust
C/C++
Bytecode
WebAssembly (Wasm):
Architecture independent VM
Wasm Runtime A
for Cloud
VM
Instrument
Code
Source Destination
Dumping state
Restoring state
get_mem()
Resume App
Suspend App
Live-migration with bytecode instrumentation:
Empower moving application
Insert programs into apps to obtain states
• Dumping and restoring application states (e.g. stack, memory and pointer)
Use powerful servers
Follow the user's location
• Use powerful servers
• Follow the user’s location
Any Wasm Runtimes and Strategies
Self-hosted Wasm Runtime
Instrumentation Mechanism
Wasm Bytecode
Memory
Stack
Program
Counter
• Compile it runtime to bytecode and run it on any runtimes
• Implement instrumentation mechanism only in it
• Eliminate effort to tailor for each runtime and execution strategy
> Self-hosted runtime for instrumentation
Faster than
Wasabi
Mandelbrot Set Computation
Execution Time(sec)
Wasm3 83.53
Self-hosted Wasm3 on Wasm3 3125.61
Wasmtime 14.02
Self-hosted Wasm3 on Wasmtime 1579.32
37x Slower
112x Slower
> Feasibility evaluation
Implemented instrumentation mechanism in Wasm3 (Existing self-host compilable runtime with interpreter)
Instrumentation overhead Impact of performance by self-hosting runtime
• Compared with cases without self-hosted instrumentation
• Tracing memory usage
• Compared with AOT instrument code inserting (Wasabi)
• Remove duplication of memory boundary checks
• known performance overhead factors of Wasm sandboxing
• Offload atomic parts of instruction processing
to native Wasm runtime
Wasm3 Wasm3 on Wasm3
1 op_SetSlot_f64 (28.22%) op_CopySlot_32 (16.57%)
2 op_f64_Add_rs (22.15%) op_i32_Load_i32_s (15.51%)
3 op_f64_Multiply_rs (21.53%) op_CallIndirect (8.71%)
Top 3 Instructions in Pi Calculation
Increased
memory instructions
AOT instrument code inserting [1]
✓: Neutral to runtime
and execution strategies
✘: Poor performance
Dynamic instrumentation in runtime [2]
✓: High performance
✘: Depends on runtime
and execution strategies
> Existing methods
[2] B. L. Titzer, E. Gilbert, B. W. J. Teo, Y. Anand, K.
Takayama, and H. Miller, “Flexible Non-intrusive
Dynamic Instrumentation for
WebAssembly,” Proceedings of the 29th ACM
International Conference on Architectural Support for
Programming Languages and Operating Systems,
Volume 3, Apr. 2024. Runtime
…
local.get $p1
call $hoge
…
Instrumentation Mechanism
For Interpreter For JIT
…
local.get $p1
probe
…
…
local.get $p1
call $hoge
…
Wasm Bytecode
…
call $analysis
local.get $p1
call $analysis
call $hoge
call $analysis
…
Instrumented
Wasm Bytecode
[1] D. Lehmann and M. Pradel,
“Wasabi,” Architectural Support for
Programming Languages and Operating
Systems, Apr. 2019.
Wasm Runtime B
for Edge
VM
Wasm Runtime C
for Device
VM