Skip to main content

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.

Metadata

Release files for iops-benchmark 3.5.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iops-benchmark 3.5.9
File Size Uploaded Provenance
iops_benchmark-3.5.9.tar.gz 690.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for iops-benchmark 3.5.9
File Interpreter ABI Platform
iops_benchmark-3.5.9-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / iops_benchmark-3.5.9.tar.gz

Download URL iops_benchmark-3.5.9.tar.gz
Size 690.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c8ed2e3ff9c51c6b51935d7b11dd01ba8f1892af4a3ec6cf26c969e84cf1c792
BLAKE2b-256 checksum
How to use checksums
7adf2729602cbb4abc804f1d8147d0692ae8c11e355d0d8cc8585cb0f2a5d67d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / iops_benchmark-3.5.9-py3-none-any.whl

Download URL iops_benchmark-3.5.9-py3-none-any.whl
Size 542.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed4742d4c90dace1c12b103aa49878de7faf7fdce09287f4c6881ea88b4d32d3
BLAKE2b-256 checksum
How to use checksums
623f7c0fa3e6a1586161ffb4beeb323920a664b9c69a7114074de1f0a5e35e04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Security for iops-benchmark 3.5.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page