[dnm]: use background profiling #60795
Closed
+94
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background profiling is an experimental patch that was floated as a way
to get granular CPU usage information in
golang/go#41554.
I decided to dust off the Golang patch that implements this
(https://go-review.googlesource.com/c/go/+/102755) and see for myself
what you actually get. The output is something like this:
If we used profiler labels to identify queries (similar to what's shown
in #60508) I guess I can
see how you can somehow build a profile from this stream and then use
the tag breakdown of the profile to reason about CPU allocated to each
query. It seems wildly experimental and also unergonomical, though.
It seems like we'd get maybe roughly the same, without as much bending
over backwards and wildly experimental bleeding edge, by relying on
periodic foreground sampling at a lower frequency
(
runtime.SetCPUProfileRate
) than the default 100hz.To run this PR (which you shouldn't need to do for anything, but still)
you'd clone
cockroachdb/go
, check out the bgprof branch, run./make.bash
insrc
and change your PATH so that$(which go)
isbin/go
.Related PRs:
#60588
#60589
#60508
cc @asubiotto, @knz
Release note: None