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
Cyril Tovena
715274ec9d
Reintroduce tests.
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-08 10:10:18 +02:00
Cyril Tovena
7dab60e56d
More optimization.
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-07 17:15:20 +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
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
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
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
Cyril Tovena
17a558336b
wip
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 09:13:40 +02:00
Cyril Tovena
0bb2d1954b
wip
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-06 09:12:45 +02:00
Cyril Tovena
d217825af8
guards against too many matches.
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 16:46:24 +02:00
Cyril Tovena
639cd00721
Uses the variadic function.
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 15:59:40 +02:00
Cyril Tovena
623c3ebeec
Remove redundant code and support charclass without base.
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 15:16:21 +02:00
Cyril Tovena
bd4d997bee
lint
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 14:00:18 +02:00
Cyril Tovena
7ea8609024
typo
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 13:54:55 +02:00
Cyril Tovena
453cc5de75
Add a comment for the charclass limit.
...
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 13:52:12 +02:00
Cyril Tovena
c751cfbfce
Improve findSetMatches
to support concatenation.
...
This improves how we find `SetMatches` for regexp. Notably it allows to support concatenation
such as `api_(v1|prom)_push` for which the resulting set matches are `api_v1_push` and `api_prom_push`.
I had to support characters classes too since the syntax may try to optimize alternates with them.
In the end the code is also more robust than the previous implementation relying on the stringyfied version of the regexp.
This could be upstreamed later.
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2021-10-05 13:43:41 +02:00
Peter Štibraný
04e7926b03
Merge pull request #13 from grafana/splitting-compactor
...
Compactor with support for splitting input blocks into multiple output blocks
2021-09-28 10:53:20 +02:00
Peter Štibraný
57daf79192
More review feedback.
2021-09-28 10:29:54 +02:00
Peter Štibraný
db7fa7621c
Use <ix+1>_of_<shardCount> formatting for better readibility.
2021-09-28 10:13:48 +02:00
Peter Štibraný
861f9083d8
Fix directory cleanup in case of compaction failure.
2021-09-27 17:05:14 +02:00
Peter Štibraný
ffd281ab9d
Address feedback.
2021-09-27 16:33:43 +02:00
Peter Štibraný
58dab3de8a
Source blocks are deletable only if they are ALL empty.
2021-09-27 16:24:46 +02:00
Peter Štibraný
336f4260db
Removed commented code.
2021-09-27 14:34:04 +02:00
Peter Štibraný
006c2d7d55
All output blocks will have the same timestamp.
...
Minor updates.
2021-09-27 14:22:51 +02:00
Peter Štibraný
63dbb1c69a
Make lint happy.
2021-09-27 12:49:08 +02:00
Peter Štibraný
78396b67dd
Compactor with support for splitting input blocks into multiple output blocks.
2021-09-27 12:40:11 +02:00
Ganesh Vernekar
a9bc9c27ba
Merge pull request #11 from grafana/codesome/syncprom
...
Sync with upstream Prometheus
2021-09-21 18:37:41 +05:30
Ganesh Vernekar
0af335cfe8
Merge remote-tracking branch 'upstream/main' into codesome/syncprom
2021-09-21 17:38:40 +05:30
Bryan Boreham
5a754bc043
Short-circuit vector binary ops ( #9362 )
...
In degenerate cases we can save the effort of building a map.
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2021-09-21 17:37:36 +05:30
Bryan Boreham
c4942ef3b7
Optimise query_range by computing join signatures just once ( #9360 )
...
* Add benchmark case for many-to-one join
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* query_range: compute join signatures just once
For an expression like `a + on(p,q) b`, extract the `p,q` part from each
series once, instead of re-computing at every step of the range.
Although there was a cache, computing the key by concatenating all
labels was expensive.
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2021-09-21 15:58:39 +05:30
Bryan Boreham
7d105277fe
Optimise topk where k==1 ( #9365 )
...
* Add benchmark for query_range with topk
Modify sample data so values within a metric differ
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Optimise topk where k==1
In this case we don't need a heap to keep track of values; just a single
slot is fine.
Simplify the initialization of the heap: since all cases start off as a
single-item heap we can just assign the value directly.
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Allow at least one slot in results for topk, quantile
k isn't set for quantile, but we need space to start collecting values
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2021-09-21 15:57:28 +05:30
Julius Volz
03d084f862
Merge pull request #9351 from prometheus/set-npm-version
...
specify npm version in the engine
2021-09-20 13:39:32 +02:00
Julien Pivotto
629926268a
Merge pull request #9361 from hanjm/feature/upgrade-alecthomas-units
...
Upgrade github.com/alecthomas/units, which implement encoding.TextMarshaler
2021-09-20 09:41:50 +02:00
hanjm
d1b16b4f21
Upgrade github.com/alecthomas/units, which implement encoding.TextMarshaler
...
Signed-off-by: hanjm <hanjinming@outlook.com>
2021-09-19 17:45:22 +08:00
Julien Pivotto
3f51c8bf39
Merge pull request #9358 from sennatitcomb/st
...
Typo fixes
2021-09-18 10:38:50 +02:00
sennatitcomb
9e7ae7b9ac
Typo fixes
...
Signed-off-by: sennatitcomb <senna.titcomb@intel.com>
2021-09-17 15:48:02 -07:00
Ganesh Vernekar
84f8307aa1
Merge remote-tracking branch 'upstream/main' into codesome/syncprom
...
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
2021-09-17 15:58:45 +05:30
Julien Pivotto
da3fb842b4
Add Jessica as Promtool maintainer ( #9348 )
...
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2021-09-17 01:10:32 +02:00