Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring: implement traceql.Static as interface #3783

Closed
wants to merge 27 commits into from

Conversation

stoewer
Copy link
Contributor

@stoewer stoewer commented Jun 18, 2024

What this PR does:
This makes it possible to add support for new types to traceql.Static without extending the existing struct.

The PR also adds the type traceql.StaticHashCode. The type is intended to be used as map key. This allows the implementation of traceql.Static implementations containing slices.

Which issue(s) this PR fixes:
Is prerequisite for grafana/tempo-squad#435

Checklist

  • Tests updated
  • Documentation added
  • CHANGELOG.md updated - the order of entries should be [CHANGE], [FEATURE], [ENHANCEMENT], [BUGFIX]

@stoewer stoewer force-pushed the refactor-traceql-static branch from a3b6a3e to 4ce7029 Compare June 18, 2024 06:27
@stoewer stoewer force-pushed the refactor-traceql-static branch 2 times, most recently from 39fcb6b to 958466f Compare June 18, 2024 06:42
@stoewer stoewer force-pushed the refactor-traceql-static branch from 958466f to 0b44b1f Compare June 18, 2024 06:51
@stoewer stoewer force-pushed the refactor-traceql-static branch from e08abdb to 2c45326 Compare June 19, 2024 06:04
@stoewer stoewer force-pushed the refactor-traceql-static branch from 80ed433 to 6f75b43 Compare June 25, 2024 05:42
stoewer added 3 commits June 27, 2024 10:08
This enables traceql.Static implementations that are not
comparable values i.e. slices
This enables traceql.Static implementations that are not
comparable values i.e. slices
@stoewer stoewer force-pushed the refactor-traceql-static branch from 81f65fb to d13f6e7 Compare June 27, 2024 03:29
@stoewer
Copy link
Contributor Author

stoewer commented Jun 27, 2024

Latest TraceQL benchmark results:

goos: linux
goarch: amd64
pkg: github.com/grafana/tempo/tempodb/encoding/vparquet4
cpu: AMD Ryzen 7 PRO 6850U with Radeon Graphics     
                                                 │ bench-traceql-08-static-struct.txt │ bench-traceql-08-static-interface-intern.txt │
                                                 │               sec/op               │        sec/op          vs base               │
BackendBlockTraceQL/spanAttValMatch                                       684.6m ± 2%             690.4m ± 2%       ~ (p=0.353 n=10)
BackendBlockTraceQL/spanAttValNoMatch                                     72.30m ± 2%             74.05m ± 1%  +2.42% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicMatch                                 169.8m ± 1%             175.9m ± 1%  +3.62% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicNoMatch                               4.562m ± 1%             4.975m ± 1%  +9.06% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValMatch                                    2.441 ± 1%              2.526 ± 2%  +3.48% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValNoMatch                                 4.738m ± 1%             5.126m ± 1%  +8.20% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch                             405.6m ± 2%             394.4m ± 1%  -2.77% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch#01                          4.797m ± 1%             5.187m ± 1%  +8.12% (p=0.000 n=10)
BackendBlockTraceQL/mixedValNoMatch                                       595.8m ± 1%             625.9m ± 3%  +5.06% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchAnd                                 4.783m ± 3%             5.141m ± 2%  +7.49% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchOr                                  503.9m ± 1%             528.4m ± 2%  +4.87% (p=0.000 n=10)
BackendBlockTraceQL/count                                                  1.909 ± 2%              1.952 ± 3%  +2.22% (p=0.043 n=10)
BackendBlockTraceQL/struct                                                 2.850 ± 6%              2.608 ± 2%  -8.50% (p=0.000 n=10)
BackendBlockTraceQL/||                                                    528.6m ± 1%             553.3m ± 2%  +4.66% (p=0.000 n=10)
BackendBlockTraceQL/mixed                                                 209.3m ± 1%             212.6m ± 1%  +1.59% (p=0.001 n=10)
BackendBlockTraceQL/complex                                               5.356m ± 1%             5.788m ± 1%  +8.07% (p=0.000 n=10)
geomean                                                                   125.9m                  130.4m       +3.55%

                                                 │ bench-traceql-08-static-struct.txt │ bench-traceql-08-static-interface-intern.txt │
                                                 │                B/s                 │          B/s           vs base               │
