|
|
|
@ -1859,13 +1859,6 @@ func BenchmarkBuildWriteRequest(b *testing.B) {
|
|
|
|
|
} |
|
|
|
|
pBuf := proto.NewBuffer(nil) |
|
|
|
|
|
|
|
|
|
// Warmup buffers
|
|
|
|
|
for i := 0; i < 10; i++ { |
|
|
|
|
populateTimeSeries(batch, seriesBuff, true, true) |
|
|
|
|
buildWriteRequest(noopLogger, seriesBuff, nil, pBuf, &buff, nil, "snappy") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
b.ResetTimer() |
|
|
|
|
totalSize := 0 |
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
populateTimeSeries(batch, seriesBuff, true, true) |
|
|
|
@ -1897,45 +1890,43 @@ func BenchmarkBuildWriteRequest(b *testing.B) {
|
|
|
|
|
|
|
|
|
|
func BenchmarkBuildV2WriteRequest(b *testing.B) { |
|
|
|
|
noopLogger := log.NewNopLogger() |
|
|
|
|
type testcase struct { |
|
|
|
|
batch []timeSeries |
|
|
|
|
} |
|
|
|
|
testCases := []testcase{ |
|
|
|
|
{createDummyTimeSeries(2)}, |
|
|
|
|
{createDummyTimeSeries(10)}, |
|
|
|
|
{createDummyTimeSeries(100)}, |
|
|
|
|
} |
|
|
|
|
for _, tc := range testCases { |
|
|
|
|
bench := func(b *testing.B, batch []timeSeries) { |
|
|
|
|
symbolTable := writev2.NewSymbolTable() |
|
|
|
|
buff := make([]byte, 0) |
|
|
|
|
seriesBuff := make([]writev2.TimeSeries, len(tc.batch)) |
|
|
|
|
seriesBuff := make([]writev2.TimeSeries, len(batch)) |
|
|
|
|
for i := range seriesBuff { |
|
|
|
|
seriesBuff[i].Samples = []writev2.Sample{{}} |
|
|
|
|
seriesBuff[i].Exemplars = []writev2.Exemplar{{}} |
|
|
|
|
} |
|
|
|
|
pBuf := []byte{} |
|
|
|
|
|
|
|
|
|
// Warmup buffers
|
|
|
|
|
for i := 0; i < 10; i++ { |
|
|
|
|
populateV2TimeSeries(&symbolTable, tc.batch, seriesBuff, true, true) |
|
|
|
|
buildV2WriteRequest(noopLogger, seriesBuff, symbolTable.Symbols(), &pBuf, &buff, nil, "snappy") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
b.Run(fmt.Sprintf("%d-instances", len(tc.batch)), func(b *testing.B) { |
|
|
|
|
totalSize := 0 |
|
|
|
|
for j := 0; j < b.N; j++ { |
|
|
|
|
populateV2TimeSeries(&symbolTable, tc.batch, seriesBuff, true, true) |
|
|
|
|
b.ResetTimer() |
|
|
|
|
req, _, _, err := buildV2WriteRequest(noopLogger, seriesBuff, symbolTable.Symbols(), &pBuf, &buff, nil, "snappy") |
|
|
|
|
if err != nil { |
|
|
|
|
b.Fatal(err) |
|
|
|
|
} |
|
|
|
|
symbolTable.Reset() |
|
|
|
|
totalSize += len(req) |
|
|
|
|
b.ReportMetric(float64(totalSize)/float64(b.N), "compressedSize/op") |
|
|
|
|
totalSize := 0 |
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
populateV2TimeSeries(&symbolTable, batch, seriesBuff, true, true) |
|
|
|
|
req, _, _, err := buildV2WriteRequest(noopLogger, seriesBuff, symbolTable.Symbols(), &pBuf, &buff, nil, "snappy") |
|
|
|
|
if err != nil { |
|
|
|
|
b.Fatal(err) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
totalSize += len(req) |
|
|
|
|
b.ReportMetric(float64(totalSize)/float64(b.N), "compressedSize/op") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
twoBatch := createDummyTimeSeries(2) |
|
|
|
|
tenBatch := createDummyTimeSeries(10) |
|
|
|
|
hundredBatch := createDummyTimeSeries(100) |
|
|
|
|
|
|
|
|
|
b.Run("2 instances", func(b *testing.B) { |
|
|
|
|
bench(b, twoBatch) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
b.Run("10 instances", func(b *testing.B) { |
|
|
|
|
bench(b, tenBatch) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
b.Run("1k instances", func(b *testing.B) { |
|
|
|
|
bench(b, hundredBatch) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestDropOldTimeSeries(t *testing.T) { |
|
|
|
|