Commit graph

11200 commits

Author SHA1 Message Date
Ganesh Vernekar 4e206c7c77
Fix reviews
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
2021-10-13 20:23:31 +05:30
Oleg Zaytsev 14cb8d8696
Use ExpandPostings() in NewPostingsCloner()
We should reuse that method, not only because it saves code, but also
because that method is a good candidate to use a pool of slices some
day.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
2021-10-13 15:26:36 +02:00
Dieter Plaetinck d5afe0a577
TSDB: Use a dedicated head chunk reference type (#9501)
* Use dedicated Ref type

Throughout the code base, there are reference types masked as
regular integers.  Let's use dedicated types.  They are
equivalent, but clearer semantically.
This also makes it trivial to find where they are used,
and from uses, find the centralized docs.

Signed-off-by: Dieter Plaetinck <dieter@grafana.com>

* postpone some work until after possible return

Signed-off-by: Dieter Plaetinck <dieter@grafana.com>

* clarify

Signed-off-by: Dieter Plaetinck <dieter@grafana.com>

* rename feedback

Signed-off-by: Dieter Plaetinck <dieter@grafana.com>

* skip header is up to caller

Signed-off-by: Dieter Plaetinck <dieter@grafana.com>
2021-10-13 17:44:32 +05:30
Ganesh Vernekar 85e6686f84
Add unit test for counter reset header
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
2021-10-13 15:57:42 +05:30
Björn Rabenstein 311673d62e
Save on slice allocations in histogramIterator (#9494)
Signed-off-by: beorn7 <beorn@grafana.com>
2021-10-13 14:43:49 +05:30
Frederic Branczyk 054fc4ba19
Merge pull request #9467 from katsadim/endpointsliceovercapacity
discovery/kubernetes: Warn user in case of endpoint over-capacity
2021-10-13 10:57:23 +02:00
beorn7 468a89f1bf Merge branch 'sparsehistogram' of github.com:prometheus/prometheus into sparsehistogram 2021-10-12 15:30:48 +02:00
beorn7 94729d9936 Merge branch 'main' into sparsehistogram 2021-10-12 15:30:20 +02:00
Björn Rabenstein c450c01eb9
Remove obsolete TODOs about metadata (#9490)
Signed-off-by: beorn7 <beorn@grafana.com>
2021-10-12 17:00:30 +05:30
Björn Rabenstein 9486be535b
Add deprecation notice for the pkg directory (#9477)
As per consensus expressed on the dev summit:
https://docs.google.com/document/d/11LC3wJcVk00l8w5P3oLQ-m3Y37iom6INAMEu2ZAGIIE/edit?pli=1#heading=h.80qrixk0sjgv

Signed-off-by: beorn7 <beorn@grafana.com>
2021-10-12 10:54:12 +02:00
Julien Pivotto e245edf5a4
Fix Levi's name in MAINTAINERS.md (#9491)
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2021-10-12 02:05:22 +02:00
Björn Rabenstein 354d8d2ecf
Merge pull request #9488 from prometheus/beorn7/release
Volunteer @roidelapluie and @juliusv as upcoming release shepherds
2021-10-11 19:14:44 +02:00
Julien Pivotto 81cb67eb95
Add Levi as maintainer (#9487)
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2021-10-11 17:46:59 +02:00
beorn7 810c1081cf Volunteer @roidelapluie and @juliusv as upcoming release shepherds
Signed-off-by: beorn7 <beorn@grafana.com>
2021-10-11 17:14:32 +02:00
Marco Pracucci 8bc1b41795
Merge pull request #20 from grafana/test-approxBytesPerEntry-is-correct
Test that approxBytesPerEntry const is correct
2021-10-11 15:42:38 +02:00
Oleg Zaytsev 3dd18a1ece
Test that approxBytesPerEntry const is correct
The comment on the constant mentions where it comes from, so we can
actually check its value in that test.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
2021-10-11 15:15:56 +02:00
Cyril Tovena 62935a1241
Merge pull request #19 from grafana/regexpopti
Optimize most common regexp
2021-10-11 14:15:51 +02:00
Björn Rabenstein 12486b1250
Merge pull request #9481 from prometheus/beorn7/cleanup
Style cleanup of all the changes in sparsehistogram so far
2021-10-11 14:01:36 +02:00
Cyril Tovena 01187fbce2
Review feedback
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-11 13:59:24 +02:00
Cyril Tovena c8dfba9fa4
Add better comments
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-11 13:56:22 +02:00
beorn7 7a8bb8222c Style cleanup of all the changes in sparsehistogram so far
A lot of this code was hacked together, literally during a
hackathon. This commit intends not to change the code substantially,
but just make the code obey the usual style practices.

A (possibly incomplete) list of areas:

* Generally address linter warnings.

* The `pgk` directory is deprecated as per dev-summit. No new packages should
  be added to it. I moved the new `pkg/histogram` package to `model`
  anticipating what's proposed in #9478.

* Make the naming of the Sparse Histogram more consistent. Including
  abbreviations, there were just too many names for it: SparseHistogram,
  Histogram, Histo, hist, his, shs, h. The idea is to call it "Histogram" in
  general. Only add "Sparse" if it is needed to avoid confusion with
  conventional Histograms (which is rare because the TSDB really has no notion
  of conventional Histograms). Use abbreviations only in local scope, and then
  really abbreviate (not just removing three out of seven letters like in
  "Histo"). This is in the spirit of
  https://github.com/golang/go/wiki/CodeReviewComments#variable-names

* Several other minor name changes.

* A lot of formatting of doc comments. For one, following
  https://github.com/golang/go/wiki/CodeReviewComments#comment-sentences
  , but also layout question, anticipating how things will look like
  when rendered by `godoc` (even where `godoc` doesn't render them
  right now because they are for unexported types or not a doc comment
  at all but just a normal code comment - consistency is queen!).

* Re-enabled `TestQueryLog` and `TestEndopints` (they pass now,
  leaving them disabled was presumably an oversight).

* Bucket iterator for histogram.Histogram is now created with a
  method.

* HistogramChunk.iterator now allows iterator recycling. (I think
  @dieterbe only commented it out because he was confused by the
  question in the comment.)

* HistogramAppender.Append panics now because we decided to treat
  staleness marker differently.

Signed-off-by: beorn7 <beorn@grafana.com>
2021-10-11 13:02:03 +02:00
Cyril Tovena d41e470693
Update pkg/labels/regexp.go
Co-authored-by: Marco Pracucci <marco@pracucci.com>
2021-10-11 11:13:53 +02:00
Cyril Tovena 37416bf907
Update pkg/labels/regexp.go
Co-authored-by: Marco Pracucci <marco@pracucci.com>
2021-10-11 11:09:55 +02:00
Cyril Tovena 5c5b38712f
Add more comments.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-11 10:10:51 +02:00
Cyril Tovena 9c33f392e6
Better benchmarks values.
```
❯ benchcmp  before.txt after.txt
benchmark                                                           old ns/op     new ns/op     delta
BenchmarkNewFastRegexMatcher/(foo|bar)-16                           2487          2520          +1.33%
BenchmarkNewFastRegexMatcher/foo.*-16                               8856          4531          -48.84%
BenchmarkNewFastRegexMatcher/.*foo-16                               25195         6389          -74.64%
BenchmarkNewFastRegexMatcher/^.*foo$-16                             25626         6253          -75.60%
BenchmarkNewFastRegexMatcher/^.+foo$-16                             25429         6248          -75.43%
BenchmarkNewFastRegexMatcher/.*-16                                  429707        8439          -98.04%
BenchmarkNewFastRegexMatcher/.+-16                                  380165        8503          -97.76%
BenchmarkNewFastRegexMatcher/foo.+-16                               8180          4586          -43.94%
BenchmarkNewFastRegexMatcher/.+foo-16                               25214         6255          -75.19%
BenchmarkNewFastRegexMatcher/foo_.+-16                              8116          4334          -46.60%
BenchmarkNewFastRegexMatcher/foo_.*-16                              8354          4287          -48.68%
BenchmarkNewFastRegexMatcher/.*foo.*-16                             206076        19227         -90.67%
BenchmarkNewFastRegexMatcher/.+foo.+-16                             208434        18793         -90.98%
BenchmarkNewFastRegexMatcher/#00-16                                 33045         3936          -88.09%
BenchmarkNewFastRegexMatcher/(?s:.*)-16                             403806        4208          -98.96%
BenchmarkNewFastRegexMatcher/(?s:.+)-16                             418177        4150          -99.01%
BenchmarkNewFastRegexMatcher/(?s:^.*foo$)-16                        24452         5661          -76.85%
BenchmarkNewFastRegexMatcher/^(?i:foo|oo)|(bar)$-16                 48087         23183         -51.79%
BenchmarkNewFastRegexMatcher/((.*)(bar|b|buzz)(.+)|foo)$-16         645430        47193         -92.69%
BenchmarkNewFastRegexMatcher/^$-16                                  37244         3912          -89.50%
BenchmarkNewFastRegexMatcher/(prometheus|api_prom)_api_v1_.+-16     17205         10006         -41.84%
BenchmarkNewFastRegexMatcher/10\.0\.(1|2)\.+-16                     6776          7011          +3.47%
BenchmarkNewFastRegexMatcher/10\.0\.(1|2).+-16                      14792         4674          -68.40%
BenchmarkNewFastRegexMatcher/((fo(bar))|.+foo)-16                   497007        17410         -96.50%
```

Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-11 09:45:02 +02:00
akatsadimas ee77a6212f discovery/kubernetes: issue overcapacity warning for endpoint rather than endpointslice
Signed-off-by: akatsadimas <nkatsadim@gmail.com>
2021-10-08 23:17:04 +03:00
Cyril Tovena 715274ec9d
Reintroduce tests.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-08 10:10:18 +02:00
beorn7 fd5ea4e0b5 Merge branch 'main' into sparsehistogram 2021-10-07 23:16:42 +02:00
Björn Rabenstein 96f0683318
Merge pull request #9439 from codesome/counterresetmeta
Add info about counter resets in chunk meta
2021-10-07 21:42:55 +02:00
Cyril Tovena 7dab60e56d
More optimization.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 17:15:20 +02:00
Ganesh Vernekar 5d4dc7e413
Convert the header into an enum
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
2021-10-07 19:53:24 +05:30
Christian Simon 50c1060328
Implement PostingsCloner and implement promise/future pattern for PostingsForMatchers (#14)
* Fix tests not closing head/block properly

Close Head properly in TestWalRepair_DecodingError
Close Block properly in  TestReadIndexFormatV1

Co-authored-by: Christian Simon <simon@swine.de>
Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>

* Implement PostingsCloner

PostingsCloner allows obtaining independend clones of a Postings, that
can be used for subsequent calls.

Co-authored-by: Christian Simon <simon@swine.de>
Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>

* IndexReader.PostingsForMatchers() and implement Cache

IndexReader now offers the PostingsForMatchers functionality, which is
provided by PostingsForMatchersCache.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
Co-authored-by: Marco Pracucci <marco@pracucci.com>
Co-authored-by: Peter Štibraný <peter.stibrany@grafana.com>

Co-authored-by: Oleg Zaytsev <mail@olegzaytsev.com>
Co-authored-by: Marco Pracucci <marco@pracucci.com>
Co-authored-by: Peter Štibraný <peter.stibrany@grafana.com>
2021-10-07 15:16:09 +02:00
Cyril Tovena 852b553c00
Fixes the code and improve tests.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 15:10:26 +02:00
Cyril Tovena 9173cade01
Merge pull request #15 from grafana/improvesetmatches
Improve `findSetMatches `to support concatenation.
2021-10-07 14:48:53 +02:00
Marco Pracucci 23ac1d73ef
Fixed timeout increase
Signed-off-by: Marco Pracucci <marco@pracucci.com>
2021-10-07 14:35:55 +02:00
Marco Pracucci 7aea989fad
Increase tests timeout
Signed-off-by: Marco Pracucci <marco@pracucci.com>
2021-10-07 14:26:46 +02:00
Cyril Tovena 3c13a5e9bd
Improve tests and bench.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 14:25:31 +02:00
Cyril Tovena 54b3371060
Merge branch 'improvesetmatches' into regexpopti 2021-10-07 14:05:14 +02:00
Cyril Tovena ce28912439
Fixes a test now that we support more setMatches.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 14:04:52 +02:00
Cyril Tovena 2d879c65fc
Avoid API break
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 14:00:16 +02:00
Cyril Tovena 74c5667b63
implement optimization.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 13:56:31 +02:00
akatsadimas dd2e666a8d discovery/kubernetes: Warn user in case of endpoint over-capacity
Signed-off-by: akatsadimas <nkatsadim@gmail.com>
2021-10-07 00:01:46 +03:00
Cyril Tovena f7f80a3abf
Update pkg/labels/regexp_test.go
Co-authored-by: Peter Štibraný <peter.stibrany@grafana.com>
2021-10-06 16:44:26 +02:00
Cyril Tovena a1f6c747ed
Merge branch 'improvesetmatches' into regexpopti 2021-10-06 16:36:29 +02:00
Cyril Tovena 969497c5a3
more review feedback
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 16:33:49 +02:00
Cyril Tovena 9733377257
Review feedback
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 16:29:16 +02:00
Cyril Tovena f32ec95722
Add more tests and support begin/end text.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 16:22:48 +02:00
Cyril Tovena e9f0f0ebed
Improves test and benchmark
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 15:24:57 +02:00
Peter Štibraný b3ae917f96
Merge pull request #17 from grafana/symbols-cleanup
Splitting compactor: remove unused symbols from index of compacted block
2021-10-06 14:36:45 +02:00
Cyril Tovena 92736182ce
Adding benchmark.
```
benchstat before.txt after.txt
name                                                      old time/op    new time/op    delta
PostingsForMatchers/Head/n="1"-16                            480ns ± 4%     469ns ± 4%      ~     (p=0.095 n=5+5)
PostingsForMatchers/Head/n="1",j="foo"-16                    720ns ± 1%     705ns ± 2%      ~     (p=0.056 n=5+5)
PostingsForMatchers/Head/j="foo",n="1"-16                    712ns ± 3%     726ns ± 7%      ~     (p=0.841 n=5+5)
PostingsForMatchers/Head/n="1",j!="foo"-16                   833ns ± 3%     827ns ± 1%      ~     (p=0.548 n=5+5)
PostingsForMatchers/Head/i=~"1[0-9]",j=~"foo|bar"-16        6.66ms ± 4%    0.00ms ± 1%   -99.97%  (p=0.008 n=5+5)
PostingsForMatchers/Head/j=~"foo|bar"-16                     897ns ± 2%     675ns ± 2%   -24.80%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~"(1|2|3|4|5|6|20|55)"-16        20.1ms ± 2%     0.0ms ± 2%   -99.99%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".*"-16                         74.4ms ± 3%    81.3ms ± 3%    +9.29%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~"1.*"-16                        20.3ms ±27%    17.2ms ± 2%   -15.15%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".*1"-16                        6.22ms ±10%    5.60ms ± 1%    -9.95%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".+"-16                          146ms ± 4%     126ms ± 1%   -13.63%  (p=0.016 n=4+5)
PostingsForMatchers/Head/i=~""-16                           77.0ms ±23%    68.2ms ± 5%   -11.47%  (p=0.032 n=5+5)
PostingsForMatchers/Head/i!=""-16                           57.0ms ± 4%    56.9ms ± 6%      ~     (p=1.000 n=5+5)
PostingsForMatchers/Head/n="1",i=~".*",j="foo"-16           77.1ms ± 2%    79.2ms ± 4%      ~     (p=0.095 n=5+5)
PostingsForMatchers/Head/n="1",i=~".*",i!="2",j="foo"-16    77.2ms ± 3%    81.2ms ± 3%    +5.17%  (p=0.016 n=5+5)
PostingsForMatchers/Head/n="1",i!=""-16                     64.7ms ±34%    58.4ms ± 7%      ~     (p=0.421 n=5+5)

name                                                      old alloc/op   new alloc/op   delta
PostingsForMatchers/Head/n="1"-16                            80.0B ± 0%     80.0B ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",j="foo"-16                     208B ± 0%      208B ± 0%      ~     (all equal)
PostingsForMatchers/Head/j="foo",n="1"-16                     208B ± 0%      208B ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",j!="foo"-16                    240B ± 0%      240B ± 0%      ~     (all equal)
PostingsForMatchers/Head/i=~"1[0-9]",j=~"foo|bar"-16        1.61MB ± 0%    0.00MB ± 0%      ~     (p=0.079 n=4+5)
PostingsForMatchers/Head/j=~"foo|bar"-16                      360B ± 0%      232B ± 0%   -35.56%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~"(1|2|3|4|5|6|20|55)"-16        1.61MB ± 0%    0.00MB ± 0%   -99.97%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".*"-16                         1.61MB ± 0%    1.61MB ± 0%      ~     (all equal)
PostingsForMatchers/Head/i=~"1.*"-16                        3.15MB ± 0%    3.15MB ± 0%    -0.00%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".*1"-16                        1.61MB ± 0%    1.61MB ± 0%    -0.00%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".+"-16                         17.3MB ± 0%    17.3MB ± 0%    -0.00%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~""-16                           17.3MB ± 0%    17.3MB ± 0%      ~     (p=0.238 n=5+5)
PostingsForMatchers/Head/i!=""-16                           17.3MB ± 0%    17.3MB ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",i=~".*",j="foo"-16           1.61MB ± 0%    1.61MB ± 0%    -0.00%  (p=0.032 n=5+5)
PostingsForMatchers/Head/n="1",i=~".*",i!="2",j="foo"-16    1.61MB ± 0%    1.61MB ± 0%      ~     (p=0.651 n=5+4)
PostingsForMatchers/Head/n="1",i!=""-16                     17.3MB ± 0%    17.3MB ± 0%      ~     (all equal)

name                                                      old allocs/op  new allocs/op  delta
PostingsForMatchers/Head/n="1"-16                             4.00 ± 0%      4.00 ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",j="foo"-16                     9.00 ± 0%      9.00 ± 0%      ~     (all equal)
PostingsForMatchers/Head/j="foo",n="1"-16                     9.00 ± 0%      9.00 ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",j!="foo"-16                    10.0 ± 0%      10.0 ± 0%      ~     (all equal)
PostingsForMatchers/Head/i=~"1[0-9]",j=~"foo|bar"-16          19.0 ± 0%      23.0 ± 0%   +21.05%  (p=0.008 n=5+5)
PostingsForMatchers/Head/j=~"foo|bar"-16                      13.0 ± 0%       7.0 ± 0%   -46.15%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~"(1|2|3|4|5|6|20|55)"-16          4.00 ± 0%     13.00 ± 0%  +225.00%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".*"-16                           7.00 ± 0%      7.00 ± 0%      ~     (all equal)
PostingsForMatchers/Head/i=~"1.*"-16                         11.1k ± 0%     11.1k ± 0%    -0.01%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".*1"-16                          4.00 ± 0%      3.00 ± 0%   -25.00%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~".+"-16                           100k ± 0%      100k ± 0%    -0.00%  (p=0.008 n=5+5)
PostingsForMatchers/Head/i=~""-16                             100k ± 0%      100k ± 0%      ~     (all equal)
PostingsForMatchers/Head/i!=""-16                             100k ± 0%      100k ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",i=~".*",j="foo"-16             12.0 ± 0%      12.0 ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",i=~".*",i!="2",j="foo"-16      18.0 ± 0%      18.0 ± 0%      ~     (all equal)
PostingsForMatchers/Head/n="1",i!=""-16                       100k ± 0%      100k ± 0%      ~     (all equal)
```

Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 14:16:14 +02:00