metview.py roadmap
Per-run metrics grapher. Successor to osm-metrics.py. Reads the results database and writes one time-series PNG per metric under results/images/.
Status
Works-for-me quality: useful for educational material and tuning write-ups. Database-driven generation is slow; image polish still needed.
Goal
Replace gnuplot per-run metric graphs (plots/dirty.plot, etc.) and eventually support the same views webreport produces—without requiring gnuplot.
Done
- Graph every decoded metric for one
(server, test)pair - Plain decimal Y-axis labels (no scientific notation)
- Inherit pgbent metrics conversion (
metrics_infomultipliers, units, labels)
Next
- Minimal / verbose split — default to TPS, latency, dirty memory (traditional pgbent highlights);
--verbosefor all metrics - Legend — show min/avg/max, not avg three times
- Layout — bottom of graph clipped on rotated x-axis labels
- CLI — database connection via options, not hard-coded DSN
- SQL — parameterized queries instead of string formatting
- Aggregation — choose
dbaggfrom test duration, not fixed'second' - Latency outliers — per-point markers like gnuplot cross symbols (
plots/latency.plot); aggregated min/max/avg is not the same visual
Later (webreport parity)
- Options to select
graph_singlevsgraph_group(latency bundle) - Python replacement for
webreporttest-set comparison graphs (plotting.md)
Out of scope
- Rewriting
benchwarmer/runsetshell orchestration - Sponsor logo overlay (code exists but disabled)
Usage
python3 metview.py <server> <test>
# defaults: server=twilight, test=2576
Code notes
Implementation TODOs in metview.py should stay local to that file. Cross-cutting roadmap items belong in this document.