diff --git a/promql/bench_test.go b/promql/bench_test.go index c6a528f7bf..a4bde6c416 100644 --- a/promql/bench_test.go +++ b/promql/bench_test.go @@ -66,6 +66,8 @@ func setupRangeQueryTestData(stor *teststorage.TestStorage, _ *Engine, interval, return err } } + stor.DB.ForceHeadMMap() // Ensure we have at most one head chunk for every series. + stor.DB.Compact() return nil } @@ -222,6 +224,7 @@ func rangeQueryCases() []benchCase { func BenchmarkRangeQuery(b *testing.B) { stor := teststorage.New(b) + stor.DB.DisableCompactions() // Don't want auto-compaction disrupting timings. defer stor.Close() opts := EngineOpts{ Logger: nil, diff --git a/tsdb/db.go b/tsdb/db.go index 58ba6900b2..111f0cb210 100644 --- a/tsdb/db.go +++ b/tsdb/db.go @@ -1797,6 +1797,11 @@ func (db *DB) EnableCompactions() { level.Info(db.logger).Log("msg", "Compactions enabled") } +// ForceHeadMMap is intended for use only in tests and benchmarks. +func (db *DB) ForceHeadMMap() { + db.head.mmapHeadChunks() +} + // Snapshot writes the current data to the directory. If withHead is set to true it // will create a new block containing all data that's currently in the memory buffer/WAL. func (db *DB) Snapshot(dir string, withHead bool) error {