]> Cypherpunks.ru repositories - gostls13.git/commit
runtime: disable idle mark workers with at least one dedicated worker
authorMichael Anthony Knyszek <mknyszek@google.com>
Thu, 24 Mar 2022 18:06:47 +0000 (18:06 +0000)
committerMichael Knyszek <mknyszek@google.com>
Tue, 26 Apr 2022 22:09:56 +0000 (22:09 +0000)
commitd8cf2243e0ed1c498ed405432c10f9596815a582
tree232932540973750ad335a8c65d606e068722460e
parent13b18ec947c9589b47f058d7e7b95e60fcdb3fc9
runtime: disable idle mark workers with at least one dedicated worker

This change completes the proposal laid out in #44163. With #44313
resolved, we now ensure that stopped Ms are able to wake up and become
dedicated GC workers. As a result, idle GC workers are in theory no
longer required to be a proxy for scheduling dedicated mark workers.

And, with at least one dedicated mark worker running (which is
non-preemptible) we ensure the GC makes progress in all circumstances
when at least one is running. Currently we ensure at least one idle mark
worker is available at all times because it's possible before #44313
that a dedicated worker doesn't ever get scheduled, leading to a
deadlock if user goroutines block on a GC completing. But now that extra
idle mark worker should be unnecessary to ensure GC progress when at
least one dedicated mark worker is going to be scheduled.

Fixes #44163.

Change-Id: I62889ef2db4e69d44da883e8e6eebcfe5398c86d
Reviewed-on: https://go-review.googlesource.com/c/go/+/395634
Reviewed-by: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
src/runtime/mgcpacer.go