A generic benchmark orchestration framework for automated parametric experiments
Project description
IOPS
A generic benchmark orchestration framework for automated parametric experiments.
IOPS transforms benchmark experiments from manual scripting into automated, reproducible workflows. Define a YAML configuration describing what to vary, what to run, and what to measure—IOPS handles the rest.
Features
- Parameter Sweeping — Automatically generate and execute tests for all parameter combinations
- Multiple Search Strategies — Exhaustive, Bayesian optimization, or random sampling
- Execution Backends — Run locally or submit to SLURM clusters
- Smart Caching — Skip redundant tests with parameter-aware result caching
- Budget Control — Set core-hour limits to avoid exceeding compute allocations
- Automatic Reports — Generate interactive HTML reports with plots and statistical analysis
Quick Start
# Generate a configuration template
iops generate my_config.yaml
# Preview what will be executed
iops run my_config.yaml --dry-run
# Run the benchmark
iops run my_config.yaml
# Explore executions and filter by parameters
iops find ./workdir/run_001
iops find ./workdir/run_001 threads=4 buffer_size=256
# Generate an HTML report
iops report ./workdir/run_001
Example Configuration
benchmark:
name: "My Benchmark Study"
workdir: "./workdir"
executor: "local"
repetitions: 3
vars:
threads:
type: int
sweep:
mode: list
values: [1, 2, 4, 8]
buffer_size:
type: int
sweep:
mode: list
values: [64, 256, 1024]
command:
template: "my_benchmark --threads {{ threads }} --buffer {{ buffer_size }}"
scripts:
- name: "benchmark"
submit: "bash"
script_template: |
#!/bin/bash
# Built-in variables: execution_id, execution_dir, repetition
echo "Running execution {{ execution_id }}, repetition {{ repetition }}"
{{ command.template }} > output.txt
parser:
# execution_dir is automatically set to each execution's folder
file: "{{ execution_dir }}/output.txt"
metrics:
- name: throughput
parser_script: |
import re
def parse(file_path: str):
with open(file_path) as f:
content = f.read()
match = re.search(r"throughput:\s*([\d.]+)", content)
return {"throughput": float(match.group(1)) if match else 0}
output:
sink:
type: csv
path: "{{ workdir }}/results.csv"
Documentation
Full documentation, examples, and tutorials: https://lgouveia.gitlabpages.inria.fr/iops/
License
BSD-3-Clause — Developed at Inria.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iops_benchmark-3.5.8.tar.gz.
File metadata
- Download URL: iops_benchmark-3.5.8.tar.gz
- Upload date:
- Size: 460.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04b77c9513702d081fd0af3ba48211dace4bb4425482e51c17684832f2970984
|
|
| MD5 |
44698ea953094b7ca68f241baf273f08
|
|
| BLAKE2b-256 |
af22b679b7e4e582597a46cf31f2b3662280d705ed1ff56bfc0dd24fe9973c0d
|
File details
Details for the file iops_benchmark-3.5.8-py3-none-any.whl.
File metadata
- Download URL: iops_benchmark-3.5.8-py3-none-any.whl
- Upload date:
- Size: 332.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fbf73d0726fc3fa7d77751c1d9418e95ec6bf4ae33ce4745505bad779d5136c
|
|
| MD5 |
93a9b395cff2b5b5a0f92b6dd2fb6816
|
|
| BLAKE2b-256 |
0253599e2f4056ce4c3c922b28a4d934a5200e4c1af14f10f4a24d895fa68b6a
|