]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/api: run half as many go list calls in parallel
authorHeschi Kreinick <heschi@google.com>
Wed, 8 Dec 2021 20:29:12 +0000 (15:29 -0500)
committerHeschi Kreinick <heschi@google.com>
Wed, 8 Dec 2021 21:24:34 +0000 (21:24 +0000)
We currently run one 'go list' invocation per GOMAXPROC. Since the go
command uses memory and has its own internal parallelism, that's
unlikely to be an efficient use of resources. Run half as many. I
suspect that's still too many but this should fix our OOMs.

For #49957.

Change-Id: Id06b6e0f0d96387a2a050e400f38bde6ba71aa60
Reviewed-on: https://go-review.googlesource.com/c/go/+/370376
Trust: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/cmd/api/goapi.go

index 0c61b1b489747e70e630f787f64cf5d90aca0723..a55e51cc9bc6eba88a044ed772212409cd5da429 100644 (file)
@@ -460,7 +460,7 @@ type listImports struct {
 var listCache sync.Map // map[string]listImports, keyed by contextName
 
 // listSem is a semaphore restricting concurrent invocations of 'go list'.
-var listSem = make(chan semToken, runtime.GOMAXPROCS(0))
+var listSem = make(chan semToken, ((runtime.GOMAXPROCS(0)-1)/2)+1)
 
 type semToken struct{}