MCPcopy
hub / github.com/prometheus/prometheus / BenchmarkQueryIterator

Function BenchmarkQueryIterator

tsdb/querier_test.go:2657–2718  ·  view source on GitHub ↗
(b *testing.B)

Source from the content-addressed store, hash-verified

2655}
2656
2657func BenchmarkQueryIterator(b *testing.B) {
2658 cases := []struct {
2659 numBlocks int
2660 numSeries int
2661 numSamplesPerSeriesPerBlock int
2662 overlapPercentages []int // >=0, <=100, this is w.r.t. the previous block.
2663 }{
2664 {
2665 numBlocks: 20,
2666 numSeries: 1000,
2667 numSamplesPerSeriesPerBlock: 20000,
2668 overlapPercentages: []int{0, 10, 30},
2669 },
2670 }
2671
2672 for _, c := range cases {
2673 for _, overlapPercentage := range c.overlapPercentages {
2674 benchMsg := fmt.Sprintf("nBlocks=%d,nSeries=%d,numSamplesPerSeriesPerBlock=%d,overlap=%d%%",
2675 c.numBlocks, c.numSeries, c.numSamplesPerSeriesPerBlock, overlapPercentage)
2676
2677 b.Run(benchMsg, func(b *testing.B) {
2678 dir := b.TempDir()
2679
2680 var (
2681 blocks []*Block
2682 overlapDelta = int64(overlapPercentage * c.numSamplesPerSeriesPerBlock / 100)
2683 prefilledLabels []map[string]string
2684 generatedSeries []storage.Series
2685 )
2686 for i := int64(0); i < int64(c.numBlocks); i++ {
2687 offset := i * overlapDelta
2688 mint := i*int64(c.numSamplesPerSeriesPerBlock) - offset
2689 maxt := mint + int64(c.numSamplesPerSeriesPerBlock) - 1
2690 if len(prefilledLabels) == 0 {
2691 generatedSeries = genSeries(c.numSeries, 10, mint, maxt)
2692 for _, s := range generatedSeries {
2693 prefilledLabels = append(prefilledLabels, s.Labels().Map())
2694 }
2695 } else {
2696 generatedSeries = populateSeries(prefilledLabels, mint, maxt)
2697 }
2698 block, err := OpenBlock(nil, createBlock(b, dir, generatedSeries), nil, nil)
2699 require.NoError(b, err)
2700 blocks = append(blocks, block)
2701 defer block.Close()
2702 }
2703
2704 qblocks := make([]storage.Querier, 0, len(blocks))
2705 for _, blk := range blocks {
2706 q, err := NewBlockQuerier(blk, math.MinInt64, math.MaxInt64)
2707 require.NoError(b, err)
2708 qblocks = append(qblocks, q)
2709 }
2710
2711 sq := storage.NewMergeQuerier(qblocks, nil, storage.ChainedSeriesMerge)
2712 defer sq.Close()
2713
2714 benchQuery(b, c.numSeries, sq, labels.Selector{labels.MustNewMatcher(labels.MatchRegexp, "__name__", ".*")})

Callers

nothing calls this directly

Calls 12

NewMergeQuerierFunction · 0.92
MustNewMatcherFunction · 0.92
genSeriesFunction · 0.85
populateSeriesFunction · 0.85
OpenBlockFunction · 0.85
createBlockFunction · 0.85
NewBlockQuerierFunction · 0.85
benchQueryFunction · 0.85
MapMethod · 0.80
RunMethod · 0.65
LabelsMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…