@@ -79,25 +79,65 @@ func BenchmarkMetricIngest(b *testing.B) {
79
79
}
80
80
81
81
func BenchmarkNewSeriesIngestion (b * testing.B ) {
82
- seriesGen , err := testsupport .NewSeriesGenerator (10 , 100 , 4 )
83
- require .NoError (b , err )
84
-
85
- ts := seriesGen .GetTimeseries ()
82
+ benchmarks := []struct {
83
+ name string
84
+ numMetrics int
85
+ numSeriesPerMetric int
86
+ numLabelsPerMetric int
87
+ batchSize int
88
+ }{
89
+ {
90
+ name : "small series" ,
91
+ numMetrics : 100 ,
92
+ numSeriesPerMetric : 10 ,
93
+ numLabelsPerMetric : 4 ,
94
+ batchSize : 100 ,
95
+ },
96
+ {
97
+ name : "medium series" ,
98
+ numMetrics : 100 ,
99
+ numSeriesPerMetric : 100 ,
100
+ numLabelsPerMetric : 4 ,
101
+ batchSize : 1000 ,
102
+ },
103
+ {
104
+ name : "large series" ,
105
+ numMetrics : 100 ,
106
+ numSeriesPerMetric : 500 ,
107
+ numLabelsPerMetric : 4 ,
108
+ batchSize : 10000 ,
109
+ },
110
+ }
86
111
87
- withDB (b , "bench_e2e_new_series_ingest" , func (db * pgxpool.Pool , t testing.TB ) {
88
- metricsIngestor , err := ingestor .NewPgxIngestorForTests (pgxconn .NewPgxConn (db ), & ingestor.Cfg {
89
- NumCopiers : 8 ,
90
- InvertedLabelsCacheSize : cache .DefaultConfig .InvertedLabelsCacheSize ,
112
+ for _ , benchmark := range benchmarks {
113
+ benchName := fmt .Sprintf ("%s metrics %d seriesPerMetric %d labels %d batchSize %d" , benchmark .name , benchmark .numMetrics , benchmark .numSeriesPerMetric , benchmark .numLabelsPerMetric , benchmark .batchSize )
114
+ b .Run (benchName , func (b * testing.B ) {
115
+ seriesGen , err := testsupport .NewSeriesGenerator (benchmark .numMetrics , benchmark .numSeriesPerMetric , benchmark .numLabelsPerMetric )
116
+ require .NoError (b , err )
117
+
118
+ ts := seriesGen .GetTimeseriesInBatch (benchmark .batchSize )
119
+
120
+ for i := 0 ; i < b .N ; i ++ {
121
+ withDB (b , "bench_e2e_new_series_ingest" , func (db * pgxpool.Pool , t testing.TB ) {
122
+ metricsIngestor , err := ingestor .NewPgxIngestorForTests (pgxconn .NewPgxConn (db ), & ingestor.Cfg {
123
+ NumCopiers : 8 ,
124
+ InvertedLabelsCacheSize : cache .DefaultConfig .InvertedLabelsCacheSize ,
125
+ })
126
+ require .NoError (b , err )
127
+ defer metricsIngestor .Close ()
128
+
129
+ b .ReportAllocs ()
130
+ b .ResetTimer ()
131
+ for _ , t := range ts {
132
+ _ , _ , _ = metricsIngestor .Ingest (context .Background (), & prompb.WriteRequest {Timeseries : t })
133
+ }
134
+ b .StopTimer ()
135
+
136
+ numSeries := 0
137
+ require .NoError (b , db .QueryRow (context .Background (), "SELECT count(*) FROM _prom_catalog.series" ).Scan (& numSeries ))
138
+ require .Equal (b , benchmark .numMetrics * benchmark .numSeriesPerMetric , numSeries )
139
+ })
140
+ }
91
141
})
92
- require .NoError (b , err )
93
- defer metricsIngestor .Close ()
94
-
95
- b .ResetTimer ()
96
- b .ReportAllocs ()
97
- _ , _ , _ = metricsIngestor .Ingest (context .Background (), & prompb.WriteRequest {Timeseries : ts })
98
-
99
- numSeries := 0
100
- require .NoError (b , db .QueryRow (context .Background (), "SELECT count(*) FROM _prom_catalog.series" ).Scan (& numSeries ))
101
- require .Equal (b , 1000 , numSeries )
102
- })
142
+ }
103
143
}
0 commit comments