(b *testing.B)
| 2718 | } |
| 2719 | |
| 2720 | func BenchmarkQuerySeek(b *testing.B) { |
| 2721 | cases := []struct { |
| 2722 | numBlocks int |
| 2723 | numSeries int |
| 2724 | numSamplesPerSeriesPerBlock int |
| 2725 | overlapPercentages []int // >=0, <=100, this is w.r.t. the previous block. |
| 2726 | }{ |
| 2727 | { |
| 2728 | numBlocks: 20, |
| 2729 | numSeries: 100, |
| 2730 | numSamplesPerSeriesPerBlock: 2000, |
| 2731 | overlapPercentages: []int{0, 10, 30, 50}, |
| 2732 | }, |
| 2733 | } |
| 2734 | |
| 2735 | for _, c := range cases { |
| 2736 | for _, overlapPercentage := range c.overlapPercentages { |
| 2737 | benchMsg := fmt.Sprintf("nBlocks=%d,nSeries=%d,numSamplesPerSeriesPerBlock=%d,overlap=%d%%", |
| 2738 | c.numBlocks, c.numSeries, c.numSamplesPerSeriesPerBlock, overlapPercentage) |
| 2739 | |
| 2740 | b.Run(benchMsg, func(b *testing.B) { |
| 2741 | dir := b.TempDir() |
| 2742 | |
| 2743 | var ( |
| 2744 | blocks []*Block |
| 2745 | overlapDelta = int64(overlapPercentage * c.numSamplesPerSeriesPerBlock / 100) |
| 2746 | prefilledLabels []map[string]string |
| 2747 | generatedSeries []storage.Series |
| 2748 | ) |
| 2749 | for i := int64(0); i < int64(c.numBlocks); i++ { |
| 2750 | offset := i * overlapDelta |
| 2751 | mint := i*int64(c.numSamplesPerSeriesPerBlock) - offset |
| 2752 | maxt := mint + int64(c.numSamplesPerSeriesPerBlock) - 1 |
| 2753 | if len(prefilledLabels) == 0 { |
| 2754 | generatedSeries = genSeries(c.numSeries, 10, mint, maxt) |
| 2755 | for _, s := range generatedSeries { |
| 2756 | prefilledLabels = append(prefilledLabels, s.Labels().Map()) |
| 2757 | } |
| 2758 | } else { |
| 2759 | generatedSeries = populateSeries(prefilledLabels, mint, maxt) |
| 2760 | } |
| 2761 | block, err := OpenBlock(nil, createBlock(b, dir, generatedSeries), nil, nil) |
| 2762 | require.NoError(b, err) |
| 2763 | blocks = append(blocks, block) |
| 2764 | defer block.Close() |
| 2765 | } |
| 2766 | |
| 2767 | qblocks := make([]storage.Querier, 0, len(blocks)) |
| 2768 | for _, blk := range blocks { |
| 2769 | q, err := NewBlockQuerier(blk, math.MinInt64, math.MaxInt64) |
| 2770 | require.NoError(b, err) |
| 2771 | qblocks = append(qblocks, q) |
| 2772 | } |
| 2773 | |
| 2774 | sq := storage.NewMergeQuerier(qblocks, nil, storage.ChainedSeriesMerge) |
| 2775 | defer sq.Close() |
| 2776 | |
| 2777 | mint := blocks[0].meta.MinTime |
nothing calls this directly
no test coverage detected
searching dependent graphs…