Data Sources

This page documents where IOPS CLI commands read their data.

Overview

IOPS commands read from result files and from metadata files generated during execution. Metadata files have the __iops_ prefix and are documented in the Metadata Files user guide.

Data Sources by Command

iops find ◄─── __iops_index.json
          ◄─── __iops_status_rollup.json (preferred; falls back to per-folder scan)
          ◄─── __iops_status.json (fallback)
          ◄─── __iops_run_metadata.json (optional metadata)

iops find --watch ◄─── __iops_index.json (polling)
                  ◄─── __iops_status_rollup.json (preferred; polling)
                  ◄─── __iops_status.json (fallback scan)

iops report ◄─── __iops_run_metadata.json
            ◄─── results.csv/parquet/sqlite

Status roll-up fast path

Both iops find and watch mode read the run-root __iops_status_rollup.json aggregate instead of scanning every execution’s repetition folders, which keeps them responsive on large parameter spaces. The per-folder __iops_status.json files remain the source of truth (and the node-to-runner channel in single-allocation mode); the roll-up is an accelerator. Watch always prefers it; iops find only trusts it when the run marked it complete, otherwise it falls back to the folder scan. When the roll-up is absent (older runs, archives), both fall back automatically.

iops find

InformationSource FileLocationField(s)Notes
Benchmark name__iops_index.jsonRun rootbenchmark
Execution list__iops_index.jsonRun rootexecutionsDict keyed by exec_XXXX
Execution path__iops_index.jsonRun rootexecutions[key].pathRelative to run root
Parameters__iops_index.jsonRun rootexecutions[key].params
Command__iops_index.jsonRun rootexecutions[key].commandShown with --show-command
Execution status__iops_status.jsonexec_XXXX or repetition_NstatusAggregated from repetitions
Error message__iops_status.jsonexec_XXXX or repetition_Nerror
End time__iops_status.jsonexec_XXXX or repetition_Nend_time
Cache status__iops_status.jsonrepetition_NcachedTrue/False/“partial”
Skip reason__iops_status.jsonexec_XXXXreasonOnly for SKIPPED tests
Description__iops_run_metadata.jsonRun rootbenchmark.description
Hostname__iops_run_metadata.jsonRun rootbenchmark.hostname
Timestamp__iops_run_metadata.jsonRun rootbenchmark.timestamp

Single execution view (when pointing to exec_XXXX folder):

InformationSource FileLocationField(s)
Parameters__iops_params.jsonexec_XXXXAll fields
Command__iops_index.jsonRun rootexecutions[key].command

iops find --watch

Watch mode is designed to work during execution, so it only reads from files that exist before the benchmark completes. It does not read from __iops_run_metadata.json (which is written at the end).

InformationSource FileLocationField(s)Notes
Benchmark name__iops_index.jsonRun rootbenchmark
Execution list__iops_index.jsonRun rootexecutions
Total expected__iops_index.jsonRun roottotal_expectedTotal repetitions across all tests
Repetitions__iops_index.jsonRun rootrepetitionsPer-test repetition count
Folders upfront__iops_index.jsonRun rootfolders_upfrontTrue if folders created upfront
Active tests__iops_index.jsonRun rootactive_testsTests that will execute
Skipped tests__iops_index.jsonRun rootskipped_testsTests skipped by constraints
Test status (upfront)__iops_index.jsonRun rootexecutions[key].statusOnly in upfront mode
Skip reason (upfront)__iops_index.jsonRun rootexecutions[key].skip_reasonOnly in upfront mode
Execution path__iops_index.jsonRun rootexecutions[key].path
Parameters__iops_index.jsonRun rootexecutions[key].params
Command__iops_index.jsonRun rootexecutions[key].command
Repetition status__iops_status.jsonrepetition_NstatusPer-repetition status
Cache status__iops_status.jsonrepetition_Ncached
Duration__iops_status.jsonrepetition_Nduration_secondsActual execution time
Error message__iops_status.jsonrepetition_Nerror
Metrics__iops_status.jsonrepetition_NmetricsDict of metric values (with –metrics flag)
Skip reason__iops_status.jsonexec_XXXXreasonFor SKIPPED tests

iops report

The report command reads from the run metadata file and the results output file. It does not read from index or status files.

InformationSource FileLocationField(s)Notes
IOPS version__iops_run_metadata.jsonRun rootiops_versionFor compatibility check
Benchmark config__iops_run_metadata.jsonRun rootbenchmark.*Name, description, executor, etc.
Variables config__iops_run_metadata.jsonRun rootvariablesVariable definitions and sweep info
Metrics config__iops_run_metadata.jsonRun rootmetricsMetric names and parser info
Output config__iops_run_metadata.jsonRun rootoutputPath and type of results file
Reporting config__iops_run_metadata.jsonRun rootreportingPlot configs, sections, theme
System environment__iops_run_metadata.jsonRun rootsystem_environmentCPU, memory, hostname, etc.
Planner stats__iops_run_metadata.jsonRun rootbenchmark.planner_statsTotal/active/skipped combinations
Results dataResults fileoutput.pathAll columnsCSV, Parquet, or SQLite
Execution statusResults fileoutput.pathmetadata.__executor_statusFilters to SUCCEEDED only
DurationResults fileoutput.pathmetadata.__sysinfo.duration_secondsFor runtime calculations
TimestampsResults fileoutput.pathmetadata.__job_start, metadata.__submission_time, metadata.__endFallback for duration

Results file types:

TypeRead MethodNotes
CSVpd.read_csv()Default format
Parquetpd.read_parquet()Requires pyarrow
SQLitepd.read_sql_query()Reads from output.table

File Locations

workdir/
  run_001/                              # Run root
    __iops_index.json                   # Index file (find, watch)
    __iops_run_metadata.json            # Run metadata (find, report)
    results.csv                         # Results file (report)
    exec_0001/                          # Execution folder
      __iops_params.json                # Parameter values (find single)
      __iops_status.json                # Test-level status (SKIPPED only)
      repetition_1/
        __iops_status.json              # Repetition status (find, watch)
        __iops_sysinfo.json             # System info (stored in results)
      repetition_2/
        ...
    exec_0002/
      ...

Source Code References

ModuleFilePurpose
findiops/results/find.pyStatic execution listing
watchiops/results/watch.pyLive execution monitoring
reportiops/reporting/report_generator.pyHTML report generation

Key Functions

find.py:

  • find_executions() - Main entry point
  • _read_status() - Reads and aggregates status from status files
  • _read_run_metadata() - Reads run metadata file
  • _show_executions_from_index() - Displays execution table

watch.py:

  • watch_executions() - Main entry point with live updates
  • _load_index() - Loads index file with execution metadata
  • _collect_execution_data() - Collects current status from all executions
  • _build_table() - Builds Rich table for display
  • _build_progress_bar() - Builds progress bar with status counts

report_generator.py:

  • ReportGenerator.__init__() - Initializes with workdir path
  • load_metadata() - Loads __iops_run_metadata.json
  • load_results() - Loads results from CSV/Parquet/SQLite
  • generate_report() - Generates HTML report

Data Flow Diagrams

During Execution

Runner
  │
  ├──► __iops_index.json (updated incrementally)
  │
  ├──► exec_XXXX/
  │      ├──► __iops_params.json (before test)
  │      └──► __iops_status.json (if SKIPPED)
  │
  └──► exec_XXXX/repetition_N/
         ├──► __iops_status.json (after completion)
         └──► __iops_sysinfo.json (via probe script)

After Execution

Runner
  │
  ├──► __iops_run_metadata.json (at end)
  │
  └──► results.csv (incrementally during execution)