Published November 6, 2022 | Version 1.0.0
Software Open

Leaps and bounds: Analysing WebAssembly's performance with a focus on bounds checking

  • 1. University of Edinburgh, United Kingdom
  • 2. University of St Andrews, United Kingdom

Description

Leaps and bounds: Analysing WebAssembly’s performance with a focus on bounds checking - Source code and experimental data bundle

This is the code&data bundle accompanying the IISWC2022 paper "Leaps and bounds: Analysing WebAssembly’s performance with a focus on bounds checking" by Raven Szewczyk, Kim Stonehouse, Antonio Barbalace and Tom Spink.

The bundle is archived in the wasmbounds-oss-v1.0.0.tar.gz file, and the other tar.gz files are pre-built Docker-compatible OCI container images that can be used to reproduce benchmark results on new machines.

Contents of the main bundle:

  1. graphs/plots: Plots used in the paper
  2. graphs/wasmbounds.Rmd, graphs/knitall.R: R source code used to generate the plots
  3. runs/kone.csv, runs/sole.csv, runs/riscv.csv: Raw experimental data used to generate the plots in the CSV (comma-separated value) format (kone = x86_64 machine, sole = armv8 machine, riscv = Nezha D1 RISC-V development board)
    • These are gzipped in the GitHub version of this archive due to file size limitations, make sure to unzip them before using any of the scripts
  4. patches-{polybenchc,speccpu2017}.patch: Our patches to the Polybench/C and SPECcpu2017 benchmark suites to make them compatible with WebAssembly
  5. patches-{nodev8,wasm3,wasmtime,wavm}.patch: Our patches to the WebAssembly runtimes evaluated in the paper adding support for alternative bounds checking methods and integrating them with our benchmarking harness
  6. runner-src/*, CMakeLists.txt, CMakePresets.json: C++ Source code for the benchmarking harness, including the UserfaultFD memory arena manager
  7. statmon/*: Rust source code for the system resource usage and CPU performance counter monitoring tool used to generate the data for the paper
  8. scripts/*, *.sh: Utility scripts for compiling the benchmark suites, harness and running benchmarks
  9. Dockerfile.*, Bakefile-*.hcl: Docker container definitions for reproducible benchmark running conditions
  10. cpp-libs/fmt, node-v18.2.0, polybench-c-4.2, wasm3-0.5.0, wasmtime, WAVM - already patched open source third party libraries and WebAssembly runtimes used in the paper
  11. Not included: spec-cpu - an installation of the SPECcpu2017 benchmark suite, not included due to licensing restrictions but patches are provided for users who hold a license

More information in the README.MD file in the bundle.

Files

Files (4.8 GB)

Name Size Download all
md5:fe79559f663489958a0a9f6ff75a45aa
307.0 MB Download
md5:7947e40d2f8ce9079fb4b1e8d631c16a
295.1 MB Download
md5:6b481b68ca7ec97517db29b63912732e
277.3 MB Download
md5:4ee393c5752fea430e331151f75d49ed
316.2 MB Download
md5:c27bc157ff68e7c420d214bdc56df9e2
244.7 MB Download
md5:222b244e47c2763efccd4267b3b69381
230.8 MB Download
md5:7221865d548b55967af65224600efbae
263.9 MB Download
md5:a154c9c29fb17ccfa4912821febcd1d4
881.9 MB Download
md5:8740c94044b4ca4ff47b769a3fb383f9
1.0 GB Download
md5:992bc15b23d3afd746d1bf93fcb87dd1
944.1 MB Download

Additional details

Related works

Is identical to
Software: https://github.com/wasmbounds/wasmbounds/releases/tag/v1.0.0 (URL)
Is supplement to
Conference paper: 10.1109/IISWC55918.2022.00030 (DOI)
Conference paper: https://ieeexplore.ieee.org/document/9975418 (URL)