[Bug 1565978] Re: ISST-LTE:pVM: golang does not support huge amount (>256) CPUs machines (as E870)
Breno Leitão
1565978 at bugs.launchpad.net
Mon Apr 4 20:20:37 UTC 2016
I am going to ask to send the following patch upstream. Let see what the
upstream community will say about it
commit 17857791d91cf31944d266cb1dfd9322cea8933f
Author: Breno Leitao <breno.leitao at gmail.com>
Date: Mon Apr 4 16:09:55 2016 -0400
Increase _MaxGomaxprocs to support big machines
Currently go does not support machines that contains > 256 CPUs, as IBM's E880
that could host 1536 hardware thread, when configured with 192 CPU cores and
SMT (Symmetric Multi Thread) 8.
For example, when running a go program on this machine, I got, the following
problem[1]:
procresize: invalid arg
This is because of the following code:
_MaxGomaxprocs = 1 << 8
if old < 0 || old > _MaxGomaxprocs || nprocs <= 0 || nprocs > _MaxGomaxprocs {
throw("procresize: invalid arg")
}
This patch just redefine _MAxGomaxprocs to 1 << 12.
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go
index e0137f7..508cecb 100644
--- a/src/runtime/runtime2.go
+++ b/src/runtime/runtime2.go
@@ -472,7 +472,7 @@ type p struct {
const (
// The max value of GOMAXPROCS.
// There are no fundamental restrictions on the value.
- _MaxGomaxprocs = 1 << 8
+ _MaxGomaxprocs = 1 << 12
)
type schedt struct {
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to golang-1.6 in Ubuntu.
https://bugs.launchpad.net/bugs/1565978
Title:
ISST-LTE:pVM: golang does not support huge amount (>256) CPUs
machines (as E870)
Status in golang-1.6 package in Ubuntu:
New
Bug description:
Docker and golang packages are not able to run on e870 machine due to
a lot of CPU on these machines.
The current machine has 400 CPUs and shows the following error:
runtime stack:
runtime.throw(0x654c60, 0x17)
/usr/lib/go/src/runtime/panic.go:530 +0x8c
runtime.procresize(0x190, 0x0)
/usr/lib/go/src/runtime/proc.go:3158 +0xbd4
runtime.schedinit()
/usr/lib/go/src/runtime/proc.go:452 +0x140
runtime.rt0_go(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x3fffd512de59, ...)
/usr/lib/go/src/runtime/asm_ppc64x.s:72 +0xac
/var/lib/dpkg/info/golang-go.postinst: line 18: 100 + : syntax error: operand expected (error token is "+ ")
dpkg: error processing package golang-go (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of golang-doc:
golang-doc depends on golang-go; however:
Package golang-go is not configured yet.
dpkg: error processing package golang-doc (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of golang:
golang depends on golang-doc (>= 2:1.6-1ubuntu1); however:
Package golang-doc is not configured yet.
golang depends on golang-go (>= 2:1.6-1ubuntu1); however:
Package golang-go is not configured yet.
dpkg: error processing package golang (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
golang-go
golang-doc
golang
E: Sub-process /usr/bin/dpkg returned an error code (1)
Looking at the code I see:
_MaxGomaxprocs = 1 << 8
if old < 0 || old > _MaxGomaxprocs || nprocs <= 0 || nprocs > _MaxGomaxprocs {
throw("procresize: invalid arg")
}
If I decrease the amount of CPU to < 256, I don't see a problem.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/golang-1.6/+bug/1565978/+subscriptions
More information about the foundations-bugs
mailing list