aboutsummaryrefslogtreecommitdiffstats
path: root/tools/syz-testbed
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-04-16 16:43:07 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-04-29 09:54:32 +0000
commit537827702dafc1f4308a4ed9c57f52b779406bcf (patch)
tree80bd1c086e6c4226b03f3f010d2fbf7dcfc24478 /tools/syz-testbed
parenta4122dfc7e3c556c64b5e07d3995b0e6cb856c27 (diff)
tools/syz-testbed: limit the number of graph data points
In long runs, it can be thousands of points for every single graph that we render. It's much more than is actually needed.
Diffstat (limited to 'tools/syz-testbed')
-rw-r--r--tools/syz-testbed/stats.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/syz-testbed/stats.go b/tools/syz-testbed/stats.go
index 1f6bb4443..d45982c2b 100644
--- a/tools/syz-testbed/stats.go
+++ b/tools/syz-testbed/stats.go
@@ -417,7 +417,19 @@ func (group *RunResultGroup) SaveAvgBenchFile(fileName string) error {
return err
}
defer f.Close()
- for _, averaged := range group.AvgStatRecords() {
+ // In long runs, we collect a lot of stat samples, which results
+ // in large and slow to load graphs. A subset of 128-256 data points
+ // seems to be a reasonable enough precision.
+ records := group.AvgStatRecords()
+ const targetRecords = 128
+ for len(records) > targetRecords*2 {
+ newRecords := make([]map[string]uint64, 0, len(records)/2)
+ for i := 0; i < len(records); i += 2 {
+ newRecords = append(newRecords, records[i])
+ }
+ records = newRecords
+ }
+ for _, averaged := range records {
data, err := json.MarshalIndent(averaged, "", " ")
if err != nil {
return err