#
Logo

Streaming Processing Benchmark for
High Performance Computing Systems


View Demo | Report Bug | Request Feature

Table of Contents
  1. About The Project
  2. Software Stack
  3. Getting Started
  4. Usage
  5. About Benchmark
  6. Roadmap
  7. Contributing
  8. License
  9. Contact
  10. Acknowledgments
## About The Project This is benchmark designed to understand performance of different streaming frameworks on Slurm based HPC systems.

(back to top)

## Software Stack Following software and frameworks are used to build the benchmark ### Core software | Technology | Version | Description | | --- | --- | --- | | [![Java][Java-image]][Java-url] | 11 | Core programming language | |[![Apache Maven][Maven-image]][Maven-url] | 3.9.6 | Build automation tool for Java application | ### Message broker | Technology | Version | Description | | --- | --- | --- | |[![Apache Kafka][Kafka-image]][Kafka-url] | 3.6.1 | Message broker for distributed streaming and event-driven architectures | ### Streaming software | Technology | Version | Description | Status | | --- | --- | --- | --- | | [![Apache Flink][Flink-image]][Flink-url] | 1.19.1 | Distributed streaming engine | Available | |[![Apache Spark][Spark-image]][Spark-url] | 3.5.0 | Unified streaming engine | Available | | [![Apache Kafka][Kafka-image]][Kafka-url] | 3.6.1 | Distributed streaming platform | Available | | [![Windflow][WindFlow-image]][WindFlow-url] | 4.2.2 | | [WIP] | ### System support | System | Os/Software version | Description | Status | | --- | --- | --- | --- | | Local machine | Linux | | Available | | SLURM based HPC | Linux/slurm-23.03 | | Available |

(back to top)

## Getting Started ### Prerequisites The setup requires the following packages to be installed on the system as prerequisites: - **wget**: a command-line utility for downloading files from the internet - **git**: a version control system for managing code repositories - **python**: a programming language interpreter - **venv** (or virtualenv): a tool for creating isolated Python environments To install these packages, follow the instructions for your operating system: - Ubuntu/Debian-based systems ```bash sudo apt update sudo apt install wget git python3 python3-venv ``` - Red Hat/Fedora-based systems ```bash sudo dnf install wget git python3 python3-venv ``` - macOS (with Homebrew) ```bash brew install wget git python ``` Note: venv is included in the Python installation on macOS. Once you have installed all the required packages, you can proceed with benchmark installation. ### Installation One can setup the benchmark on required syetem using: ```sh ./runner.sh --system_type localmachine --setup ``` You can use the provided default configuration [file](./default_config.yaml) for the inspiration for creating own configuration file. Once the setup is complete, the source code can be compiled using: ```sh ./runner.sh --system_type localmachine --compile ``` ![benchmark_run](./doc_res/benchmark_setup.gif)

(back to top)

## Usage You can use `runner.sh` scritp to start the benchmark in following ways: ```bash $ ./runner.sh -h Usage: runner.sh [OPTIONS] Description: The entry point script that controls the installation and execution of the benchmark. Options: --setup Setup the benchmark to install required software. Requires --system_type and --conf_file. --compile Compile the benchmark source code. Requires --system_type and --conf_file --system_type, -s The system type where the benchmark is running (localmachine, slurm_interactive,slurm_batch) --output_dir, -o The directory where benchmark output will be stored --conf_file, -c The path to the experiment main configuration file Usage examples: Setup : runner.sh --setup --system_type --conf_file Compile : runner.sh --compile --system_type --conf_file Run : runner.sh --system_type [options] ``` Edit the configuration file as per requirement. Then setup the benchmark. Once the setup is complete, compile the source code. Then the benchmark can be started as follows (minimal working example): ```bash ./runner.sh --system_type localmachine ``` ![](./doc_res/benchmark_run.gif)

(back to top)

## About Benchmark ### Workflow Benhcmark consist of following workflow: ![](./doc_res/benchmark_workflow.png) and consist of following three pipelines ![](./doc_res/benchmark_pipeline.png)

(back to top)

## Roadmap - [ ] Complete support for - [ ] Windflow - [ ] Apache Storm - [ ] Hazelcast - [ ] Nebulastream - [ ] Apache Beam - [ ] Add support for other sytems like Torch - [ ] Add support for other data processing pipelines that are ML/DL focussed See the open issues for a full list of proposed features (and known issues).

(back to top)

## Contribution Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again! 1. Fork the Project 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the Branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request

(back to top)

## License Distributed under the **MIT LICENSE**. See [LICENSE](./LICENSE) for more information.

(back to top)

## Acknowledgments * [ScaDS.AI](https://scads.ai)

(back to top)

## Citation If you use this repository, please cite the following paper: ```bibtex @misc{kulkarni2025sprobenchstreamprocessingbenchmark, title={SProBench: Stream Processing Benchmark for High Performance Computing Infrastructure}, author={Apurv Deepak Kulkarni and Siavash Ghiasvand}, year={2025}, eprint={2504.02364}, archivePrefix={arXiv}, primaryClass={cs.DC}, url={https://arxiv.org/abs/2504.02364}, } ``` [contributors-shield]: https://img.shields.io/github/contributors/othneildrew/Best-README-Template.svg?style=for-the-badge [contributors-url]: https://github.com/othneildrew/Best-README-Template/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/othneildrew/Best-README-Template.svg?style=for-the-badge [forks-url]: https://github.com/othneildrew/Best-README-Template/network/members [stars-shield]: https://img.shields.io/github/stars/othneildrew/Best-README-Template.svg?style=for-the-badge [stars-url]: https://github.com/othneildrew/Best-README-Template/stargazers [issues-shield]: https://img.shields.io/github/issues/othneildrew/Best-README-Template.svg?style=for-the-badge [issues-url]: https://github.com/othneildrew/Best-README-Template/issues [license-shield]: https://img.shields.io/github/license/othneildrew/Best-README-Template.svg?style=for-the-badge [license-url]: https://github.com/othneildrew/Best-README-Template/blob/master/LICENSE.txt [Java-image]: https://img.shields.io/badge/Java-grey?style=for-the-badge&logo=java [Java-url]: https://www.java.com/ [Maven-image]: https://img.shields.io/badge/Apache_Maven-grey?style=for-the-badge&logo=apachemaven [Maven-url]: https://maven.apache.org/ [Flink-image]: https://img.shields.io/badge/Apache_Flink-grey?style=for-the-badge&logo=apacheflink [Flink-url]: https://flink.apache.org/ [Spark-image]: https://img.shields.io/badge/Apache_Spark-grey?style=for-the-badge&logo=apachespark [Spark-url]: https://spark.apache.org/ [Kafka-image]: https://img.shields.io/badge/Apache_Kafka-grey?style=for-the-badge&logo=apachekafka [Kafka-url]: https://kafka.apache.org/ [WindFlow-image]: https://img.shields.io/badge/WindFlow-grey?style=for-the-badge&logo=windflow [WindFlow-url]: https://github.com/ParaGroup/WindFlow