MCPcopy
hub / github.com/prometheus/prometheus / BenchmarkStoreSeries

Function BenchmarkStoreSeries

storage/remote/queue_manager_test.go:1352–1403  ·  view source on GitHub ↗

Check how long it takes to add N series, including external labels processing.

(b *testing.B)

Source from the content-addressed store, hash-verified

1350
1351// Check how long it takes to add N series, including external labels processing.
1352func BenchmarkStoreSeries(b *testing.B) {
1353 externalLabels := []labels.Label{
1354 {Name: "cluster", Value: "mycluster"},
1355 {Name: "replica", Value: "1"},
1356 }
1357 relabelConfigs := []*relabel.Config{{
1358 SourceLabels: model.LabelNames{"namespace"},
1359 Separator: ";",
1360 Regex: relabel.MustNewRegexp("kube.*"),
1361 TargetLabel: "job",
1362 Replacement: "$1",
1363 Action: relabel.Replace,
1364 NameValidationScheme: model.UTF8Validation,
1365 }}
1366 testCases := []struct {
1367 name string
1368 externalLabels []labels.Label
1369 ts []prompb.TimeSeries
1370 relabelConfigs []*relabel.Config
1371 }{
1372 {name: "plain"},
1373 {name: "externalLabels", externalLabels: externalLabels},
1374 {name: "relabel", relabelConfigs: relabelConfigs},
1375 {
1376 name: "externalLabels+relabel",
1377 externalLabels: externalLabels,
1378 relabelConfigs: relabelConfigs,
1379 },
1380 }
1381
1382 // numSeries chosen to be big enough that StoreSeries dominates creating a new queue manager.
1383 const numSeries = 1000
1384 recs := testwal.GenerateRecords(recCase{Series: numSeries, SamplesPerSeries: 0, ExtraLabels: extraLabels})
1385
1386 for _, tc := range testCases {
1387 b.Run(tc.name, func(b *testing.B) {
1388 for b.Loop() {
1389 c := NewTestWriteClient(remoteapi.WriteV1MessageType)
1390 dir := b.TempDir()
1391 cfg := config.DefaultQueueConfig
1392 mcfg := config.DefaultMetadataConfig
1393 metrics := newQueueManagerMetrics(nil, "", "")
1394
1395 m := NewQueueManager(metrics, nil, nil, nil, dir, newEWMARate(ewmaWeight, shardUpdateDuration), cfg, mcfg, labels.EmptyLabels(), nil, c, defaultFlushDeadline, newPool(), newHighestTimestampMetric(), nil, false, false, false, remoteapi.WriteV1MessageType, record.NewBuffersPool())
1396 m.externalLabels = tc.externalLabels
1397 m.relabelConfigs = tc.relabelConfigs
1398
1399 m.StoreSeries(recs.Series, 0)
1400 }
1401 })
1402 }
1403}
1404
1405func TestProcessExternalLabels(t *testing.T) {
1406 b := labels.NewBuilder(labels.EmptyLabels())

Callers

nothing calls this directly

Calls 12

StoreSeriesMethod · 0.95
MustNewRegexpFunction · 0.92
GenerateRecordsFunction · 0.92
EmptyLabelsFunction · 0.92
NewBuffersPoolFunction · 0.92
NewTestWriteClientFunction · 0.85
newQueueManagerMetricsFunction · 0.85
NewQueueManagerFunction · 0.85
newEWMARateFunction · 0.85
newPoolFunction · 0.85
RunMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…