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.
-
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)
- Raspberry Pi 4B (or comparable COTS device) or equivalent x86/ARM host for testing.
- Supported runtimes installed (see list above).
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
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
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
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 topower_log.csv
.
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