Skip to content

OTLP to directly write to an interface which can hide storage details#16951

Merged
krajorama merged 65 commits intomainfrom
otlp-to-appender
Sep 8, 2025
Merged

OTLP to directly write to an interface which can hide storage details#16951
krajorama merged 65 commits intomainfrom
otlp-to-appender

Conversation

@krajorama
Copy link
Member

@krajorama krajorama commented Jul 30, 2025

Original PR: #16855
Original Title: OTLP to directly writes to storage.Appender
Main change by @dashpole . @krajorama adopting the PR while @dashpole is on vacation.

Remove intermediary OTLP -> PRW 1.0 step before writing to the appender. It also adds a CombinedAppender interface, which consolidates error handling, and makes it possible to re-use the library in Mimir or other storage backends, which currently uses it to translate to PRW 1.0.

Similar to #16827, but maintains existing code structure and unit tests.

Alternative to #16784.

Notable Changes:

  • Add OTLP-specific metrics for metadata and exemplar write failures:
    • otlp_without_metadata_appended_samples_total instead of remote_write_without_metadata_appended_samples_total (this still exists just won't be used here).
    • otlp_out_of_order_exemplars_total replaces "Error on ingesting out-of-order exemplars" warning log.
  • It now calls appender.UpdateMetadata with metadata. The unit is converted using the otlptranslator library.
  • It now calls appender.AppendHistogramCTZeroSample and appender.AppendCTZeroSample when the created-timestamp-zero-ingestion feature is enabled.

Benchmark summary: 36% less CPU, 38% fewer bytes, 19% fewer allocations

$ benchstat main.txt directappender.txt
goos: linux
goarch: amd64
pkg: github.com/prometheus/prometheus/storage/remote/otlptranslator/prometheusremotewrite
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
                                                                                                                                                              │    main.txt    │         directappender.txt          │
                                                                                                                                                              │     sec/op     │    sec/op     vs base               │
ConvertBucketLayout/gap_0-2                                                                                                                                      18.95µ ±   8%   18.19µ ±  4%        ~ (p=0.093 n=6)
ConvertBucketLayout/gap_1-2                                                                                                                                      20.38µ ±  11%   18.13µ ±  5%  -11.07% (p=0.009 n=6)
ConvertBucketLayout/gap_2-2                                                                                                                                      19.05µ ± 140%   18.22µ ± 25%        ~ (p=0.699 n=6)
ConvertBucketLayout/gap_3-2                                                                                                                                      23.75µ ±   4%   10.46µ ±  4%  -55.98% (p=0.002 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_0-2                                                                                                                      14.83µ ±   4%   14.75µ ±  4%        ~ (p=0.699 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_1-2                                                                                                                      14.56µ ±   2%   14.53µ ±  3%        ~ (p=0.784 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_2-2                                                                                                                      14.86µ ±  20%   14.66µ ±  9%        ~ (p=0.132 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_3-2                                                                                                                     19.582µ ±  15%   6.852µ ±  2%  -65.01% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2          18.60m ±   8%   14.76m ±  4%  -20.65% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2          30.10m ±  40%   21.15m ±  5%  -29.75% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2         37.82m ±   6%   27.43m ±  4%  -27.48% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2         71.64m ±  13%   48.32m ±  9%  -32.55% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2         70.99m ±   8%   52.67m ± 18%  -25.81% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2        80.03m ±   3%   61.63m ±  2%  -22.99% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2          25.52m ±   5%   14.77m ± 11%  -42.13% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2          31.44m ±   4%   18.84m ±  3%  -40.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2         37.92m ±  23%   23.00m ±  4%  -39.35% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2         75.28m ±   4%   30.67m ±  3%  -59.26% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2         85.59m ±   8%   36.87m ±  3%  -56.92% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2        88.03m ±   7%   41.00m ±  1%  -53.43% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2       43.63m ±   4%   29.28m ±  4%  -32.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2       65.93m ±  14%   40.59m ±  3%  -38.44% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2      79.91m ±  18%   51.47m ±  3%  -35.59% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2     146.47m ±  24%   79.46m ±  2%  -45.75% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2     170.66m ±  20%   93.22m ±  8%  -45.37% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2     174.0m ±   7%   102.5m ±  4%  -41.09% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2          18.06m ±   2%   14.80m ±  2%  -18.03% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2          28.28m ±  16%   21.53m ±  3%  -23.86% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2         36.69m ±   3%   28.42m ±  3%  -22.54% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2         62.61m ±   4%   47.47m ±  2%  -24.18% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2         70.21m ±   4%   52.83m ±  2%  -24.76% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2        84.62m ±   3%   62.64m ±  1%  -25.98% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2          24.11m ±   4%   14.76m ±  4%  -38.77% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2          31.24m ±   3%   19.51m ±  4%  -37.54% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2         38.30m ±   4%   23.40m ±  2%  -38.92% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2         75.22m ±   4%   31.72m ±  4%  -57.82% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2         78.43m ±   3%   36.82m ±  4%  -53.05% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2        84.26m ±   8%   41.01m ±  1%  -51.33% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2       43.09m ±   3%   29.98m ±  4%  -30.44% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2       64.92m ±   3%   40.34m ±  3%  -37.87% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2      79.51m ±  11%   51.82m ±  2%  -34.82% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2     139.29m ±   7%   79.55m ±  2%  -42.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2     171.15m ±   7%   93.60m ±  3%  -45.31% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2     173.2m ±   3%   102.0m ±  2%  -41.07% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2         18.84m ±   2%   15.49m ±  3%  -17.81% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2         29.38m ±   6%   22.33m ±  2%  -24.00% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2        37.53m ±   6%   28.41m ±  8%  -24.31% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2        60.82m ±   9%   47.81m ±  2%  -21.40% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2        71.37m ±   5%   52.80m ± 10%  -26.02% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2       86.75m ±  24%   62.25m ±  2%  -28.24% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2         24.07m ±   2%   14.97m ±  5%  -37.81% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2         31.65m ±   7%   19.71m ± 13%  -37.71% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2        38.34m ±   3%   23.55m ±  2%  -38.58% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2        74.40m ±   4%   30.92m ±  4%  -58.44% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2        79.92m ±   4%   37.18m ±  5%  -53.48% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2       83.36m ±   9%   41.37m ±  3%  -50.38% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2      44.37m ±   8%   30.61m ±  4%  -31.01% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2      65.65m ±   2%   40.90m ±  3%  -37.69% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2     84.19m ±  14%   53.21m ±  3%  -36.81% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2    135.35m ±   3%   81.49m ±  7%  -39.80% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2    171.30m ±  10%   94.12m ±  8%  -45.06% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2    174.4m ±   6%   101.4m ±  2%  -41.85% (p=0.002 n=6)
geomean                                                                                                                                                          21.19m          13.54m        -36.12%

                                                                                                                                                              │   main.txt    │         directappender.txt          │
                                                                                                                                                              │     B/op      │     B/op      vs base               │
ConvertBucketLayout/gap_0-2                                                                                                                                      32.66Ki ± 0%   32.62Ki ± 0%   -0.12% (p=0.002 n=6)
ConvertBucketLayout/gap_1-2                                                                                                                                      32.66Ki ± 0%   32.62Ki ± 0%   -0.12% (p=0.002 n=6)
ConvertBucketLayout/gap_2-2                                                                                                                                      32.66Ki ± 0%   32.62Ki ± 0%   -0.12% (p=0.002 n=6)
ConvertBucketLayout/gap_3-2                                                                                                                                      35.65Ki ± 0%   15.98Ki ± 0%  -55.16% (p=0.002 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_0-2                                                                                                                      24.66Ki ± 0%   24.62Ki ± 0%   -0.16% (p=0.002 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_1-2                                                                                                                      24.66Ki ± 0%   24.62Ki ± 0%   -0.16% (p=0.002 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_2-2                                                                                                                      24.66Ki ± 0%   24.62Ki ± 0%   -0.16% (p=0.002 n=6)
ConvertHistogramBucketsToNHCBLayout/gap_3-2                                                                                                                     27.648Ki ± 0%   7.984Ki ± 0%  -71.12% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2          3.017Mi ± 0%   2.417Mi ± 0%  -19.90% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2          7.235Mi ± 0%   4.486Mi ± 0%  -37.99% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2        11.450Mi ± 0%   6.565Mi ± 0%  -42.66% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2        10.948Mi ± 0%   5.782Mi ± 0%  -47.19% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2        15.168Mi ± 0%   7.868Mi ± 0%  -48.12% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2       19.374Mi ± 0%   9.944Mi ± 0%  -48.67% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2          7.766Mi ± 0%   6.133Mi ± 0%  -21.03% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2         10.644Mi ± 0%   7.757Mi ± 0%  -27.13% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2        13.614Mi ± 0%   9.463Mi ± 0%  -30.49% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2         22.19Mi ± 0%   11.05Mi ± 0%  -50.21% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2         25.07Mi ± 0%   12.67Mi ± 0%  -49.47% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2        28.02Mi ± 0%   14.37Mi ± 0%  -48.71% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2      10.625Mi ± 0%   8.639Mi ± 0%  -18.69% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2       17.70Mi ± 0%   12.34Mi ± 0%  -30.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2      24.87Mi ± 0%   16.14Mi ± 0%  -35.10% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2      32.97Mi ± 0%   16.91Mi ± 0%  -48.72% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2      40.05Mi ± 0%   20.60Mi ± 0%  -48.57% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2     47.21Mi ± 0%   24.41Mi ± 0%  -48.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2          3.017Mi ± 0%   2.413Mi ± 0%  -20.02% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2          7.228Mi ± 0%   4.487Mi ± 0%  -37.92% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2        11.446Mi ± 0%   6.566Mi ± 0%  -42.63% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2        10.952Mi ± 0%   5.782Mi ± 0%  -47.21% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2        15.163Mi ± 0%   7.869Mi ± 0%  -48.11% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2       19.373Mi ± 0%   9.944Mi ± 0%  -48.67% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2          7.769Mi ± 0%   6.135Mi ± 0%  -21.03% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2         10.646Mi ± 0%   7.763Mi ± 0%  -27.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2        13.614Mi ± 0%   9.461Mi ± 0%  -30.51% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2         22.21Mi ± 0%   11.05Mi ± 0%  -50.26% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2         25.06Mi ± 0%   12.66Mi ± 0%  -49.48% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2        28.03Mi ± 0%   14.38Mi ± 0%  -48.68% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2      10.621Mi ± 0%   8.645Mi ± 0%  -18.61% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2       17.71Mi ± 0%   12.34Mi ± 0%  -30.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2      24.88Mi ± 0%   16.13Mi ± 0%  -35.18% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2      32.99Mi ± 0%   16.91Mi ± 0%  -48.74% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2      40.06Mi ± 0%   20.60Mi ± 0%  -48.57% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2     47.21Mi ± 0%   24.42Mi ± 0%  -48.28% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2         3.024Mi ± 0%   2.425Mi ± 0%  -19.82% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2         7.237Mi ± 0%   4.499Mi ± 0%  -37.83% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2       11.453Mi ± 0%   6.578Mi ± 0%  -42.57% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2       10.958Mi ± 0%   5.790Mi ± 0%  -47.16% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2       15.171Mi ± 0%   7.877Mi ± 0%  -48.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2      19.387Mi ± 0%   9.952Mi ± 0%  -48.66% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2         7.776Mi ± 0%   6.141Mi ± 0%  -21.03% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2        10.653Mi ± 0%   7.764Mi ± 0%  -27.12% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2       13.612Mi ± 0%   9.480Mi ± 0%  -30.36% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2        22.21Mi ± 0%   11.05Mi ± 0%  -50.24% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2        25.06Mi ± 0%   12.67Mi ± 0%  -49.44% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2       28.03Mi ± 0%   14.38Mi ± 0%  -48.71% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2     10.633Mi ± 0%   8.648Mi ± 0%  -18.67% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2      17.71Mi ± 0%   12.35Mi ± 0%  -30.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2     24.89Mi ± 0%   16.16Mi ± 0%  -35.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2     32.99Mi ± 0%   16.92Mi ± 0%  -48.72% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2     40.07Mi ± 0%   20.61Mi ± 0%  -48.56% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2    47.23Mi ± 0%   24.43Mi ± 0%  -48.27% (p=0.002 n=6)
geomean                                                                                                                                                          7.021Mi        4.358Mi       -37.93%

                                                                                                                                                              │   main.txt   │          directappender.txt          │
                                                                                                                                                              │  allocs/op   │  allocs/op   vs base                 │
ConvertBucketLayout/gap_0-2                                                                                                                                       14.00 ± 0%    14.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertBucketLayout/gap_1-2                                                                                                                                       14.00 ± 0%    14.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertBucketLayout/gap_2-2                                                                                                                                       14.00 ± 0%    14.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertBucketLayout/gap_3-2                                                                                                                                       19.00 ± 0%    19.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertHistogramBucketsToNHCBLayout/gap_0-2                                                                                                                       13.00 ± 0%    13.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertHistogramBucketsToNHCBLayout/gap_1-2                                                                                                                       13.00 ± 0%    13.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertHistogramBucketsToNHCBLayout/gap_2-2                                                                                                                       13.00 ± 0%    13.00 ± 0%        ~ (p=1.000 n=6) ¹
ConvertHistogramBucketsToNHCBLayout/gap_3-2                                                                                                                       18.00 ± 0%    18.00 ± 0%        ~ (p=1.000 n=6) ¹
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2          82.77k ± 0%   73.71k ± 0%  -10.94% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2          146.8k ± 0%   125.7k ± 0%  -14.35% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2         206.8k ± 0%   175.7k ± 0%  -15.02% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2         140.9k ± 0%   127.7k ± 0%   -9.37% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2         204.9k ± 0%   179.7k ± 0%  -12.31% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2        264.9k ± 0%   229.7k ± 0%  -13.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2          79.12k ± 0%   47.93k ± 0%  -39.42% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2         115.12k ± 0%   77.93k ± 0%  -32.30% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2         146.1k ± 0%   103.9k ± 0%  -28.87% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2         98.42k ± 0%   65.94k ± 0%  -33.00% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2        134.43k ± 0%   95.94k ± 0%  -28.63% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2        165.4k ± 0%   121.9k ± 0%  -26.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2       161.9k ± 0%   121.6k ± 0%  -24.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2       261.9k ± 0%   203.6k ± 0%  -22.26% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2      352.9k ± 0%   279.6k ± 0%  -20.77% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2      239.4k ± 0%   193.6k ± 0%  -19.11% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2      339.4k ± 0%   275.6k ± 0%  -18.79% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2     430.4k ± 0%   351.6k ± 0%  -18.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2          82.78k ± 0%   73.72k ± 0%  -10.94% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2          146.8k ± 0%   125.7k ± 0%  -14.35% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2         206.8k ± 0%   175.7k ± 0%  -15.02% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2         140.9k ± 0%   127.7k ± 0%   -9.38% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2         204.9k ± 0%   179.7k ± 0%  -12.30% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2        264.9k ± 0%   229.7k ± 0%  -13.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2          79.13k ± 0%   47.95k ± 0%  -39.41% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2         115.14k ± 0%   77.95k ± 0%  -32.30% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2         146.1k ± 0%   103.9k ± 0%  -28.87% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2         98.44k ± 0%   65.95k ± 0%  -33.01% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2        134.44k ± 0%   95.95k ± 0%  -28.63% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2        165.4k ± 0%   122.0k ± 0%  -26.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2       161.9k ± 0%   121.6k ± 0%  -24.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2       261.9k ± 0%   203.6k ± 0%  -22.26% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2      352.9k ± 0%   279.6k ± 0%  -20.77% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2      239.4k ± 0%   193.6k ± 0%  -19.11% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2      339.4k ± 0%   275.6k ± 0%  -18.79% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2     430.3k ± 0%   351.6k ± 0%  -18.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2         82.83k ± 0%   73.77k ± 0%  -10.93% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2         146.8k ± 0%   125.8k ± 0%  -14.34% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2        206.8k ± 0%   175.8k ± 0%  -15.01% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2        141.0k ± 0%   127.8k ± 0%   -9.37% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2        205.0k ± 0%   179.8k ± 0%  -12.30% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2       265.0k ± 0%   229.8k ± 0%  -13.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-2         79.17k ± 0%   47.99k ± 0%  -39.38% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-2        115.18k ± 0%   78.00k ± 0%  -32.28% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-2        146.2k ± 0%   104.0k ± 0%  -28.86% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-2        98.49k ± 0%   66.00k ± 0%  -32.99% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-2       134.48k ± 0%   96.00k ± 0%  -28.62% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-2       165.5k ± 0%   122.0k ± 0%  -26.28% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-2      162.0k ± 0%   121.7k ± 0%  -24.88% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-2      262.0k ± 0%   203.7k ± 0%  -22.25% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-2     353.0k ± 0%   279.7k ± 0%  -20.77% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-2     239.4k ± 0%   193.7k ± 0%  -19.11% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-2     339.4k ± 0%   275.7k ± 0%  -18.78% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-2    430.4k ± 0%   351.7k ± 0%  -18.30% (p=0.002 n=6)
geomean                                                                                                                                                          52.63k        42.39k       -19.46%
¹ all samples are equal

Which issue(s) does the PR fix:

Does this PR introduce a user-facing change?

[PERF] OTLP: write directly to TSDB instead of converting to remote-write protocol first. #16951
[FEATURE] OTLP: write start time of metrics as created time zero samples into TSDB when created time injection is enabled.  #16951

dashpole and others added 6 commits July 30, 2025 15:49
Signed-off-by: David Ashpole <dashpole@google.com>
Signed-off-by: David Ashpole <dashpole@google.com>
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
to also check metadata.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
also fix inconsistent classic histogram. Count was lower than
sum of bucket values.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
Defer converting to whatever actual model/labels representation is used
by storage.

Prometheus will use whatever is set as build label.
Downstream might keep slices for example when converting to something
like remote write 1.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
https://github.com/prometheus/prometheus/pull/16855/files#r2206815844

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
https://github.com/prometheus/prometheus/pull/16855/files#r2237079758

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
@krajorama
Copy link
Member Author

Benchmark at main(e35c09d) vs pr (4b89cd5)

go test -count 6 -benchmem -run=^$ -bench ^BenchmarkPrometheusConverter_FromMetrics$ github.com/prometheus/prometheus/storage/remote/otlptranslator/prometheusremotewrite 
$ benchstat ../main.txt ../pr.txt 
goos: linux
goarch: amd64
pkg: github.com/prometheus/prometheus/storage/remote/otlptranslator/prometheusremotewrite
cpu: Intel(R) Core(TM) Ultra 7 155U
                                                                                                                                                               │  ../main.txt  │               ../pr.txt               │
                                                                                                                                                               │    sec/op     │    sec/op     vs base                 │
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14          12.88m ± 11%   11.41m ±  7%  -11.40% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14          20.16m ±  6%   17.25m ±  6%  -14.43% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14         25.17m ± 12%   21.97m ±  3%  -12.71% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14         40.03m ±  6%   31.33m ±  1%  -21.74% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14         45.55m ±  2%   36.68m ±  7%  -19.48% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14        53.59m ±  7%   43.50m ± 10%  -18.83% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14          16.62m ±  5%   11.58m ±  5%  -30.33% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14          21.83m ±  4%   17.00m ± 24%  -22.15% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14         25.45m ±  4%   18.22m ±  2%  -28.41% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14         44.96m ±  3%   31.55m ±  5%  -29.81% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14         49.30m ±  2%   35.09m ±  3%  -28.82% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14        52.17m ±  5%   38.59m ±  4%  -26.04% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14       28.10m ±  3%   25.93m ±  5%   -7.73% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14       40.50m ±  1%   34.63m ±  4%  -14.51% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14      50.00m ±  7%   41.40m ±  2%  -17.20% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14      79.15m ±  3%   61.51m ±  5%  -22.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14      90.14m ±  2%   69.89m ± 12%  -22.46% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14     97.17m ±  3%   76.29m ±  2%  -21.50% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14             992.4n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14             985.3n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14            988.7n ±  3%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14            1.112µ ± 20%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14            986.4n ±  3%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14           984.0n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14          12.83m ± 10%   11.97m ±  2%        ~ (p=0.065 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14          19.55m ±  4%   17.25m ±  3%  -11.76% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14         25.10m ±  2%   21.90m ±  4%  -12.76% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14         38.22m ±  8%   32.36m ±  4%  -15.35% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14         45.15m ±  2%   37.58m ±  4%  -16.77% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14        50.91m ±  2%   42.38m ±  3%  -16.77% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14          16.14m ±  5%   11.40m ±  9%  -29.36% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14          22.17m ±  1%   15.52m ±  3%  -29.97% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14         25.30m ± 11%   18.55m ±  3%  -26.65% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14         45.49m ±  5%   33.08m ±  4%  -27.27% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14         48.26m ±  2%   37.25m ±  4%  -22.82% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14        52.85m ±  5%   38.77m ±  3%  -26.64% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14       28.31m ±  3%   25.70m ±  3%   -9.23% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14       40.63m ±  4%   34.34m ±  3%  -15.49% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14      48.93m ±  6%   40.28m ±  7%  -17.68% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14      81.11m ±  7%   63.35m ±  4%  -21.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14      89.89m ±  2%   70.48m ±  2%  -21.59% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14     98.02m ±  2%   76.98m ±  7%  -21.46% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14            997.8n ± 12%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14            984.4n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14           989.2n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14           976.8n ±  2%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14           983.7n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14          996.1n ±  4%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14         13.03m ±  3%   11.48m ± 13%  -11.88% (p=0.015 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14         19.86m ±  6%   17.85m ±  8%  -10.12% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14        25.88m ±  3%   22.28m ±  4%  -13.93% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14        39.39m ±  3%   32.58m ±  3%  -17.28% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14        46.60m ±  2%   37.36m ±  7%  -19.83% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14       50.78m ±  8%   42.96m ±  2%  -15.41% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14         16.60m ±  9%   12.11m ±  4%  -27.04% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14         22.31m ±  2%   15.75m ±  2%  -29.38% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14        26.15m ±  5%   18.80m ±  4%  -28.11% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14        45.31m ±  4%   32.84m ±  3%  -27.53% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14        49.10m ±  6%   34.94m ±  7%  -28.84% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14       54.03m ±  5%   41.31m ±  7%  -23.55% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14      28.63m ±  4%   27.01m ±  4%   -5.64% (p=0.004 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14      42.06m ±  2%   35.63m ±  2%  -15.29% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14     48.99m ±  4%   42.12m ±  2%  -14.03% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14     81.66m ±  7%   62.79m ±  2%  -23.10% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14     90.51m ±  2%   69.72m ±  9%  -22.97% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14   100.40m ±  6%   78.84m ± 14%  -21.47% (p=0.002 n=6)
geomean                                                                                                                                                           5.582m         30.32m        -20.20%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

                                                                                                                                                               │  ../main.txt  │               ../pr.txt               │
                                                                                                                                                               │     B/op      │     B/op      vs base                 │
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14          3.038Mi ± 0%   3.129Mi ± 0%   +3.00% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14          7.261Mi ± 0%   5.817Mi ± 0%  -19.88% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14        11.483Mi ± 0%   8.505Mi ± 0%  -25.94% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14        10.975Mi ± 0%   7.523Mi ± 0%  -31.45% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14         15.20Mi ± 0%   10.22Mi ± 0%  -32.74% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14        19.41Mi ± 0%   12.92Mi ± 0%  -33.47% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14          7.803Mi ± 0%   7.888Mi ± 0%   +1.09% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14         10.719Mi ± 0%   9.862Mi ± 0%   -8.00% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14         13.67Mi ± 0%   11.86Mi ± 0%  -13.24% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14         22.26Mi ± 0%   15.28Mi ± 0%  -31.37% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14         25.13Mi ± 0%   17.20Mi ± 0%  -31.56% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14        28.09Mi ± 0%   19.22Mi ± 0%  -31.57% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14       10.63Mi ± 0%   11.14Mi ± 0%   +4.76% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14       17.75Mi ± 0%   15.74Mi ± 0%  -11.36% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14      24.93Mi ± 0%   20.42Mi ± 0%  -18.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14      33.02Mi ± 0%   22.85Mi ± 0%  -30.80% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14      40.08Mi ± 0%   27.46Mi ± 0%  -31.49% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14     47.26Mi ± 0%   32.15Mi ± 0%  -31.97% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14               96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14               96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14              96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14              96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14              96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14             96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14          3.044Mi ± 0%   3.136Mi ± 0%   +3.03% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14          7.264Mi ± 0%   5.824Mi ± 0%  -19.83% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14        11.486Mi ± 0%   8.507Mi ± 0%  -25.94% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14        10.975Mi ± 0%   7.534Mi ± 0%  -31.35% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14         15.19Mi ± 0%   10.23Mi ± 0%  -32.68% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14        19.42Mi ± 0%   12.91Mi ± 0%  -33.51% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14          7.792Mi ± 0%   7.886Mi ± 0%   +1.20% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14         10.716Mi ± 0%   9.852Mi ± 0%   -8.06% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14         13.68Mi ± 0%   11.87Mi ± 0%  -13.27% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14         22.26Mi ± 0%   15.28Mi ± 0%  -31.34% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14         25.12Mi ± 0%   17.21Mi ± 0%  -31.50% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14        28.09Mi ± 0%   19.22Mi ± 0%  -31.58% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14       10.63Mi ± 0%   11.12Mi ± 0%   +4.55% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14       17.77Mi ± 0%   15.73Mi ± 0%  -11.44% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14      24.93Mi ± 0%   20.41Mi ± 0%  -18.13% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14      33.02Mi ± 0%   22.84Mi ± 0%  -30.82% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14      40.10Mi ± 0%   27.45Mi ± 0%  -31.55% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14     47.28Mi ± 0%   32.15Mi ± 0%  -31.99% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14              96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14              96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14             96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14             96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14             96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14            96.00 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14         3.050Mi ± 0%   3.143Mi ± 0%   +3.06% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14         7.272Mi ± 0%   5.831Mi ± 0%  -19.81% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14       11.494Mi ± 0%   8.520Mi ± 0%  -25.88% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14       10.986Mi ± 0%   7.539Mi ± 0%  -31.38% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14        15.21Mi ± 0%   10.23Mi ± 0%  -32.73% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14       19.43Mi ± 0%   12.92Mi ± 0%  -33.46% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14         7.813Mi ± 0%   7.909Mi ± 0%   +1.24% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14        10.725Mi ± 0%   9.869Mi ± 0%   -7.97% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14        13.68Mi ± 0%   11.88Mi ± 0%  -13.21% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14        22.27Mi ± 0%   15.28Mi ± 0%  -31.36% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14        25.13Mi ± 0%   17.21Mi ± 0%  -31.51% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14       28.10Mi ± 0%   19.23Mi ± 0%  -31.57% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14      10.63Mi ± 0%   11.13Mi ± 0%   +4.68% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14      17.76Mi ± 0%   15.75Mi ± 0%  -11.31% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14     24.95Mi ± 0%   20.44Mi ± 0%  -18.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14     33.02Mi ± 0%   22.87Mi ± 0%  -30.73% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14     40.10Mi ± 0%   27.45Mi ± 0%  -31.54% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14    47.28Mi ± 0%   32.16Mi ± 0%  -31.98% (p=0.002 n=6)
geomean                                                                                                                                                           1.776Mi        12.46Mi       -21.80%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

                                                                                                                                                               │ ../main.txt  │              ../pr.txt               │
                                                                                                                                                               │  allocs/op   │  allocs/op   vs base                 │
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14          82.77k ± 0%   88.72k ± 0%   +7.19% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14          146.8k ± 0%   150.7k ± 0%   +2.69% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14         206.8k ± 0%   210.7k ± 0%   +1.91% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14         140.9k ± 0%   142.7k ± 0%   +1.27% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14         204.9k ± 0%   204.7k ± 0%   -0.10% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14        264.9k ± 0%   264.7k ± 0%   -0.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14          79.12k ± 0%   52.95k ± 0%  -33.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14         115.14k ± 0%   87.97k ± 0%  -23.60% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14         146.1k ± 0%   119.0k ± 0%  -18.59% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14         98.44k ± 0%   70.97k ± 0%  -27.90% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14         134.4k ± 0%   106.0k ± 0%  -21.18% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14        165.4k ± 0%   137.0k ± 0%  -17.21% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14       161.9k ± 0%   141.6k ± 0%  -12.52% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14       261.9k ± 0%   238.6k ± 0%   -8.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14      352.9k ± 0%   329.6k ± 0%   -6.60% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14      239.4k ± 0%   213.6k ± 0%  -10.75% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14      339.4k ± 0%   310.6k ± 0%   -8.47% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_0/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14     430.4k ± 0%   401.6k ± 0%   -6.68% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14              2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14              2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14             2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14             2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14             2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14            2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14          82.78k ± 0%   88.73k ± 0%   +7.19% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14          146.8k ± 0%   150.7k ± 0%   +2.69% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14         206.8k ± 0%   210.7k ± 0%   +1.91% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14         140.9k ± 0%   142.7k ± 0%   +1.27% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14         204.9k ± 0%   204.7k ± 0%   -0.10% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14        264.9k ± 0%   264.7k ± 0%   -0.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14          79.14k ± 0%   52.97k ± 0%  -33.07% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14         115.15k ± 0%   87.98k ± 0%  -23.60% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14         146.2k ± 0%   119.0k ± 0%  -18.59% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14         98.45k ± 0%   70.98k ± 0%  -27.90% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14         134.5k ± 0%   106.0k ± 0%  -21.18% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14        165.4k ± 0%   137.0k ± 0%  -17.21% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14       161.9k ± 0%   141.7k ± 0%  -12.52% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14       261.9k ± 0%   238.7k ± 0%   -8.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14      352.9k ± 0%   329.7k ± 0%   -6.60% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14      239.4k ± 0%   213.6k ± 0%  -10.76% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14      339.4k ± 0%   310.6k ± 0%   -8.47% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_5/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14     430.4k ± 0%   401.7k ± 0%   -6.68% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14             2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14             2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14            2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14            2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14            2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14           2.000 ± 0%
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14         82.83k ± 0%   88.78k ± 0%   +7.19% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14         146.8k ± 0%   150.8k ± 0%   +2.69% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14        206.8k ± 0%   210.8k ± 0%   +1.91% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14        141.0k ± 0%   142.8k ± 0%   +1.27% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14        205.0k ± 0%   204.8k ± 0%   -0.10% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_0/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14       265.0k ± 0%   264.8k ± 0%   -0.08% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_0-14         79.19k ± 0%   53.02k ± 0%  -33.04% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_5-14        115.19k ± 0%   88.03k ± 0%  -23.58% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_2/exemplars_per_series:_10-14        146.2k ± 0%   119.0k ± 0%  -18.58% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_0-14        98.49k ± 0%   71.02k ± 0%  -27.89% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_5-14        134.5k ± 0%   106.0k ± 0%  -21.17% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_0/labels_per_metric:_20/exemplars_per_series:_10-14       165.5k ± 0%   137.0k ± 0%  -17.20% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_0-14      162.0k ± 0%   141.7k ± 0%  -12.51% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_5-14      262.0k ± 0%   238.7k ± 0%   -8.88% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_2/exemplars_per_series:_10-14     353.0k ± 0%   329.7k ± 0%   -6.60% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_0-14     239.4k ± 0%   213.7k ± 0%  -10.75% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_5-14     339.4k ± 0%   310.7k ± 0%   -8.47% (p=0.002 n=6)
PrometheusConverter_FromMetrics/resource_attribute_count:_50/histogram_count:_1000/non-histogram_count:_1000/labels_per_metric:_20/exemplars_per_series:_10-14    430.4k ± 0%   401.7k ± 0%   -6.68% (p=0.002 n=6)
geomean                                                                                                                                                           22.32k        157.9k       -10.87%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

# Conflicts:
#	storage/remote/otlptranslator/prometheusremotewrite/helper.go
…ints

We check buckets in the similar test for histograms.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
@krajorama krajorama marked this pull request as ready for review July 31, 2025 12:09
@aknuds1 aknuds1 requested a review from Copilot August 1, 2025 08:40

This comment was marked as outdated.

krajorama added a commit to grafana/mimir that referenced this pull request Aug 4, 2025
Prepare for the rewrite of the OTLP translator upstream in
prometheus/prometheus#16951
by adding an end-to-end test to check for regressions.

Related to #12152.

Also switch from raw JSON in the test to building the payload
in code and marshaling to protobuf.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
Copy link
Contributor

@aknuds1 aknuds1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM AFAICT at this point. I trust you've made sure it integrates well with Mimir :)

To be more inline with future direction in #17104
Also use some helper variables in appender tests to make it more
readable in shorter.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
@krajorama
Copy link
Member Author

LGTM AFAICT at this point. I trust you've made sure it integrates well with Mimir :)

Thank you, I'll update the Mimir PR on Monday and test one more time.

@bwplotka Can I get an approve from you as well? I'd like to merge this. We can later switch to whatever we agree on in #17104. But I don't want to be blocked on that and I've made the interface here as close to that as possible for now.

Copy link
Member

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sgtm!

krajorama added a commit to grafana/mimir that referenced this pull request Sep 8, 2025
To get prometheus/prometheus#16951
at b03fd1e7

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
@krajorama
Copy link
Member Author

Thank you, I'll update the Mimir PR on Monday and test one more time.

Test build in: grafana/mimir#12652

@krajorama
Copy link
Member Author

Thank you, I'll update the Mimir PR on Monday and test one more time.

Test build in: grafana/mimir#12652

I've checked out Mimir and ran

cd development/mimir-monolithic-mode
./compose-up.sh --profile otel-collector-otlp-push

I see data (floats, native histograms) and metadata as well.
image

Resolving comments and merging.

@krajorama krajorama merged commit 979aea1 into main Sep 8, 2025
46 checks passed
@krajorama krajorama deleted the otlp-to-appender branch September 8, 2025 12:34
krajorama added a commit to grafana/mimir that referenced this pull request Sep 9, 2025
To get prometheus/prometheus#16951
at b03fd1e7

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
krajorama added a commit to grafana/mimir that referenced this pull request Sep 9, 2025
To get prometheus/prometheus#16951

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
krajorama added a commit to grafana/mimir that referenced this pull request Sep 9, 2025
Prepare for the rewrite of the OTLP translator upstream in
prometheus/prometheus#16951
by adding an end-to-end test to check for regressions.

Related to #12152.

Also switch from raw JSON in the test to building the payload
in code and marshaling to protobuf.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
krajorama added a commit to grafana/mimir that referenced this pull request Sep 9, 2025
To get prometheus/prometheus#16951

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
krajorama added a commit to grafana/mimir that referenced this pull request Sep 9, 2025
Prepare for the rewrite of the OTLP translator upstream in
prometheus/prometheus#16951
by adding an end-to-end test to check for regressions.

Related to #12152.

Also switch from raw JSON in the test to building the payload
in code and marshaling to protobuf.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
krajorama added a commit to grafana/mimir that referenced this pull request Sep 11, 2025
…#12652)

This PR updates mimir-prometheus to
[`c2f03d6d14d2`.](grafana/mimir-prometheus@c2f03d6)

Brings in prometheus/prometheus#16951.

Changelog: OTLP: native support for OpenTelemetry metric start time to
Prometheus metric created timestamp conversion, instead of converting to
QuietZeroNaNs introduced in #10238. The configuration parameter
`-distributor.otel-start-time-quiet-zero` is therefore deprecated and
will be removed. Now supports start time for exponential histograms.
This is a major rewrite of the endpoint in upstream Prometheus and
Mimir. #12652

Implementation does away with the generated otlp translation code as we
don't need to rewrite it for `mimirpb` anymore. The storage logic is
behind an interface.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
charleskorn pushed a commit to charleskorn/prometheus that referenced this pull request Sep 16, 2025
…prometheus#16951)

* OTLP writer writes directly to appender

Do not convert to Remote-Write 1.0 protocol. Convert to TSDB Appender interface instead.

For downstream projects that still convert OTLP to something else (e.g. Mimir using
its own RW 1.0+2.0 compatible protocol), introduce a compatibility layer between
OTLP decoding and TSDB Appender. This is the CombinedAppender that hides the
implementation. Name is subject to change.

---------

Signed-off-by: David Ashpole <dashpole@google.com>
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
Signed-off-by: George Krajcsovits <krajorama@users.noreply.github.com>
Co-authored-by: David Ashpole <dashpole@google.com>
Co-authored-by: Jesus Vazquez <jesusvazquez@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Naman-B-Parlecha added a commit to Naman-B-Parlecha/prometheus that referenced this pull request Sep 17, 2025
Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

feat(histogram): Refactor ConvertNHCBToClassicHistogram and add unit tests

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

feat(histogram): Add ConvertNHCBToClassic flag and refactor related types and tests

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

Replace gopkg.in/yaml.v2 with go.yaml.in/yaml/v2 (prometheus#17151)

* Replace gopkg.in/yaml.v2 with go.yaml.in/yaml/v2
* Upgrade to client_golang@v1.23.2

---------

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

OTLP to directly write to an interface which can hide storage details (prometheus#16951)

* OTLP writer writes directly to appender

Do not convert to Remote-Write 1.0 protocol. Convert to TSDB Appender interface instead.

For downstream projects that still convert OTLP to something else (e.g. Mimir using
its own RW 1.0+2.0 compatible protocol), introduce a compatibility layer between
OTLP decoding and TSDB Appender. This is the CombinedAppender that hides the
implementation. Name is subject to change.

---------

Signed-off-by: David Ashpole <dashpole@google.com>
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
Signed-off-by: George Krajcsovits <krajorama@users.noreply.github.com>
Co-authored-by: David Ashpole <dashpole@google.com>
Co-authored-by: Jesus Vazquez <jesusvazquez@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

fix(textparse/protobuf): metric family name corrupted by NHCB parser (prometheus#17156)

* fix(textparse): implement NHCB parsing in ProtoBuf parser directly

The NHCB conversion does some validation, but we can only return error
from Parser.Next() not Parser.Histogram(). So the conversion needs to
happen in Next().

There are 2 cases:
1. "always_scrape_classic_histograms" is enabled, in which case we
convert after returning the classic series. This is to be consistent
with the PromParser text parser, which collects NHCB while spitting out
classic series; then returns the NHCB.
2. "always_scrape_classic_histograms" is disabled. In which case we never
return the classic series.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>

* refactor(textparse): skip classic series instead of adding NHCB around

Do not return the first classic series from the EntryType state,
switch to EntrySeries. This means we need to start the histogram
field state from -3 , not -2.

In EntrySeries, skip classic series if needed.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>

* reuse nhcb converter

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>

* test(textparse/nhcb): test corrupting metric family name

NHCB parse doesn't always copy the metric name from the underlying
parser. When called via HELP, UNIT, the string is directly referenced
which means that the read-ahead of NHCB can corrupt it.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>

Handle error gracefully for the `desymbolizeLabels` function in prompb/io/prometheus/write/v2/symbols.go (prometheus#17160)

Signed-off-by: pipiland <user123@Minhs-Macbook.local>

---------

Signed-off-by: pipiland <user123@Minhs-Macbook.local>
Co-authored-by: pipiland <user123@Minhs-Macbook.local>

feat(histogram): Refactor NHCB to classic conversion with enhanced validation and update tests

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

feat(histogram): Update NHCB to classic conversion logic and remove tests

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

refactor(histogram): Update ConvertNHCBToClassicHistogram

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

test cases for new conversion

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>

refactor(histogram): Simplify label building in ConvertNHCBToClassicHistogram

Signed-off-by: Naman-B-Parlecha <namanparlecha@gmail.com>
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.

7 participants