Skip to content

WWW26-WASM/SatelliteWASM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

A First Look at WebAssembly Performance in Satellite Computing

This repository contains the evaluation tool SatelliteEval and a benchmark suite developed to study WebAssembly (Wasm) performance in satellite computing. It supports multiple runtime environments, execution modes, and representative satellite onboard tasks, enabling reproducible performance measurements.

SatelliteEval is designed to systematically collect performance data such as execution latency, energy consumption, and thermal impact under simulated satellite conditions. The benchmark suite includes tasks spanning scientific computation, data processing, and AI inference.

Repository Contents

  • SatelliteEval/ — Evaluation tool for orchestrating experiments on various Wasm and container-based runtimes.

    • Components: Planning, Deployment, Execution, Logging, Extraction

    • Supported Runtimes:

      • WasmEdge (AOT, JIT, Interpretation)
      • Wasmtime (AOT, JIT)
      • WAMR (AOT, JIT, Interpretation)
      • Wasmer (AOT, JIT)
      • containerd (baseline container runtime)
    • Execution Modes: Ahead-of-Time (AOT), Just-In-Time (JIT), Interpretation

  • benchmarks/ — Suite of representative satellite onboard tasks:

    Category TaskID Source Language Description
    Simple Example Task1 C++, Rust, Go Prints a greeting message
    Scientific Computing Task2 C++, Rust, Go Generates Fibonacci numbers
    Scientific Computing Task3 C++, Rust, Go Approximates definite integrals
    Scientific Computing Task4 C++, Rust, Go MergeSort on arrays
    Scientific Computing Task5 C++, Rust, Go Builds and checks binary trees
    Data Processing Task6 C++, Rust, Go Median filtering on images
    Data Processing Task7 C++, Rust, Go LZW compression/decompression
    Data Processing Task8 C++, Rust, Go Fast Fourier Transform
    AI Inference Task9 Rust Image classification (MobileNetV2)
    AI Inference Task10 Rust Object detection (YOLOv4)

Getting Started

Prerequisites

  • Raspberry Pi 4B (or comparable COTS device) or equivalent x86/ARM host for testing.
  • Supported runtimes installed (see list above).

Running SatelliteEval

Planning Component

The Planning component (planning_component/planner.py) generates experiment command lines based on a YAML configuration file (config.yaml).
It reads task IDs (corresponding to container_task_list.tsv or wasm_task_list.tsv), runtime (wasm or container), and parameter mappings of tasks to produce a complete command string for the Deployment component.

Usage:

cd SatelliteEval/planning_component
python3 planner.py --config config.yaml --output command.txt

Deployment Component

The Deployment component is responsible for transmitting and executing experiment commands generated by the planning component.
It provides two deployment modes:

  • command_coding.sh — Encodes and decodes commands into Raspberry Pi control frames for satellite communication scenarios.
    Used when commands are transmitted across actual satellite or remote links.

  • deploy_local.sh — Executes commands locally without transmission.
    Used for single-device or simulation environments.

Usage (local execution):

cd SatelliteEval/deployment_component
bash deploy_local.sh --input ../../planning_component/command.txt --verbose

Usage (satellite transmission):

# To encode:
bash command_coding.sh --input ../../planning_component/command.txt --output frame_45pi.hex
# To decode:
bash command_coding.sh --output frame_45pi.hex --reverse

Execution Component

The Execution component orchestrates benchmark execution across Wasm and container environments.
It loads paths and parameters from config.yaml, dispatches tasks via test.sh, and records performance data and logs.
All runtime-specific operations (e.g., Wasm or container) are handled by wasm_test.sh and container_test.sh, , while temperature monitoring is managed by temp_logger.sh.

Usage:

cd SatelliteEval/execution_component
bash test.sh <runtime> <interval> <repeat> <clear_report:y|n> <with_input:y|n> <task_id1> [param1] ...

Example:

bash test.sh wasm 2 3 y n 1 2 3

Logging Component

The Logging component collects runtime telemetry data during benchmark execution.

  • temp_logger.sh — Continuously records device temperature every 1 s from the onboard thermal sensor.
    It is automatically launched by the Execution component and does not require manual invocation.

  • start_HPVM.py — Records power data (voltage and current) via a connected Monsoon High-Voltage Power Monitor.
    It runs on the host computer connected to the power monitor through USB and logs samples to power_log.csv.

Extraction Component

The Extraction component (extractor.py) processes and aggregates experiment results after execution.
It merges performance reports, temperature logs, and power monitor data to compute metrics such as average execution time, energy consumption, and thermal characteristics for each task.

Usage:

cd SatelliteEval/extraction_component
python3 extractor.py config.yaml

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published