BackendBlockTraceQL/spanAttValMatch                                      86.89Mi ± 2%            86.16Mi ± 2%       ~ (p=0.353 n=10)
BackendBlockTraceQL/spanAttValNoMatch                                    245.2Mi ± 2%            239.4Mi ± 1%  -2.36% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicMatch                                366.3Mi ± 1%            353.5Mi ± 1%  -3.49% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicNoMatch                              597.4Mi ± 1%            547.8Mi ± 1%  -8.31% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValMatch                                  23.88Mi ± 1%            23.09Mi ± 2%  -3.33% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValNoMatch                                158.1Mi ± 1%            146.1Mi ± 1%  -7.58% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch                            144.1Mi ± 2%            148.2Mi ± 1%  +2.85% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch#01                         184.9Mi ± 1%            171.0Mi ± 1%  -7.51% (p=0.000 n=10)
BackendBlockTraceQL/mixedValNoMatch                                      35.08Mi ± 1%            33.39Mi ± 3%  -4.80% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchAnd                                284.9Mi ± 3%            265.0Mi ± 2%  -6.97% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchOr                                 53.16Mi ± 1%            50.70Mi ± 2%  -4.64% (p=0.000 n=10)
BackendBlockTraceQL/count                                                30.53Mi ± 2%            29.86Mi ± 3%  -2.17% (p=0.043 n=10)
BackendBlockTraceQL/struct                                               4.778Mi ± 6%            5.226Mi ± 2%  +9.38% (p=0.000 n=10)
BackendBlockTraceQL/||                                                   110.9Mi ± 1%            105.9Mi ± 2%  -4.45% (p=0.000 n=10)
BackendBlockTraceQL/mixed                                                276.7Mi ± 1%            272.4Mi ± 1%  -1.56% (p=0.001 n=10)
BackendBlockTraceQL/complex                                              595.9Mi ± 1%            550.3Mi ± 1%  -7.66% (p=0.000 n=10)
geomean                                                                  112.6Mi                 108.7Mi       -3.44%

                                                 │ bench-traceql-08-static-struct.txt │ bench-traceql-08-static-interface-intern.txt │
                                                 │              MB_io/op              │      MB_io/op        vs base                 │
BackendBlockTraceQL/spanAttValMatch                                        62.38 ± 0%            62.38 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/spanAttValNoMatch                                      18.59 ± 0%            18.59 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/spanAttIntrinsicMatch                                  65.22 ± 0%            65.22 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/spanAttIntrinsicNoMatch                                2.858 ± 0%            2.858 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/resourceAttValMatch                                    61.14 ± 0%            61.14 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/resourceAttValNoMatch                                 785.4m ± 0%           785.4m ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/resourceAttIntrinsicMatch                              61.29 ± 0%            61.29 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/resourceAttIntrinsicMatch#01                          930.2m ± 0%           930.2m ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/mixedValNoMatch                                        21.91 ± 0%            21.91 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/mixedValMixedMatchAnd                                  1.429 ± 0%            1.429 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/mixedValMixedMatchOr                                   28.09 ± 0%            28.09 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/count                                                  61.12 ± 0%            61.12 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/struct                                                 14.29 ± 0%            14.29 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/||                                                     61.46 ± 0%            61.46 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/mixed                                                  60.73 ± 0%            60.73 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockTraceQL/complex                                                3.356 ± 1%            3.349 ± 0%       ~ (p=0.754 n=10)
geomean                                                                    14.87                 14.86       -0.01%
¹ all samples are equal

                                                 │ bench-traceql-08-static-struct.txt │ bench-traceql-08-static-interface-intern.txt │
                                                 │                B/op                │         B/op          vs base                │
