Running benchmarks#
The benchmark module measures end-to-end performance of the Meta processing pipeline, from CSV input to triplestore upload.
Usage#
uv run python -m oc_meta.run.benchmark -c <CONFIG> [options]
Parameters#
Parameter |
Default |
Description |
|---|---|---|
|
Required |
Path to benchmark config YAML |
|
None |
Generate N synthetic records. Multiple values for scalability analysis |
|
1 |
Execute benchmark multiple times for statistical analysis |
|
42 |
Random seed for reproducible data |
|
False |
Generate new data for each run |
|
False |
Skip database reset after benchmark |
|
False |
Test graph diff performance (preload partial, then complete data) |
|
None |
Preload BR with N authors before benchmark |
Examples#
Single run with 100 synthetic records:
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 100
Statistical analysis with 5 runs:
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 100 --runs 5
Scalability analysis across multiple sizes:
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 10 50 100 500 --runs 3
Update scenario (tests graph diff when updating existing entities):
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 100 --update-scenario
High-author stress test (simulates ATLAS paper with 2869 authors):
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --preload-high-authors 2869
Output#
Reports are saved in oc_meta/run/benchmark/reports/:
benchmark_<size>.json- raw timing data and statisticsbenchmark_<size>.png- phase breakdown and throughput charts
Metrics collected#
Total duration
Throughput (records/sec)
Per-phase timing: curation (collect IDs, clean, merge), RDF creation, storage
Memory usage per phase
95% confidence intervals (with multiple runs)
Outlier detection