prometheus/tsdb
Oleg Zaytsev 1492031ef2
Optimize ListPostings Next() (#12906)
The Next() call of ListPostings() was updating two values, while we can
just update the position. This is up to 30% faster for high number of
Postings.

goos: linux
goarch: amd64
pkg: github.com/prometheus/prometheus/tsdb/index
cpu: 11th Gen Intel(R) Core(TM) i7-11700K @ 3.60GHz
                              │     old     │                 new                 │
                              │   sec/op    │   sec/op     vs base                │
ListPostings/count=100-16       819.2n ± 0%   732.6n ± 0%  -10.58% (p=0.000 n=20)
ListPostings/count=1000-16      2.685µ ± 1%   2.017µ ± 0%  -24.88% (p=0.000 n=20)
ListPostings/count=10000-16     21.43µ ± 1%   14.81µ ± 0%  -30.91% (p=0.000 n=20)
ListPostings/count=100000-16    209.4µ ± 1%   143.3µ ± 0%  -31.55% (p=0.000 n=20)
ListPostings/count=1000000-16   2.086m ± 1%   1.436m ± 1%  -31.18% (p=0.000 n=20)
geomean                         29.02µ        21.41µ       -26.22%

We're talking about microseconds here, but they just keep adding.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
2023-10-02 16:24:25 +02:00
..
agent Add context argument to Querier.Select (#12660) 2023-09-12 12:37:38 +02:00
chunkenc Fix more counterResetInAnyBucket edgecases 2023-09-13 15:18:40 +02:00
chunks storage: make histogram reset handling consistent in chainSampleIterator (#12779) 2023-09-19 17:06:46 +02:00
docs
encoding
errors
fileutil
goversion
index Optimize ListPostings Next() (#12906) 2023-10-02 16:24:25 +02:00
record
testdata
tombstones
tsdbutil Add a chunk size limit in bytes (#12054) 2023-08-24 15:21:17 +02:00
wlog Update exp package (#12650) 2023-09-21 22:53:51 +02:00
.gitignore
CHANGELOG.md
README.md
block.go Add context argument to tsdb.PostingsForMatchers 2023-09-16 18:13:32 +02:00
block_test.go Add context argument to LabelQuerier.LabelValues (#12665) 2023-09-14 16:02:04 +02:00
blockwriter.go
blockwriter_test.go Add a chunk size limit in bytes (#12054) 2023-08-24 15:21:17 +02:00
compact.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
compact_test.go Add context argument to IndexReader.Postings (#12667) 2023-09-13 17:45:06 +02:00
db.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
db_test.go Add warnings (and annotations) to PromQL query results (#12152) 2023-09-14 18:57:31 +02:00
example_test.go Add context argument to Querier.Select (#12660) 2023-09-12 12:37:38 +02:00
exemplar.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
exemplar_test.go
head.go tsdb: register metrics after Head is initialized (#12876) 2023-09-25 21:57:08 +01:00
head_append.go Refactor solution to not repeat code 2023-09-20 15:54:00 +02:00
head_bench_test.go
head_read.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
head_read_test.go
head_test.go Additional test case for ValidateHistogram 2023-09-27 09:34:43 +03:00
head_wal.go Do WBL mmap marker replay concurrently (#12801) 2023-09-12 21:31:10 +02:00
isolation.go
isolation_test.go
mocks_test.go
ooo_head.go
ooo_head_read.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
ooo_head_read_test.go Add context argument to LabelQuerier.LabelValues (#12665) 2023-09-14 16:02:04 +02:00
ooo_head_test.go
querier.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
querier_bench_test.go tsdb: Tighten up sub-benchmark scope in BenchmarkQuerier (#12718) 2023-10-02 12:16:37 +02:00
querier_test.go Fix exit condition of TestQuerierIndexQueriesRace 2023-09-20 20:22:26 +01:00
repair.go
repair_test.go Add context argument to IndexReader.Postings (#12667) 2023-09-13 17:45:06 +02:00
tsdbblockutil.go
wal.go
wal_test.go

README.md

TSDB

GoPkg

This directory contains the Prometheus TSDB (Time Series DataBase) library, which handles storage and querying of all Prometheus v2 data.

Documentation

External resources

A series of blog posts explaining different components of TSDB: