Bartlomiej Plotka
fe802f29c9
storage: Removed SelectSorted method; Simplified interface; Added requirement for remote read to sort response.
...
This is technically BREAKING CHANGE, but it was like this from the beginning: I just notice that we rely in
Prometheus on remote read being sorted. This is because we use selected data from remote reads in MergeSeriesSet
which rely on sorting.
I found during work on https://github.com/prometheus/prometheus/pull/5882 that
we do so many repetitions because of this, for not good reason. I think
I found a good balance between convenience and readability with just one method.
Smaller the interface = better.
Also I don't know what TestSelectSorted was testing, but now it's testing sorting.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
2020-03-13 13:06:25 +00:00
beorn7
d9af11e636
Do not attempt isolation for appendID == 0
...
Signed-off-by: beorn7 <beorn@grafana.com>
2020-03-01 02:48:35 +01:00
beorn7
7f30b0984d
Implement isolation
...
This has been ported from https://github.com/prometheus/tsdb/pull/306 .
Original implementation by @brian-brazil, explained in detail in the
2nd half of this talk:
https://promcon.io/2017-munich/talks/staleness-in-prometheus-2-0/
The implementation was then processed by @gouthamve into the PR linked
above. Relevant slide deck:
https://docs.google.com/presentation/d/1-ICg7PEmDHYcITykD2SR2xwg56Tzf4gr8zfz1OerY5Y/edit?usp=drivesdk
Signed-off-by: beorn7 <beorn@grafana.com>
Co-authored-by: Brian Brazil <brian.brazil@robustperception.io>
Co-authored-by: Goutham Veeramachaneni <gouthamve@gmail.com>
2020-02-28 14:18:39 +01:00
beorn7
6b8181370f
Fix punctuation nits
...
Signed-off-by: beorn7 <beorn@grafana.com>
2020-02-28 14:17:33 +01:00
Julien Pivotto
52630ad0c7
Make head Postings only return series in time range
...
benchmark old ns/op new ns/op delta
BenchmarkQuerierSelect/Head/1of1000000-8 405805161 120436132 -70.32%
BenchmarkQuerierSelect/Head/10of1000000-8 403079620 120624292 -70.07%
BenchmarkQuerierSelect/Head/100of1000000-8 404678647 120923522 -70.12%
BenchmarkQuerierSelect/Head/1000of1000000-8 403145813 118636563 -70.57%
BenchmarkQuerierSelect/Head/10000of1000000-8 405020046 125716206 -68.96%
BenchmarkQuerierSelect/Head/100000of1000000-8 426305002 175808499 -58.76%
BenchmarkQuerierSelect/Head/1000000of1000000-8 619002108 567013003 -8.40%
BenchmarkQuerierSelect/SortedHead/1of1000000-8 1276316086 120281094 -90.58%
BenchmarkQuerierSelect/SortedHead/10of1000000-8 1282631170 121836526 -90.50%
BenchmarkQuerierSelect/SortedHead/100of1000000-8 1325824787 121174967 -90.86%
BenchmarkQuerierSelect/SortedHead/1000of1000000-8 1271386268 121025117 -90.48%
BenchmarkQuerierSelect/SortedHead/10000of1000000-8 1280223345 130838948 -89.78%
BenchmarkQuerierSelect/SortedHead/100000of1000000-8 1271401620 243635515 -80.84%
BenchmarkQuerierSelect/SortedHead/1000000of1000000-8 1360256090 1307744674 -3.86%
BenchmarkQuerierSelect/Block/1of1000000-8 748183120 707888498 -5.39%
BenchmarkQuerierSelect/Block/10of1000000-8 741084129 716317249 -3.34%
BenchmarkQuerierSelect/Block/100of1000000-8 722157273 735624256 +1.86%
BenchmarkQuerierSelect/Block/1000of1000000-8 727587744 731981838 +0.60%
BenchmarkQuerierSelect/Block/10000of1000000-8 727518578 726860308 -0.09%
BenchmarkQuerierSelect/Block/100000of1000000-8 765577046 757382386 -1.07%
BenchmarkQuerierSelect/Block/1000000of1000000-8 1126722881 1084779083 -3.72%
benchmark old allocs new allocs delta
BenchmarkQuerierSelect/Head/1of1000000-8 4000018 24 -100.00%
BenchmarkQuerierSelect/Head/10of1000000-8 4000036 82 -100.00%
BenchmarkQuerierSelect/Head/100of1000000-8 4000216 625 -99.98%
BenchmarkQuerierSelect/Head/1000of1000000-8 4002016 6028 -99.85%
BenchmarkQuerierSelect/Head/10000of1000000-8 4020016 60037 -98.51%
BenchmarkQuerierSelect/Head/100000of1000000-8 4200016 600047 -85.71%
BenchmarkQuerierSelect/Head/1000000of1000000-8 6000016 6000016 +0.00%
BenchmarkQuerierSelect/SortedHead/1of1000000-8 4000055 28 -100.00%
BenchmarkQuerierSelect/SortedHead/10of1000000-8 4000073 87 -100.00%
BenchmarkQuerierSelect/SortedHead/100of1000000-8 4000253 630 -99.98%
BenchmarkQuerierSelect/SortedHead/1000of1000000-8 4002053 6036 -99.85%
BenchmarkQuerierSelect/SortedHead/10000of1000000-8 4020053 60054 -98.51%
BenchmarkQuerierSelect/SortedHead/100000of1000000-8 4200053 600074 -85.71%
BenchmarkQuerierSelect/SortedHead/1000000of1000000-8 6000053 6000053 +0.00%
BenchmarkQuerierSelect/Block/1of1000000-8 6000021 6000021 +0.00%
BenchmarkQuerierSelect/Block/10of1000000-8 6000057 6000057 +0.00%
BenchmarkQuerierSelect/Block/100of1000000-8 6000417 6000417 +0.00%
BenchmarkQuerierSelect/Block/1000of1000000-8 6004017 6004017 +0.00%
BenchmarkQuerierSelect/Block/10000of1000000-8 6040017 6040017 +0.00%
BenchmarkQuerierSelect/Block/100000of1000000-8 6400017 6400017 +0.00%
BenchmarkQuerierSelect/Block/1000000of1000000-8 10000018 10000018 +0.00%
benchmark old bytes new bytes delta
BenchmarkQuerierSelect/Head/1of1000000-8 176001177 1392 -100.00%
BenchmarkQuerierSelect/Head/10of1000000-8 176002329 4368 -100.00%
BenchmarkQuerierSelect/Head/100of1000000-8 176013849 33520 -99.98%
BenchmarkQuerierSelect/Head/1000of1000000-8 176129056 321456 -99.82%
BenchmarkQuerierSelect/Head/10000of1000000-8 177281049 3427376 -98.07%
BenchmarkQuerierSelect/Head/100000of1000000-8 188801049 35055408 -81.43%
BenchmarkQuerierSelect/Head/1000000of1000000-8 304001059 304001049 -0.00%
BenchmarkQuerierSelect/SortedHead/1of1000000-8 229192188 2488 -100.00%
BenchmarkQuerierSelect/SortedHead/10of1000000-8 229193340 5568 -100.00%
BenchmarkQuerierSelect/SortedHead/100of1000000-8 229204860 35536 -99.98%
BenchmarkQuerierSelect/SortedHead/1000of1000000-8 229320060 345104 -99.85%
BenchmarkQuerierSelect/SortedHead/10000of1000000-8 230472060 3894672 -98.31%
BenchmarkQuerierSelect/SortedHead/100000of1000000-8 241992060 40511632 -83.26%
BenchmarkQuerierSelect/SortedHead/1000000of1000000-8 357192060 357192060 +0.00%
BenchmarkQuerierSelect/Block/1of1000000-8 227201516 227201506 -0.00%
BenchmarkQuerierSelect/Block/10of1000000-8 227203057 227203041 -0.00%
BenchmarkQuerierSelect/Block/100of1000000-8 227217161 227217165 +0.00%
BenchmarkQuerierSelect/Block/1000of1000000-8 227358279 227358289 +0.00%
BenchmarkQuerierSelect/Block/10000of1000000-8 228769485 228769475 -0.00%
BenchmarkQuerierSelect/Block/100000of1000000-8 242881487 242881477 -0.00%
BenchmarkQuerierSelect/Block/1000000of1000000-8 384001705 384001705 +0.00%
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2020-02-20 22:41:46 +01:00
Bartlomiej Plotka
34426766d8
Unify Iterator interfaces. All point to storage now.
...
This is part of https://github.com/prometheus/prometheus/pull/5882 that can be done to simplify things.
All todos I added will be fixed in follow up PRs.
* querier.Querier, querier.Appender, querier.SeriesSet, and querier.Series interfaces merged
with storage interface.go. All imports that.
* querier.SeriesIterator replaced by chunkenc.Iterator
* Added chunkenc.Iterator.Seek method and tests for xor implementation (?)
* Since we properly handle SelectParams for Select methods I adjusted min max
based on that. This should help in terms of performance for queries with functions like offset.
* added Seek to deletedIterator and test.
* storage/tsdb was removed as it was only a unnecessary glue with incompatible structs.
No logic was changed, only different source of abstractions, so no need for benchmarks.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
2020-02-17 18:03:54 +00:00
Ganesh Vernekar
bc6fd96979
Refactor TestGCChunkAccess and TestGCSeriesAccess to create chunks by appending samples
...
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2020-02-06 18:26:18 +05:30
Callum Styan
83601202d9
Add missing param to NewHead call in test. ( #6725 )
...
Signed-off-by: Callum Styan <callumstyan@gmail.com>
2020-01-30 11:45:14 -08:00
Thor
17d8c49919
made stripe size configurable ( #6644 )
...
Signed-off-by: Thor <thansen@digitalocean.com>
2020-01-30 12:42:43 +05:30
Brian Brazil
38d32e0686
Don't sort postings if we only have one block.
...
Sorting the heads postings can be quite slow.
We only need sorted series when merging with another
querier, so only sort then.
This will make big queries that only touch the head faster,
though queries that touch both the head and a block will still
be the same speed. This probably won't help much with graphing
unless the range is under an hour, however it should make most
recording rules faster.
Add gaurantee that remote read streaming produces sorted series.
PromQL benchmarks for histograms show only 2-3% improvement, but
they're only over 1k series.
benchmark old ns/op new ns/op delta
BenchmarkQuerierSelect/Head/1of1000000-4 1375486282 507657736 -63.09%
BenchmarkQuerierSelect/Head/10of1000000-4 1387859004 507769850 -63.41%
BenchmarkQuerierSelect/Head/100of1000000-4 1387087935 506029110 -63.52%
BenchmarkQuerierSelect/Head/1000of1000000-4 1386869064 504521986 -63.62%
BenchmarkQuerierSelect/Head/10000of1000000-4 1386213685 505210422 -63.55%
BenchmarkQuerierSelect/Head/100000of1000000-4 1392754988 529842406 -61.96%
BenchmarkQuerierSelect/Head/1000000of1000000-4 1569414722 725059506 -53.80%
BenchmarkQuerierSelect/SortedHead/1of1000000-4 1381019902 1370495863 -0.76%
BenchmarkQuerierSelect/SortedHead/10of1000000-4 1375696209 1366789468 -0.65%
BenchmarkQuerierSelect/SortedHead/100of1000000-4 1386009422 1364519297 -1.55%
BenchmarkQuerierSelect/SortedHead/1000of1000000-4 1377700532 1364486191 -0.96%
BenchmarkQuerierSelect/SortedHead/10000of1000000-4 1383539536 1369545314 -1.01%
BenchmarkQuerierSelect/SortedHead/100000of1000000-4 1410089163 1394731339 -1.09%
BenchmarkQuerierSelect/SortedHead/1000000of1000000-4 1634744148 1581554956 -3.25%
BenchmarkQuerierSelect/Block/1of1000000-4 881741242 879839470 -0.22%
BenchmarkQuerierSelect/Block/10of1000000-4 880381562 882846038 +0.28%
BenchmarkQuerierSelect/Block/100of1000000-4 887519357 881016916 -0.73%
BenchmarkQuerierSelect/Block/1000of1000000-4 902194205 883433524 -2.08%
BenchmarkQuerierSelect/Block/10000of1000000-4 892321964 885130170 -0.81%
BenchmarkQuerierSelect/Block/100000of1000000-4 938604466 933527150 -0.54%
BenchmarkQuerierSelect/Block/1000000of1000000-4 1313510845 1295881124 -1.34%
benchmark old allocs new allocs delta
BenchmarkQuerierSelect/Head/1of1000000-4 4000056 4000018 -0.00%
BenchmarkQuerierSelect/Head/10of1000000-4 4000074 4000036 -0.00%
BenchmarkQuerierSelect/Head/100of1000000-4 4000254 4000216 -0.00%
BenchmarkQuerierSelect/Head/1000of1000000-4 4002054 4002016 -0.00%
BenchmarkQuerierSelect/Head/10000of1000000-4 4020054 4020016 -0.00%
BenchmarkQuerierSelect/Head/100000of1000000-4 4200054 4200016 -0.00%
BenchmarkQuerierSelect/Head/1000000of1000000-4 6000054 6000016 -0.00%
BenchmarkQuerierSelect/SortedHead/1of1000000-4 4000071 4000071 +0.00%
BenchmarkQuerierSelect/SortedHead/10of1000000-4 4000089 4000089 +0.00%
BenchmarkQuerierSelect/SortedHead/100of1000000-4 4000269 4000269 +0.00%
BenchmarkQuerierSelect/SortedHead/1000of1000000-4 4002069 4002069 +0.00%
BenchmarkQuerierSelect/SortedHead/10000of1000000-4 4020069 4020069 +0.00%
BenchmarkQuerierSelect/SortedHead/100000of1000000-4 4200069 4200069 +0.00%
BenchmarkQuerierSelect/SortedHead/1000000of1000000-4 6000069 6000069 +0.00%
BenchmarkQuerierSelect/Block/1of1000000-4 6000023 6000022 -0.00%
BenchmarkQuerierSelect/Block/10of1000000-4 6000059 6000058 -0.00%
BenchmarkQuerierSelect/Block/100of1000000-4 6000419 6000418 -0.00%
BenchmarkQuerierSelect/Block/1000of1000000-4 6004019 6004018 -0.00%
BenchmarkQuerierSelect/Block/10000of1000000-4 6040019 6040018 -0.00%
BenchmarkQuerierSelect/Block/100000of1000000-4 6400019 6400018 -0.00%
BenchmarkQuerierSelect/Block/1000000of1000000-4 10000020 10000019 -0.00%
benchmark old bytes new bytes delta
BenchmarkQuerierSelect/Head/1of1000000-4 229192200 176001176 -23.21%
BenchmarkQuerierSelect/Head/10of1000000-4 229193352 176002328 -23.21%
BenchmarkQuerierSelect/Head/100of1000000-4 229204872 176013848 -23.21%
BenchmarkQuerierSelect/Head/1000of1000000-4 229320072 176129048 -23.20%
BenchmarkQuerierSelect/Head/10000of1000000-4 230472072 177281048 -23.08%
BenchmarkQuerierSelect/Head/100000of1000000-4 241992072 188801048 -21.98%
BenchmarkQuerierSelect/Head/1000000of1000000-4 357192072 304001048 -14.89%
BenchmarkQuerierSelect/SortedHead/1of1000000-4 229193928 229193928 +0.00%
BenchmarkQuerierSelect/SortedHead/10of1000000-4 229195080 229195080 +0.00%
BenchmarkQuerierSelect/SortedHead/100of1000000-4 229206600 229206600 +0.00%
BenchmarkQuerierSelect/SortedHead/1000of1000000-4 229321800 229321800 +0.00%
BenchmarkQuerierSelect/SortedHead/10000of1000000-4 230473800 230473800 +0.00%
BenchmarkQuerierSelect/SortedHead/100000of1000000-4 241993800 241993800 +0.00%
BenchmarkQuerierSelect/SortedHead/1000000of1000000-4 357193800 357193800 +0.00%
BenchmarkQuerierSelect/Block/1of1000000-4 227201516 227201500 -0.00%
BenchmarkQuerierSelect/Block/10of1000000-4 227202924 227202908 -0.00%
BenchmarkQuerierSelect/Block/100of1000000-4 227217036 227217020 -0.00%
BenchmarkQuerierSelect/Block/1000of1000000-4 227358156 227358140 -0.00%
BenchmarkQuerierSelect/Block/10000of1000000-4 228769356 228769340 -0.00%
BenchmarkQuerierSelect/Block/100000of1000000-4 242881356 242881340 -0.00%
BenchmarkQuerierSelect/Block/1000000of1000000-4 384001616 384001600 -0.00%
Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
2020-01-28 09:14:56 +00:00
Ganesh Vernekar
21a5cf5d1d
Bring back tombstones to Head block ( #6542 )
...
* Bring back tombstones to Head block
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
* Add test cases
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
* Cleanup
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2020-01-20 21:08:00 +05:30
Julien Pivotto
46d18112a3
tsdb: error on series with duplicate labels ( #6664 )
...
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2020-01-20 11:05:27 +00:00
Josh Soref
91d76c8023
Spelling ( #6517 )
...
* spelling: alertmanager
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: attributes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: autocomplete
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: bootstrap
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: caught
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: chunkenc
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: compaction
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: corrupted
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: deletable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: expected
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: fine-grained
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: initialized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: iteration
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: javascript
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: multiple
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: number
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: overlapping
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: possible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: postings
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: procedure
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: programmatic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: queuing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: querier
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: repairing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: received
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: reproducible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: retention
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: sample
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: segements
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: semantic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: software [LICENSE]
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: staging
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: timestamp
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: unfortunately
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: uvarint
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: subsequently
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: ressamples
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2020-01-02 15:54:09 +01:00
Tom Wilkie
de0a772b8e
Port tsdb to use pkg/labels. ( #6326 )
...
* Port tsdb to use pkg/labels.
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
* Get tests passing.
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
* Remove useless cast.
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
* Appease linters.
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
* Fix review comments
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2019-11-18 11:53:33 -08:00
Chris Marchbanks
c5b3f0221f
Decode WAL in Separate Goroutine ( #6230 )
...
* Make WAL replay benchmark more representative
Signed-off-by: Chris Marchbanks <csmarchbanks@gmail.com>
* Move decoding records from the WAL into goroutine
Decoding the WAL records accounts for a significant amount of time on
startup, and can be done in parallel with creating series/samples to
speed up startup. However, records still must be handled in order, so
only a single goroutine can do the decoding.
benchmark
old ns/op new ns/op delta
BenchmarkLoadWAL/batches=10,seriesPerBatch=100,samplesPerSeries=7200-8
481607033 391971490 -18.61%
BenchmarkLoadWAL/batches=10,seriesPerBatch=10000,samplesPerSeries=50-8
836394378 629067006 -24.79%
BenchmarkLoadWAL/batches=10,seriesPerBatch=1000,samplesPerSeries=480-8
348238658 234218667 -32.74%
Signed-off-by: Chris Marchbanks <csmarchbanks@gmail.com>
2019-11-07 17:26:45 +01:00
Ganesh Vernekar
493ef2f771
Benchmark for loading WAL ( #6081 )
...
* Benchmark for loading WAL
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
* Add more cases
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2019-10-03 11:49:55 +05:30
陈谭军
103f26d188
fix the wrong word ( #6069 )
...
Signed-off-by: chentanjun <2799194073@qq.com>
2019-09-30 09:54:55 -06:00
Callum Styan
3344bb5c33
Move WAL watcher code to tsdb/wal package. ( #5999 )
...
* Move WAL watcher code to tsdb/wal package.
Signed-off-by: Callum Styan <callumstyan@gmail.com>
* Fix tests after moving WAL watcher code.
Signed-off-by: Callum Styan <callumstyan@gmail.com>
* Lint fixes.
Signed-off-by: Callum Styan <callumstyan@gmail.com>
2019-09-19 14:45:41 +05:30
Bartek Plotka
f0863a604e
Removed extra tsdb/testutil after merge.
...
Signed-off-by: Bartek Plotka <bwplotka@gmail.com>
2019-08-14 10:12:32 +01:00
Ganesh Vernekar
5ecef3542d
Cleanup after merging tsdb into prometheus
...
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2019-08-13 14:04:14 +05:30
Ganesh Vernekar
7cf09b0395
Moving tsdb into its own subdirectory
...
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2019-08-13 13:58:49 +05:30