BackendBlockTraceQL/spanAttValMatch                                      238.9Mi ± 0%           158.7Mi ± 0%  -33.56% (p=0.000 n=10)
BackendBlockTraceQL/spanAttValNoMatch                                    27.86Mi ± 0%           27.87Mi ± 0%   +0.02% (p=0.014 n=10)
BackendBlockTraceQL/spanAttIntrinsicMatch                                25.35Mi ± 1%           21.63Mi ± 0%  -14.68% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicNoMatch                              2.601Mi ± 0%           2.602Mi ± 0%   +0.01% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValMatch                                  1.467Gi ± 0%           1.290Gi ± 0%  -12.08% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValNoMatch                                2.553Mi ± 0%           2.554Mi ± 0%   +0.01% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch                           125.58Mi ± 0%           83.81Mi ± 1%  -33.26% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch#01                         2.557Mi ± 0%           2.557Mi ± 0%   +0.01% (p=0.000 n=10)
BackendBlockTraceQL/mixedValNoMatch                                      28.18Mi ± 0%           27.94Mi ± 0%   -0.82% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchAnd                                2.557Mi ± 0%           2.557Mi ± 0%   +0.01% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchOr                                 2.839Mi ± 0%           2.838Mi ± 0%        ~ (p=0.460 n=10)
BackendBlockTraceQL/count                                               1078.7Mi ± 0%          1015.6Mi ± 0%   -5.85% (p=0.000 n=10)
BackendBlockTraceQL/struct                                               516.5Mi ± 1%           465.6Mi ± 0%   -9.84% (p=0.000 n=10)
BackendBlockTraceQL/||                                                   16.76Mi ± 0%           12.51Mi ± 0%  -25.33% (p=0.000 n=10)
BackendBlockTraceQL/mixed                                                20.37Mi ± 0%           14.30Mi ± 0%  -29.82% (p=0.000 n=10)
BackendBlockTraceQL/complex                                              2.638Mi ± 0%           2.640Mi ± 0%        ~ (p=0.075 n=10)
geomean                                                                  26.39Mi                23.41Mi       -11.30%

                                                 │ bench-traceql-08-static-struct.txt │ bench-traceql-08-static-interface-intern.txt │
                                                 │             allocs/op              │      allocs/op       vs base                 │
BackendBlockTraceQL/spanAttValMatch                                       2.174M ± 0%           2.415M ± 0%   +11.10% (p=0.000 n=10)
BackendBlockTraceQL/spanAttValNoMatch                                     42.02k ± 0%           42.03k ± 0%    +0.02% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicMatch                                 207.8k ± 0%           310.2k ± 0%   +49.27% (p=0.000 n=10)
BackendBlockTraceQL/spanAttIntrinsicNoMatch                               41.69k ± 0%           41.69k ± 0%    +0.02% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValMatch                                   10.04M ± 0%           18.02M ± 0%   +79.55% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttValNoMatch                                 41.71k ± 0%           41.72k ± 0%    +0.02% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch                             1.359M ± 0%           1.442M ± 0%    +6.06% (p=0.000 n=10)
BackendBlockTraceQL/resourceAttIntrinsicMatch#01                          41.71k ± 0%           41.72k ± 0%    +0.02% (p=0.000 n=10)
BackendBlockTraceQL/mixedValNoMatch                                       46.58k ± 0%           43.55k ± 0%    -6.51% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchAnd                                 41.75k ± 0%           41.76k ± 0%    +0.02% (p=0.000 n=10)
BackendBlockTraceQL/mixedValMixedMatchOr                                  44.68k ± 0%           44.70k ± 0%    +0.04% (p=0.000 n=10)
BackendBlockTraceQL/count                                                 5.982M ± 0%           9.981M ± 0%   +66.87% (p=0.000 n=10)
BackendBlockTraceQL/struct                                                4.388M ± 0%          28.367M ± 0%  +546.40% (p=0.000 n=10)
BackendBlockTraceQL/||                                                    207.0k ± 0%           228.3k ± 0%   +10.27% (p=0.000 n=10)
BackendBlockTraceQL/mixed                                                 214.2k ± 0%           255.2k ± 0%   +19.17% (p=0.000 n=10)
BackendBlockTraceQL/complex                                               42.11k ± 0%           42.11k ± 0%    +0.02% (p=0.000 n=10)
geomean                                                                   233.9k                295.3k        +26.30%

