Skip to content

Commit

Permalink
runtime: eliminate GOMAXPROCS limit
Browse files Browse the repository at this point in the history
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 <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
  • Loading branch information
aclements committed Sep 27, 2017
1 parent 84d2c7e commit ee55000
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 13 deletions.
3 changes: 0 additions & 3 deletions src/runtime/debug.go
Expand Up @@ -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)
Expand Down
5 changes: 1 addition & 4 deletions src/runtime/proc.go
Expand Up @@ -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")
}
Expand Down Expand Up @@ -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 {
Expand Down
6 changes: 0 additions & 6 deletions src/runtime/runtime2.go
Expand Up @@ -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
Expand Down

0 comments on commit ee55000

Please sign in to comment.