Skip to content

Commit 1416ceb

Browse files
rhyshgopherbot
authored andcommitted
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 <[email protected]> Reviewed-by: Mauri de Souza Meneguzzo <[email protected]> Reviewed-by: Michael Pratt <[email protected]> Reviewed-by: Carlos Amedee <[email protected]> Auto-Submit: Rhys Hiltner <[email protected]>
1 parent 0f1db95 commit 1416ceb

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/runtime/mprof.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -722,8 +722,8 @@ type mLockProfile struct {
722722
}
723723

724724
func (prof *mLockProfile) recordLock(cycles int64, l *mutex) {
725-
if cycles <= 0 {
726-
return
725+
if cycles < 0 {
726+
cycles = 0
727727
}
728728

729729
if prof.disabled {

0 commit comments

Comments
 (0)