From: Austin Clements Date: Tue, 13 Jun 2017 15:33:57 +0000 (-0400) Subject: runtime: eliminate GOMAXPROCS limit X-Git-Tag: go1.10beta1~956 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ee55000f6c45d2f5c38d91679def933fdf27c029;p=gostls13.git runtime: eliminate GOMAXPROCS limit Now that allp is dynamically allocated, there's no need for a hard cap on GOMAXPROCS. Fixes #15131. Change-Id: I53eee8e228a711a818f7ebce8d9fd915b3865eed Reviewed-on: https://go-review.googlesource.com/45574 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Rick Hudson Reviewed-by: Brad Fitzpatrick --- diff --git a/src/runtime/debug.go b/src/runtime/debug.go index 0e798fc6f5..feacfb6026 100644 --- a/src/runtime/debug.go +++ b/src/runtime/debug.go @@ -15,9 +15,6 @@ import ( // The number of logical CPUs on the local machine can be queried with NumCPU. // This call will go away when the scheduler improves. func GOMAXPROCS(n int) int { - if n > _MaxGomaxprocs { - n = _MaxGomaxprocs - } lock(&sched.lock) ret := int(gomaxprocs) unlock(&sched.lock) diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 188c897723..81652288fb 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -495,9 +495,6 @@ func schedinit() { if n, ok := atoi32(gogetenv("GOMAXPROCS")); ok && n > 0 { procs = n } - if procs > _MaxGomaxprocs { - procs = _MaxGomaxprocs - } if procresize(procs) != nil { throw("unknown runnable goroutine during bootstrap") } @@ -3529,7 +3526,7 @@ func setcpuprofilerate(hz int32) { // Returns list of Ps with local work, they need to be scheduled by the caller. func procresize(nprocs int32) *p { old := gomaxprocs - if old < 0 || old > _MaxGomaxprocs || nprocs <= 0 || nprocs > _MaxGomaxprocs { + if old < 0 || nprocs <= 0 { throw("procresize: invalid arg") } if trace.enabled { diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 269c5b1c4d..055fff18af 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -520,12 +520,6 @@ type p struct { pad [sys.CacheLineSize]byte } -const ( - // The max value of GOMAXPROCS. - // There are no fundamental restrictions on the value. - _MaxGomaxprocs = 1 << 10 -) - type schedt struct { // accessed atomically. keep at top to ensure alignment on 32-bit systems. goidgen uint64