Skip to content

Conversation

@dashpole
Copy link
Contributor

@dashpole dashpole commented Sep 24, 2025

Part of #7388

This adds benchmarks for making measurements that also record an exemplar. This will help demonstrate any improvements to locking in the exemplar reservoir.

Parallel benchmarks:

goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/metric
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/0-24         	   57819	       258.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/1-24         	   46058	       255.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/10-24        	   70351	       271.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/0-24       	   67525	       220.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/1-24       	   67789	       248.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/10-24      	   63385	       246.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/0-24   	   67786	       213.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/1-24   	   73093	       226.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/10-24  	   55597	       230.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/0-24 	   77805	       216.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/1-24 	   71512	       234.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/10-24         	   60094	       258.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/0-24                	   66192	       266.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/1-24                	   50511	       242.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/10-24               	   42548	       295.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/0-24              	   48874	       229.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/1-24              	   50904	       271.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/10-24             	   59074	       253.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/0-24     	   55216	       292.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/1-24     	   53492	       375.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/10-24    	   40346	       273.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/0-24   	   51520	       310.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/1-24   	   43227	       303.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/10-24  	   44754	       295.4 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/0-24                   	   44091	       294.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/1-24                   	   43164	       300.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/10-24                  	   46014	       269.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/0-24                 	   38978	       281.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/1-24                 	   41292	       316.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/10-24                	   38986	       303.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/0-24             	   33555	       299.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/1-24             	   44396	       322.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/10-24            	   38211	       273.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/0-24           	   45652	       296.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/1-24           	   38984	       270.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/10-24          	   36280	       313.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/0-24                 	   34377	       437.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/1-24                 	   34992	       344.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/10-24                	   33795	       384.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/0-24               	   38080	       353.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/1-24               	   36568	       315.4 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/10-24              	   32418	       309.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/0-24      	   33217	       320.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/1-24      	   27937	       407.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/10-24     	   30818	       350.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/0-24    	   36286	       346.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/1-24    	   35863	       342.4 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/10-24   	   32378	       327.8 ns/op	       0 B/op	       0 allocs/op

Single-threaded benchmarks:

goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/metric
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/0         	  115218	       109.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/1         	  106142	       112.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/10        	  101562	       115.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/0       	   93019	       112.1 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/1       	  107089	       117.4 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/10      	  106411	       117.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/0   	  110683	       113.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/1   	   84825	       122.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/10  	   98952	       113.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/0 	  115419	       105.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/1 	   97251	       114.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/10         	  106036	       111.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/0                	  130296	        92.98 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/1                	  120679	       100.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/10               	  116985	       102.1 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/0              	  125479	        96.42 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/1              	  115527	       103.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/10             	   89858	       117.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/0     	   76768	       152.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/1     	   72832	       161.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/10    	   73298	       160.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/0   	   81826	       154.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/1   	   73779	       158.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/10  	   75606	       161.4 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/0                   	   61503	       188.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/1                   	   63260	       185.4 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/10                  	   62704	       189.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/0                 	   63615	       180.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/1                 	   62072	       190.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/10                	   61260	       192.1 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/0             	   61561	       182.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/1             	   60334	       192.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/10            	   64114	       192.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/0           	   63980	       181.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/1           	   61138	       189.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/10          	   62150	       196.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/0                 	   51895	       237.9 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/1                 	   52554	       230.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/10                	   53581	       228.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/0               	   55407	       221.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/1               	   50701	       226.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/10              	   50460	       231.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/0      	   53390	       221.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/1      	   51373	       229.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/10     	   51154	       228.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/0    	   52167	       230.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/1    	   48598	       247.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkSyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/10   	   51086	       230.8 ns/op	       0 B/op	       0 allocs/op

@dashpole dashpole added the Skip Changelog PRs that do not require a CHANGELOG.md entry label Sep 24, 2025
@codecov
Copy link

codecov bot commented Sep 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.5%. Comparing base (2e0b5b4) to head (5a35876).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@          Coverage Diff          @@
##            main   #7406   +/-   ##
=====================================
  Coverage   85.5%   85.5%           
=====================================
  Files        277     277           
  Lines      24644   24644           
=====================================
+ Hits       21076   21077    +1     
+ Misses      3189    3188    -1     
  Partials     379     379           

see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dashpole dashpole force-pushed the exemplar_bench branch 3 times, most recently from cfc76de to 8fb5bdb Compare September 24, 2025 15:49
@dashpole dashpole merged commit 97a78c1 into open-telemetry:main Sep 25, 2025
31 checks passed
@dashpole dashpole deleted the exemplar_bench branch September 25, 2025 13:55
@MrAlias MrAlias added this to the v1.39.0 milestone Oct 14, 2025
@MrAlias MrAlias mentioned this pull request Jan 16, 2026
39 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Skip Changelog PRs that do not require a CHANGELOG.md entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants