• Austin Clements's avatar
    runtime: rationalize triggerRatio · 49a412a5
    Austin Clements authored
    gcController.triggerRatio is the only field in gcController that
    persists across cycles. As global mutable state, the places where it
    written and read are spread out, making it difficult to see that
    updates and downstream calculations are done correctly.
    
    Improve this situation by doing two things:
    
    1) Move triggerRatio to memstats so it lives with the other
    trigger-related fields and makes gcController entirely transient
    state.
    
    2) Commit the new trigger ratio during mark termination when we
    compute other next-cycle controls, including the absolute trigger.
    This forces us to explicitly thread the new trigger ratio from
    gcController.endCycle to mark termination, so we're not just pulling
    it out of global state.
    
    Change-Id: I6669932f8039a8c0ef46a3f2a8c537db72e578aa
    Reviewed-on: https://go-review.googlesource.com/39830
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarRick Hudson <rlh@golang.org>
    49a412a5
mgc.go 70 KB