]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: explain why continuous assist revising is necessary
authorAustin Clements <austin@google.com>
Mon, 5 Oct 2015 03:16:07 +0000 (20:16 -0700)
committerAustin Clements <austin@google.com>
Fri, 9 Oct 2015 19:37:53 +0000 (19:37 +0000)
Change-Id: I950af8d80433b3ae8a1da0aa7a8d2d0b295dd313
Reviewed-on: https://go-review.googlesource.com/15404
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/mgc.go

index b664d6954824fec3687cae38bbdb4023d4bbc443..38c3b93850979e3d283916d52d55dbd1203fb68c 100644 (file)
@@ -445,9 +445,16 @@ func (c *gcControllerState) startCycle() {
 // improved estimates. This should be called either under STW or
 // whenever memstats.heap_scan is updated (with mheap_.lock held).
 func (c *gcControllerState) revise() {
-       // Compute the expected scan work. This is a strict upper
-       // bound on the possible scan work in the current heap.
+       // Compute the expected scan work.
        //
+       // Note that the scannable heap size is likely to increase
+       // during the GC cycle. This is why it's important to revise
+       // the assist ratio throughout the cycle: if the scannable
+       // heap size increases, the assist ratio based on the initial
+       // scannable heap size may target too little scan work.
+       //
+       // This particular estimate is a strict upper bound on the
+       // possible scan work in the current heap.
        // You might consider dividing this by 2 (or by
        // (100+GOGC)/100) to counter this over-estimation, but
        // benchmarks show that this has almost no effect on mean