]> Cypherpunks repositories - gostls13.git/commit
runtime: track background scan work credit
authorAustin Clements <austin@google.com>
Fri, 13 Mar 2015 17:29:23 +0000 (13:29 -0400)
committerAustin Clements <austin@google.com>
Tue, 21 Apr 2015 15:35:09 +0000 (15:35 +0000)
commit8e24283a28f9b739cdbd990994c9c98e3855f7ed
treebb5b187275b32544d7c6c562f6e57df2c7fa7d0c
parent4e9fc0df4837d6c786fd79344019b25ac4b06eea
runtime: track background scan work credit

This tracks scan work done by background GC in a global pool. Mutator
assists will draw on this credit to avoid doing work when background
GC is staying ahead.

Unlike the other GC controller tracking variables, this will be both
written and read throughout the cycle. Hence, we can't arbitrarily
delay updates like we can for scan work and bytes marked. However, we
still want to minimize contention, so this global credit pool is
allowed some error from the "true" amount of credit. Background GC
accumulates credit locally up to a limit and only then flushes to the
global pool. Similarly, mutator assists will draw from the credit pool
in batches.

Change-Id: I1aa4fc604b63bf53d1ee2a967694dffdfc3e255e
Reviewed-on: https://go-review.googlesource.com/8834
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/mgc.go
src/runtime/mgcmark.go