This repository provides two Docker images for running your LCM and eCAL Python-based benchmarking scripts:
-
debian-arm64
- Base: Debian (arm64)
- Builds eCAL from source
- Python + LCM installed via pip
-
ubuntu-x86_64
- Base: Ubuntu (x86_64)
- Installs eCAL from PPA
- Python + LCM installed via pip
Each image bundles your benchmarking scripts and allows you to run:
run-publisher-benchmark.bashrun-subscriber-benchmark.bash
- Docker (>= 20.10)
- Git (to clone this repo)
Make the generator script executable and run it from the project root:
chmod +x generate-docker-image.bash
./generate-docker-image.bashThis will detect your host architecture and build both images:
bench-debian-arm64bench-ubuntu-x86_64
You can also force a specific architecture:
ARCH=arm64 ./generate-docker-image.bash # only build Debian-arm64
ARCH=amd64 ./generate-docker-image.bash # only build Ubuntu-x86_64Mount your workspace into the container and execute the scripts:
docker run --rm -it --privileged --network=host --ipc=host \
-v "$(pwd)":/workspace \
bench-ubuntu-x86_64 \
bash -lc "cd /workspace && ./run-publisher-benchmark.bash"In a separate terminal, start the subscriber:
docker run --rm -it --privileged --network=host --ipc=host \
-v "$(pwd)":/workspace \
bench-ubuntu-x86_64 \
bash -lc "cd /workspace && ./run-subscriber-benchmark.bash"Replace bench-debian-arm64 with bench-ubuntu-x86_64 if desired.
Both scripts will write their YAML reports into the results/ directory on your host.
Dockerfile.debian_arm64– builds eCAL from source on Debian/arm64Dockerfile.ubuntu_x86_64– installs eCAL from PPA on Ubuntu/amd64generate-docker-image.bash– builds images based on host archrun-publisher-benchmark.bash– executes publisher script across message sizesrun-subscriber-benchmark.bash– executes subscriber scriptbenchmark_publisher.py– Python publisher benchmarkbenchmark_subscriber.py– Python subscriber benchmarkbenchmark.py– common utilities (serialization, stats)bench_pb2.py– Protobuf definitionslcmtypes/bench_t.lcm– LCM type definitions
- The first message in each run is ignored in saved reports to avoid skew from startup overhead.
- Scripts use KiB (1024 bytes) units for message sizes.
- Ensure clocks are synchronized (NTP/PTP) if comparing one-way latencies across machines.