runtime/pprof: slow new goroutine launches in test

The goroutine profiler tests include one that launches a steady stream
of goroutines. That creates a scheduler busy loop that can prevent
forward progress in the rest of the program. Slow down the launches a
bit so other goroutines have a chance to run.

Fixes #52916
For #52934

Change-Id: I748557201b94918b1fa4960544a51a48d9cacc6b
Reviewed-on: https://go-review.googlesource.com/c/go/+/406654
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
Rhys Hiltner 2022-05-16 09:47:08 -07:00
parent ab8d7dd75e
commit 6ec46f4707

View file

@ -1527,6 +1527,10 @@ func TestGoroutineProfileConcurrency(t *testing.T) {
SetGoroutineLabels(WithLabels(ctx, Labels(t.Name()+"-churn-i", fmt.Sprint(i))))
if i == 0 {
ready.Done()
} else if i%16 == 0 {
// Yield on occasion so this sequence of goroutine launches
// doesn't monopolize a P. See issue #52934.
runtime.Gosched()
}
if ctx.Err() == nil {
go churn(i + 1)