1
0
mirror of https://github.com/golang/go synced 2024-11-22 20:24:47 -07:00

runtime: make gcEffectiveGrowthRatio a method on gcControllerState

For #44167.

Change-Id: Ie3cf8d2960c843a782ec85426fa73c279adaed64
Reviewed-on: https://go-review.googlesource.com/c/go/+/306605
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
Michael Anthony Knyszek 2021-04-01 19:12:02 +00:00 committed by Michael Knyszek
parent e9cc31e736
commit 7ec7a3cf33

View File

@ -471,7 +471,7 @@ func (c *gcControllerState) endCycle(userForced bool) float64 {
// growth if we had the desired CPU utilization). The // growth if we had the desired CPU utilization). The
// difference between this estimate and the GOGC-based goal // difference between this estimate and the GOGC-based goal
// heap growth is the error. // heap growth is the error.
goalGrowthRatio := gcEffectiveGrowthRatio() goalGrowthRatio := c.effectiveGrowthRatio()
actualGrowthRatio := float64(c.heapLive)/float64(c.heapMarked) - 1 actualGrowthRatio := float64(c.heapLive)/float64(c.heapMarked) - 1
assistDuration := nanotime() - c.markStartTime assistDuration := nanotime() - c.markStartTime
@ -779,7 +779,7 @@ func (c *gcControllerState) commit(triggerRatio float64) {
gcPaceScavenger() gcPaceScavenger()
} }
// gcEffectiveGrowthRatio returns the current effective heap growth // effectiveGrowthRatio returns the current effective heap growth
// ratio (GOGC/100) based on heapMarked from the previous GC and // ratio (GOGC/100) based on heapMarked from the previous GC and
// heapGoal for the current GC. // heapGoal for the current GC.
// //
@ -788,10 +788,10 @@ func (c *gcControllerState) commit(triggerRatio float64) {
// heapMinimum, this can be higher than gcPercent/100. // heapMinimum, this can be higher than gcPercent/100.
// //
// mheap_.lock must be held or the world must be stopped. // mheap_.lock must be held or the world must be stopped.
func gcEffectiveGrowthRatio() float64 { func (c *gcControllerState) effectiveGrowthRatio() float64 {
assertWorldStoppedOrLockHeld(&mheap_.lock) assertWorldStoppedOrLockHeld(&mheap_.lock)
egogc := float64(atomic.Load64(&gcController.heapGoal)-gcController.heapMarked) / float64(gcController.heapMarked) egogc := float64(atomic.Load64(&c.heapGoal)-c.heapMarked) / float64(c.heapMarked)
if egogc < 0 { if egogc < 0 {
// Shouldn't happen, but just in case. // Shouldn't happen, but just in case.
egogc = 0 egogc = 0