Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Merging release branch back to main again #1081

merged 15 commits into from Jul 7, 2022

Merging release branch back to main again #1081

merged 15 commits into from Jul 7, 2022


Copy link

@beorn7 beorn7 commented Jul 6, 2022

Again, zero diff. Actually almost zero, because by now we have the fixed VERSION file in it.

Please do a real merge this time. Otherwise, we will just have a new commit in main and not the commits that actually got released.

kakkoyun and others added 15 commits Jan 18, 2022
Signed-off-by: Kemal Akkoyun <>
Signed-off-by: Kemal Akkoyun <>
A previous PR made it so that the Go 1.17 collector locked only around
uses of rmSampleBuf, but really that means that Metric values may be
sent over the channel containing some values from future metrics.Read
calls. While generally-speaking this isn't a problem, we lose any
consistency guarantees provided by the runtime/metrics package.

Also, that optimization to not just lock around all of Collect was
premature. Truthfully, Collect is called relatively infrequently, and
its critical path is fairly fast (10s of µs). To prove it, this change
also adds a benchmark.

name            old time/op  new time/op  delta
GoCollector-16  43.7µs ± 2%  43.2µs ± 2%   ~     (p=0.190 n=9+9)

Note that because the benchmark is single-threaded it actually looks
like it might be getting *slightly* faster, because all those Collect
calls for the Metrics are direct calls instead of interface calls.

Signed-off-by: Michael Anthony Knyszek <>
Replace `io.ReadAll` with `bytes.Buffer.ReadFrom`.
Both need to resize a buffer until they have finished reading;
the former increases by 1.25x each time while the latter uses 2x.

Also added a benchmark to demonstrate the benefit:
name             old time/op    new time/op    delta
Client/4KB-8       35.9µs ± 4%    35.3µs ± 3%     ~     (p=0.310 n=5+5)
Client/50KB-8      83.1µs ± 8%    69.5µs ± 1%  -16.37%  (p=0.008 n=5+5)
Client/1000KB-8     891µs ± 6%     750µs ± 0%  -15.83%  (p=0.016 n=5+4)
Client/2000KB-8    1.74ms ± 2%    1.35ms ± 1%  -22.72%  (p=0.008 n=5+5)

name             old alloc/op   new alloc/op   delta
Client/4KB-8       20.2kB ± 0%    20.4kB ± 0%   +1.26%  (p=0.008 n=5+5)
Client/50KB-8       218kB ± 0%     136kB ± 0%  -37.65%  (p=0.008 n=5+5)
Client/1000KB-8    5.88MB ± 0%    2.11MB ± 0%  -64.10%  (p=0.008 n=5+5)
Client/2000KB-8    11.7MB ± 0%     4.2MB ± 0%  -63.93%  (p=0.008 n=5+5)

name             old allocs/op  new allocs/op  delta
Client/4KB-8         75.0 ± 0%      72.0 ± 0%   -4.00%  (p=0.008 n=5+5)
Client/50KB-8         109 ± 0%        98 ± 0%  -10.09%  (p=0.079 n=4+5)
Client/1000KB-8       617 ± 0%       593 ± 0%   -3.89%  (p=0.008 n=5+5)
Client/2000KB-8     1.13k ± 0%     1.09k ± 0%   -3.27%  (p=0.008 n=5+5)

Signed-off-by: Bryan Boreham <>
The Go runtime/metrics package currently exports extremely granular
histograms. Exponentially bucket any histogram with unit "seconds"
or "bytes" instead to dramatically reduce the number of buckets, and
thus the number of metrics.

This change also adds a test to check for expected cardinality to
prevent cardinality surprises in the future.

Signed-off-by: Michael Anthony Knyszek <>
* Cut v1.12.1

Signed-off-by: Kemal Akkoyun <>

* Apply review suggestions

Signed-off-by: Kemal Akkoyun <>
Update `examples/random/main.go`:
  `prometheus.NewBuildInfoCollector` is deprecated. Use `collectors.NewBuildInfoCollector` instead.

Signed-off-by: alissa-tung <>
* Renamed files.

Signed-off-by: Bartlomiej Plotka <>

* gocollector: Added options to Go Collector for diffetent collections.

Fixes #983


* fixed TestMemStatsEquivalence, it was noop before (:
* Removed gc_cpu_fraction metric completely, since it's not working completely for Go1.17+

Signed-off-by: Bartlomiej Plotka <>
… metrics by default. (#1033)

Fixes #967

Signed-off-by: Bartlomiej Plotka <>
…trics (#1048)

* Fix convention violating names for generated collector metrics

Signed-off-by: Kemal Akkoyun <>

* Add new Go collector example

Signed-off-by: Kemal Akkoyun <>
* Remove -Inf buckets from go collector histograms

Signed-off-by: Kemal Akkoyun <>

* Update prometheus/collectors/go_collector_latest_test.go

Co-authored-by: Bartlomiej Plotka <>
Signed-off-by: Kemal Akkoyun <>

* Simplify

Signed-off-by: Kemal Akkoyun <>

Co-authored-by: Bartlomiej Plotka <>
* Cut v1.12.2

Signed-off-by: Kemal Akkoyun <>

* Apply suggestions

Signed-off-by: Kemal Akkoyun <>

* Update

Co-authored-by: Bartlomiej Plotka <>
Signed-off-by: Kemal Akkoyun <>

Co-authored-by: Bartlomiej Plotka <>
Signed-off-by: beorn7 <>
@beorn7 beorn7 requested review from kakkoyun and bwplotka Jul 6, 2022
Copy link

kakkoyun commented Jul 6, 2022

Please also see #1079 (comment)

Copy link
Member Author

beorn7 commented Jul 6, 2022

As discussed over in #1079, closing this.

@beorn7 beorn7 closed this Jul 6, 2022
Copy link

bwplotka commented Jul 7, 2022

Can we reopen? (Given #1079 (comment))

Fixes #1083

@bwplotka bwplotka reopened this Jul 7, 2022
Copy link

@bwplotka bwplotka left a comment


@bwplotka bwplotka merged commit 3d482bb into main Jul 7, 2022
9 checks passed
@bwplotka bwplotka deleted the beorn7/release branch Jul 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

6 participants