mirror of
https://github.com/prometheus/prometheus.git
synced 2025-08-06 06:07:11 +02:00
[TESTS] Faster WAL Benchmarks by reusing buffer
Less garbage collection. Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
This commit is contained in:
parent
b4d3c06acb
commit
848df13d3a
@ -149,24 +149,29 @@ func BenchmarkHeadAppender_Append_Commit_ExistingSeries(b *testing.B) {
|
||||
}
|
||||
}
|
||||
|
||||
func populateTestWL(t testing.TB, w *wlog.WL, recs []interface{}) {
|
||||
func populateTestWL(t testing.TB, w *wlog.WL, recs []interface{}, buf []byte) []byte {
|
||||
var enc record.Encoder
|
||||
for _, r := range recs {
|
||||
buf = buf[:0]
|
||||
switch v := r.(type) {
|
||||
case []record.RefSeries:
|
||||
require.NoError(t, w.Log(enc.Series(v, nil)))
|
||||
buf = enc.Series(v, buf)
|
||||
case []record.RefSample:
|
||||
require.NoError(t, w.Log(enc.Samples(v, nil)))
|
||||
buf = enc.Samples(v, buf)
|
||||
case []tombstones.Stone:
|
||||
require.NoError(t, w.Log(enc.Tombstones(v, nil)))
|
||||
buf = enc.Tombstones(v, buf)
|
||||
case []record.RefExemplar:
|
||||
require.NoError(t, w.Log(enc.Exemplars(v, nil)))
|
||||
buf = enc.Exemplars(v, buf)
|
||||
case []record.RefMmapMarker:
|
||||
require.NoError(t, w.Log(enc.MmapMarkers(v, nil)))
|
||||
buf = enc.MmapMarkers(v, buf)
|
||||
case []record.RefMetadata:
|
||||
require.NoError(t, w.Log(enc.Metadata(v, nil)))
|
||||
buf = enc.Metadata(v, buf)
|
||||
default:
|
||||
continue
|
||||
}
|
||||
require.NoError(t, w.Log(buf))
|
||||
}
|
||||
return buf
|
||||
}
|
||||
|
||||
func readTestWAL(t testing.TB, dir string) (recs []interface{}) {
|
||||
@ -309,6 +314,7 @@ func BenchmarkLoadWLs(b *testing.B) {
|
||||
|
||||
// Write series.
|
||||
refSeries := make([]record.RefSeries, 0, c.seriesPerBatch)
|
||||
var buf []byte
|
||||
for k := 0; k < c.batches; k++ {
|
||||
refSeries = refSeries[:0]
|
||||
for i := k * c.seriesPerBatch; i < (k+1)*c.seriesPerBatch; i++ {
|
||||
@ -333,7 +339,7 @@ func BenchmarkLoadWLs(b *testing.B) {
|
||||
writeSeries = newWriteSeries
|
||||
}
|
||||
|
||||
populateTestWL(b, wal, []interface{}{writeSeries})
|
||||
buf = populateTestWL(b, wal, []interface{}{writeSeries}, buf)
|
||||
}
|
||||
|
||||
// Write samples.
|
||||
@ -359,7 +365,7 @@ func BenchmarkLoadWLs(b *testing.B) {
|
||||
V: float64(i) * 100,
|
||||
})
|
||||
}
|
||||
populateTestWL(b, wal, []interface{}{refSamples})
|
||||
buf = populateTestWL(b, wal, []interface{}{refSamples}, buf)
|
||||
}
|
||||
}
|
||||
|
||||
@ -398,7 +404,7 @@ func BenchmarkLoadWLs(b *testing.B) {
|
||||
Labels: labels.FromStrings("trace_id", fmt.Sprintf("trace-%d", i)),
|
||||
})
|
||||
}
|
||||
populateTestWL(b, wal, []interface{}{refExemplars})
|
||||
buf = populateTestWL(b, wal, []interface{}{refExemplars}, buf)
|
||||
}
|
||||
}
|
||||
|
||||
@ -427,10 +433,10 @@ func BenchmarkLoadWLs(b *testing.B) {
|
||||
})
|
||||
}
|
||||
if shouldAddMarkers {
|
||||
populateTestWL(b, wbl, []interface{}{refMarkers})
|
||||
populateTestWL(b, wbl, []interface{}{refMarkers}, buf)
|
||||
}
|
||||
populateTestWL(b, wal, []interface{}{refSamples})
|
||||
populateTestWL(b, wbl, []interface{}{refSamples})
|
||||
buf = populateTestWL(b, wal, []interface{}{refSamples}, buf)
|
||||
buf = populateTestWL(b, wbl, []interface{}{refSamples}, buf)
|
||||
}
|
||||
}
|
||||
|
||||
@ -739,7 +745,7 @@ func TestHead_ReadWAL(t *testing.T) {
|
||||
require.NoError(t, head.Close())
|
||||
}()
|
||||
|
||||
populateTestWL(t, w, entries)
|
||||
populateTestWL(t, w, entries, nil)
|
||||
|
||||
require.NoError(t, head.Init(math.MinInt64))
|
||||
require.Equal(t, uint64(101), head.lastSeriesID.Load())
|
||||
@ -1383,7 +1389,7 @@ func TestHeadDeleteSeriesWithoutSamples(t *testing.T) {
|
||||
require.NoError(t, head.Close())
|
||||
}()
|
||||
|
||||
populateTestWL(t, w, entries)
|
||||
populateTestWL(t, w, entries, nil)
|
||||
|
||||
require.NoError(t, head.Init(math.MinInt64))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user