d8cf224 runtime: disable idle mark workers with at least one dedicated worker

1 file Authored by Michael Anthony Knyszek 2 years ago, Committed by Michael Knyszek 2 years ago,
    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>
    
        
file modified
+30 -17