@stoewer
Copy link
Contributor Author

stoewer commented Jun 27, 2024

Latest metrics benchmark results:

goos: linux
goarch: amd64
pkg: github.com/grafana/tempo/tempodb/encoding/vparquet4
cpu: AMD Ryzen 7 PRO 6850U with Radeon Graphics     
                                                                             │ bench-metrics-09-static-struct.txt │ bench-metrics-09-static-interface-intern.txt │
                                                                             │               sec/op               │        sec/op         vs base                │
BackendBlockQueryRange/{}_|_rate()/5-16                                                               2.237 ±  8%            2.072 ±  8%   -7.39% (p=0.007 n=10)
BackendBlockQueryRange/{}_|_rate()/7-16                                                               2.308 ±  1%            2.208 ±  1%   -4.33% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/5-16                                                     4.272 ± 16%            3.677 ± 12%  -13.93% (p=0.007 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/7-16                                                     4.873 ±  1%            4.199 ±  2%  -13.83% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5-16                                    3.146 ± 22%            2.745 ±  9%  -12.73% (p=0.043 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7-16                                    3.479 ±  0%            3.070 ±  2%  -11.76% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5-16                                            3.765 ±  7%            3.732 ±  5%        ~ (p=0.436 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7-16                                            4.030 ±  5%            3.836 ±  4%   -4.81% (p=0.019 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5-16                         230.0m ±  6%           215.5m ±  3%   -6.30% (p=0.005 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7-16                         231.4m ±  1%           223.0m ±  1%   -3.63% (p=0.000 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/5-16                                                  285.0m ±  1%           279.4m ±  1%   -1.99% (p=0.000 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/7-16                                                  287.5m ±  0%           282.3m ±  5%        ~ (p=0.393 n=10)
geomean                                                                                               1.437                  1.336         -7.07%

                                                                             │ bench-metrics-09-static-struct.txt │ bench-metrics-09-static-interface-intern.txt │
                                                                             │              MB_IO/op              │      MB_IO/op        vs base                 │
BackendBlockQueryRange/{}_|_rate()/5-16                                                                34.39 ± 0%            34.39 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()/7-16                                                                34.39 ± 0%            34.39 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(name)/5-16                                                      44.62 ± 0%            44.62 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(name)/7-16                                                      44.62 ± 0%            44.62 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5-16                                     34.87 ± 0%            34.87 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7-16                                     34.87 ± 0%            34.87 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5-16                                             38.73 ± 0%            38.73 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7-16                                             38.73 ± 0%            38.73 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5-16                           34.87 ± 0%            34.87 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7-16                           34.87 ± 0%            34.87 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{status=error}_|_rate()/5-16                                                    36.07 ± 0%            36.07 ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{status=error}_|_rate()/7-16                                                    36.07 ± 0%            36.07 ± 0%       ~ (p=1.000 n=10) ¹
geomean                                                                                                37.10                 37.10       +0.00%
¹ all samples are equal

                                                                             │ bench-metrics-09-static-struct.txt │ bench-metrics-09-static-interface-intern.txt │
                                                                             │              spans/op              │      spans/op        vs base                 │
BackendBlockQueryRange/{}_|_rate()/5-16                                                               5.359M ± 0%           5.359M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()/7-16                                                               8.537M ± 0%           8.537M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(name)/5-16                                                     5.359M ± 0%           5.359M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(name)/7-16                                                     8.537M ± 0%           8.537M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5-16                                    5.359M ± 0%           5.359M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7-16                                    8.537M ± 0%           8.537M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5-16                                            5.359M ± 0%           5.359M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7-16                                            8.537M ± 0%           8.537M ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5-16                          296.6k ± 0%           296.6k ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7-16                          382.0k ± 0%           382.0k ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{status=error}_|_rate()/5-16                                                   54.76k ± 0%           54.76k ± 0%       ~ (p=1.000 n=10) ¹
BackendBlockQueryRange/{status=error}_|_rate()/7-16                                                   94.10k ± 0%           94.10k ± 0%       ~ (p=1.000 n=10) ¹
geomean                                                                                               1.923M                1.923M       +0.00%
¹ all samples are equal

                                                                             │ bench-metrics-09-static-struct.txt │ bench-metrics-09-static-interface-intern.txt │
                                                                             │              spans/s               │       spans/s         vs base                │
BackendBlockQueryRange/{}_|_rate()/5-16                                                              2.395M ±  9%           2.587M ±  9%   +7.99% (p=0.007 n=10)
BackendBlockQueryRange/{}_|_rate()/7-16                                                              3.700M ±  1%           3.867M ±  1%   +4.53% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/5-16                                                    1.255M ± 19%           1.458M ± 13%  +16.15% (p=0.007 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/7-16                                                    1.752M ±  1%           2.033M ±  2%  +16.05% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5-16                                   1.703M ± 28%           1.952M ± 10%  +14.61% (p=0.043 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7-16                                   2.454M ±  0%           2.781M ±  2%  +13.32% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5-16                                           1.424M ±  6%           1.436M ±  5%        ~ (p=0.436 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7-16                                           2.119M ±  5%           2.225M ±  4%   +5.04% (p=0.019 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5-16                         1.290M ±  7%           1.377M ±  3%   +6.73% (p=0.005 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7-16                         1.651M ±  1%           1.713M ±  1%   +3.76% (p=0.000 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/5-16                                                  192.1k ±  1%           196.0k ±  1%   +2.03% (p=0.000 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/7-16                                                  327.3k ±  0%           333.4k ±  5%        ~ (p=0.363 n=10)
geomean                                                                                              1.338M                 1.440M         +7.60%

                                                                             │ bench-metrics-09-static-struct.txt │ bench-metrics-09-static-interface-intern.txt │
                                                                             │                B/op                │         B/op          vs base                │
BackendBlockQueryRange/{}_|_rate()/5-16                                                             50.28Mi ± 34%          52.37Mi ± 58%        ~ (p=0.839 n=10)
BackendBlockQueryRange/{}_|_rate()/7-16                                                             53.16Mi ± 37%          32.68Mi ± 82%        ~ (p=0.071 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/5-16                                                   69.50Mi ± 46%          67.32Mi ± 66%        ~ (p=0.393 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/7-16                                                   69.62Mi ± 30%          68.51Mi ± 16%        ~ (p=0.105 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5-16                                  68.11Mi ± 32%          48.09Mi ± 37%        ~ (p=0.063 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7-16                                  68.12Mi ±  8%          65.70Mi ± 45%        ~ (p=0.739 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5-16                                          439.4Mi ± 10%          432.7Mi ± 10%        ~ (p=0.684 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7-16                                          419.8Mi ± 10%          435.3Mi ± 16%        ~ (p=0.481 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5-16                        14.61Mi ±  9%          12.97Mi ± 19%  -11.27% (p=0.023 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7-16                        14.05Mi ± 16%          12.60Mi ± 10%        ~ (p=0.143 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/5-16                                                 6.260Mi ± 14%          5.986Mi ± 10%        ~ (p=0.739 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/7-16                                                 6.018Mi ± 20%          6.174Mi ± 23%        ~ (p=0.684 n=10)
geomean                                                                                             45.82Mi                41.79Mi         -8.79%

                                                                             │ bench-metrics-09-static-struct.txt │ bench-metrics-09-static-interface-intern.txt │
                                                                             │             allocs/op              │      allocs/op       vs base                 │
BackendBlockQueryRange/{}_|_rate()/5-16                                                              522.6k ±  0%           522.6k ± 0%         ~ (p=0.897 n=10)
BackendBlockQueryRange/{}_|_rate()/7-16                                                              522.6k ±  0%           522.6k ± 0%         ~ (p=0.445 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/5-16                                                    536.9k ±  0%           539.6k ± 0%    +0.49% (p=0.001 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/7-16                                                    540.2k ±  0%           542.8k ± 0%    +0.49% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5-16                                   523.8k ±  0%           523.7k ± 0%         ~ (p=0.383 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7-16                                   523.9k ±  0%           524.1k ± 0%    +0.03% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5-16                                           1.923M ± 11%          10.921M ± 1%  +467.91% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7-16                                           1.971M ± 13%          11.060M ± 2%  +461.21% (p=0.000 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5-16                         117.8k ±  0%           117.8k ± 0%         ~ (p=0.136 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7-16                         117.8k ±  0%           117.8k ± 0%         ~ (p=0.342 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/5-16                                                  76.53k ±  0%           76.54k ± 0%         ~ (p=0.054 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/7-16                                                  76.53k ±  0%           76.54k ± 0%         ~ (p=0.078 n=10)
geomean                                                                                              370.5k                 494.9k        +33.55%

I don't really trust the results for the sec/op. The variance is very high for some sub benchmarks (up to +/-22%). Here are the results for the previous run (same code slightly different parameters):

goos: linux
goarch: amd64
pkg: github.com/grafana/tempo/tempodb/encoding/vparquet4
cpu: AMD Ryzen 7 PRO 6850U with Radeon Graphics     
                                                                          │ bench-metrics-08-static-struct.txt │ bench-metrics-08-static-interface-intern.txt │
                                                                          │               sec/op               │        sec/op         vs base                │
BackendBlockQueryRange/{}_|_rate()/5                                                               2.247 ± 11%            2.281 ± 16%        ~ (p=0.190 n=10)
BackendBlockQueryRange/{}_|_rate()/7                                                               2.305 ±  1%            2.550 ±  7%  +10.63% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/5                                                     4.107 ± 17%            4.280 ± 19%        ~ (p=0.190 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(name)/7                                                     4.701 ±  1%            5.080 ±  5%   +8.07% (p=0.000 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/5                                    3.005 ± 14%            3.139 ± 14%        ~ (p=0.089 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(resource.service.name)/7                                    3.440 ±  7%            3.590 ±  2%   +4.36% (p=0.023 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/5                                            4.881 ±  9%            5.099 ± 10%        ~ (p=0.143 n=10)
BackendBlockQueryRange/{}_|_rate()_by_(span.http.url)/7                                            4.915 ±  6%            5.170 ±  3%   +5.19% (p=0.003 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/5                         238.4m ±  5%           234.4m ±  7%        ~ (p=0.912 n=10)
BackendBlockQueryRange/{resource.service.name=`loki-ingester`}_|_rate()/7                         244.9m ±  1%           246.6m ±  3%        ~ (p=0.165 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/5                                                  285.0m ±  2%           302.4m ±  1%   +6.09% (p=0.000 n=10)
BackendBlockQueryRange/{status=error}_|_rate()/7                                                  285.5m ±  2%           299.1m ±  1%   +4.77% (p=0.000 n=10)
geomean                                                                                            1.488                  1.553         +4.34%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant