This is somewhat an XY problem, so let me preface with the X:

We infrequently see `/usr/local/go/pkg/tool/linux_amd64/link: signal: 
killed` when running `go test` for our project on CircleCI, running Go 
1.11.1.

As far as I can tell, that killed signal is due to OOMing. The comment 
at https://github.com/golang/go/issues/26186#issuecomment-427482208 says he 
worked around that same symptom by using -p=8.

I could easily switch our command to `go test -p=8`, but I want to 
understand what value is used when the -p flag isn't provided.

All `go help build` has to say is:

> -p n
> the number of programs, such as build commands or
> test binaries, that can be run in parallel.
> The default is the number of CPUs available.

Our particular build seems to fall under this part of the Circle 
docs: https://circleci.com/docs/2.0/configuration-reference/#resource_class

I think we're on a 2 vCPU setup, but the docs go on to state:

> Java, Erlang and any other languages that introspect the /proc directory 
for information about CPU count may require additional configuration to 
prevent them from slowing down when using the CircleCI 2.0 resource class 
feature. Programs with this issue may request 32 CPU cores and run slower 
than they would when requesting one core. Users of languages with this 
issue should pin their CPU count to their guaranteed CPU resources.

Skimming through the code, it looks like Go on Linux should be using 
sched_getaffinity, so I don't think it's inspecting /proc. But maybe I read 
things wrong.


Is the `go help build` output "number of CPUs available" GOMAXPROCS or 
something else? I was somewhat surprised to see that `go env` doesn't emit 
GOMAXPROCS.


I also tried locally running `go test -x` to see if that had any output to 
hint towards what the default value of -p would be, but if that detail was 
in the output, I missed it.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to