mirror of
https://github.com/golang/go
synced 2024-11-14 06:00:22 -07:00
runtime: record all sampled mutex profile events
The block and mutex profiles have slightly different behaviors when a sampled event has a negative (or zero) duration. The block profile enforces a minimum duration for each event of "1" in the cputicks unit. It does so by clamping the duration to 1 if it was originally reported as being smaller. The mutex profile for app-level contention enforces a minimum duration of 0 in a similar way: by reporting any negative values as 0 instead. The mutex profile for runtime-internal contention had a different behavior: to enforce a minimum event duration of "1" by dropping any non-conforming samples. Stop dropping samples, and use the same minimum (0) that's in place for the other mutex profile events. Fixes #64253 Fixes #68453 Fixes #68781 Change-Id: I4c5d23a2675501226eef5b9bc1ada2efc1a55b9e Reviewed-on: https://go-review.googlesource.com/c/go/+/604355 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Carlos Amedee <carlos@golang.org> Auto-Submit: Rhys Hiltner <rhys.hiltner@gmail.com>
This commit is contained in:
parent
0f1db95414
commit
1416cebdd5
@ -722,8 +722,8 @@ type mLockProfile struct {
|
||||
}
|
||||
|
||||
func (prof *mLockProfile) recordLock(cycles int64, l *mutex) {
|
||||
if cycles <= 0 {
|
||||
return
|
||||
if cycles < 0 {
|
||||
cycles = 0
|
||||
}
|
||||
|
||||
if prof.disabled {
|
||||
|
Loading…
Reference in New Issue
Block a user