Conversation
Post-run analysis covered delivery and latency only, so the resource and mesh-health half of a regression report was hand-written per campaign: six scrape-and-plot scripts across the v2.2.0 runs, none of them in the repo. Bandwidth, memory, connections and mesh degree now come out of the run itself, off its own stable window.
479def0 to
989aecf
Compare
| class PlotSpec(NamedTuple): | ||
| name: str | ||
| metrics: List[str] | ||
| ylabel: str | ||
| scale: int | ||
| fig_size: List[int] |
There was a problem hiding this comment.
Is there any reason why we are using this and not src/analysis/plotting/config.py?
Because I have the feeling we are duplicating code here
There was a problem hiding this comment.
You are right. It has been a while since I created this but looking at this now I have no idea why I didn't use PlotConfig. Dropped it now in af1dee5
PlotSpec held name, metrics, ylabel, scale and fig_size, which PlotConfig already has, and plot_run_metrics copied field by field into one. The standard set is now PlotConfig templates the run copies and fills in with groups and the output path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
AlbertoSoutullo
left a comment
There was a problem hiding this comment.
_has_any() uses any(...), but MetricsPlotter processes every metric in template.metrics for every selected group. If a dump contains libp2p-in but not libp2p-out, it is included for the bandwidth plot and then fails when the missing metric produces an empty dataframe.
We shoudl make sure that all metrics exist for the plot, becuase if something is missing, it means that something weird happened.
The resource and mesh health figures now come out of the run.
Includes #384, which it needs to read a scrape dump; review that one first.
Related to #158