Skip to content

Add iozone processor for benchmark result export #16

Description

@sayalibhavsar

Problem

Chronicler does not have a processor for iozone benchmark results. When the CPT pipeline runs iozone and attempts to export via chronicler, it fails with:

WARNING - Unknown test type: iozone
SKIPPED: Unknown test type

Context

Iozone is already supported by zathras/burden and the iozone-wrapper produces structured output:

  • results_iozone.csv — CSV with system metadata in comments + 15 result rows (3 filesystems × 5 test modes)
  • results_iozone.json — JSON array of the same data
  • test_results_report — PASS/FAIL status

Each result row contains 14 performance metrics (geometric means in MB/s):
all_ios, initwrite, rewrite, read, reread, rndread, rndwrite, backread, recrewrite, strideread, fwrite, frewrite, fread, freread

Grouped by filesystem (xfs, ext4, ext3) and test mode (incache, incache+fsync, incache+mmap, directio, outcache).

Current Workaround

Manual upload script that reads results_iozone.json and results_iozone.csv header metadata, builds an OpenSearch document matching the zathras schema, and uploads to the zathras-results index.

Requested

An iozone_processor.py in src/chronicler/processors/ that:

  1. Parses results_iozone.json (or .csv) for performance data
  2. Extracts system metadata from CSV header comments (CPU family, cores, memory, OS, tuned profile)
  3. Creates one summary document with 15 runs (one per filesystem+mode combination)
  4. Each run contains the 14 iozone metrics
  5. Handles NaN values (fwrite/frewrite/fread/freread are NaN for directio and mmap modes)
  6. Sets results.status from test_results_report

Notes

  • Matt Lucius is currently splitting iozone into two benchmarks in zathras (auto mode vs throughput mode) — the processor may need to handle both output formats
  • The iozone-wrapper v4.0 output format includes validated JSON via Pydantic schemas (results_iozone_auto_schema.py)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions