Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iops_benchmark-3.5.0.tar.gz (322.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iops_benchmark-3.5.0-py3-none-any.whl (246.3 kB view details)

Uploaded Python 3

File details

Details for the file iops_benchmark-3.5.0.tar.gz.

File metadata

  • Download URL: iops_benchmark-3.5.0.tar.gz
  • Upload date:
  • Size: 322.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for iops_benchmark-3.5.0.tar.gz
Algorithm Hash digest
SHA256 e946d79143d0cc3b8e9a8d4d58a654bf9410db49fe68b52118de0647c5b70ce8
MD5 bd3ce2fd372ca5f56c81de10701fa328
BLAKE2b-256 ed965eb2d4e7c2675e49c77c4a13e2773eaf8f1379f5d35af0ec6e8fcd1e5811

See more details on using hashes here.

File details

Details for the file iops_benchmark-3.5.0-py3-none-any.whl.

File metadata

  • Download URL: iops_benchmark-3.5.0-py3-none-any.whl
  • Upload date:
  • Size: 246.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for iops_benchmark-3.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14ebd45a4308f1aae35eff4726f4fdf22064f41ede1e0d4b7902d4fe8fe74336
MD5 00d943fb7c04858c8ef755962041f9de
BLAKE2b-256 6d50739fb8ff97bbdaa9595a6b02e0ca8cef966ce8da662795769a8db29c1da9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page