On Fri, Nov 2, 2018 at 2:29 PM,  <m...@influxdata.com> wrote:
>
> 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.

To see the default value used for the -p option, run this program:

package main

import (
        "fmt"
        "runtime"
)

func main() {
        fmt.Println(runtime.NumCPU())
}

Ian

-- 
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