]> Cypherpunks repositories - gostls13.git/commitdiff
gc: limit helper threads based on ncpu
authorJoel Sing <jsing@google.com>
Wed, 5 Oct 2011 16:08:28 +0000 (12:08 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 5 Oct 2011 16:08:28 +0000 (12:08 -0400)
When ncpu < 2, work.nproc is always 1 which results in infinite helper
threads being created if gomaxprocs > 1 and MaxGcproc > 1. Avoid this
by using the same limits as imposed helpgc().

R=golang-dev, rsc, dvyukov
CC=golang-dev
https://golang.org/cl/5176044

src/pkg/runtime/mgc0.c

index eaa056da0b3f2f36eabf68d1c92280fbef9a11b4..a2ae8a4109a9b0c4ce952a41e8092323e0a22074 100644 (file)
@@ -984,8 +984,7 @@ runtime·gc(int32 force)
        // coordinate.  This lazy approach works out in practice:
        // we don't mind if the first couple gc rounds don't have quite
        // the maximum number of procs.
-       extra = work.nproc < runtime·gomaxprocs && work.nproc < MaxGcproc;
-
+       extra = work.nproc < runtime·gomaxprocs && work.nproc < runtime·ncpu && work.nproc < MaxGcproc;
        runtime·starttheworld(extra);
 
        // give the queued finalizers, if any, a chance to run