Skip to content

cmd/dist: GOMAXPROCS=2 runtime -cpu=1,2,4 -quick makes poor use of CPU resources, increasing all.bat latency #65164

Closed
@qiulaidongfeng

Description

@qiulaidongfeng

Go version

go version devel go1.22-66d34c7d08d Thu Jan 18 19:08:14 2024 +0000 windows/amd64

Output of go env in your module/workspace:

set GO111MODULE=auto
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\26454\AppData\Local\go-build
set GOENV=C:\Users\26454\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\file\gofile\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\file\gofile
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:\file\gofile\gogit\go1
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=local
set GOTOOLDIR=D:\file\gofile\gogit\go1\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=devel go1.22-66d34c7d08d Thu Jan 18 19:08:14 2024 +0000
set GCCGO=gccgo
set GOAMD64=v3
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=D:\file\gofile\gogit\go1\src\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=D:\tmp\go-build3525285322=/tmp/go-build -gno-record-gcc-switches

What did you do?

in cmd
cd src
all

What did you see happen?

Building Go cmd/dist using C:\Users\26454\.go\current. (devel go1.22-b2dbfbfc Fri Jan 12 00:56:20 2024 +0000 windows/amd64)
Building Go toolchain1 using C:\Users\26454\.go\current.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for windows/amd64.

##### Test execution environment.
# GOARCH: amd64
# CPU: AMD Ryzen 7 7840HS w/ Radeon 780M Graphics
# GOOS: windows
# OS Version: 10.0.22631

##### Testing packages.
ok      archive/tar     0.223s
ok      archive/zip     0.195s
ok      bufio   0.113s
ok      bytes   0.212s
ok      cmp     0.060s
ok      compress/bzip2  0.120s
ok      compress/flate  0.534s
ok      compress/gzip   1.185s
ok      compress/lzw    0.046s
ok      compress/zlib   0.145s
ok      container/heap  0.061s
ok      container/list  0.052s
ok      container/ring  0.035s
ok      context 0.341s
ok      crypto  0.040s
ok      crypto/aes      0.058s
ok      crypto/cipher   0.056s
ok      crypto/des      0.073s
ok      crypto/dsa      0.082s
ok      crypto/ecdh     0.096s
ok      crypto/ecdsa    0.086s
ok      crypto/ed25519  0.103s
ok      crypto/elliptic 0.048s
ok      crypto/hmac     0.047s
ok      crypto/internal/alias   0.062s
ok      crypto/internal/bigmod  0.098s
ok      crypto/internal/boring  0.033s
ok      crypto/internal/boring/bcache   0.204s
ok      crypto/internal/edwards25519    0.165s
ok      crypto/internal/edwards25519/field      0.063s
ok      crypto/internal/nistec  0.193s
ok      crypto/internal/nistec/fiat     0.062s [no tests to run]
ok      crypto/md5      0.115s
ok      crypto/rand     0.058s
ok      crypto/rc4      0.091s
ok      crypto/rsa      0.529s
ok      crypto/sha1     0.068s
ok      crypto/sha256   0.059s
ok      crypto/sha512   0.059s
ok      crypto/subtle   0.073s
ok      crypto/tls      1.519s
ok      crypto/x509     0.521s
ok      database/sql    0.901s
ok      database/sql/driver     0.057s
ok      debug/buildinfo 0.067s
ok      debug/dwarf     0.152s
ok      debug/elf       0.322s
ok      debug/gosym     0.099s
ok      debug/macho     0.086s
ok      debug/pe        11.081s
ok      debug/plan9obj  0.055s
ok      embed   0.059s [no tests to run]
ok      embed/internal/embedtest        0.054s
ok      encoding/ascii85        0.066s
ok      encoding/asn1   0.078s
ok      encoding/base32 0.148s
ok      encoding/base64 0.026s
ok      encoding/binary 0.053s
ok      encoding/csv    0.056s
ok      encoding/gob    1.765s
ok      encoding/hex    0.050s
ok      encoding/json   0.795s
ok      encoding/pem    1.006s
ok      encoding/xml    0.177s
ok      errors  0.089s
ok      expvar  0.081s
ok      flag    0.209s
ok      fmt     0.068s
ok      go/ast  0.106s
ok      go/build        2.298s
ok      go/build/constraint     0.075s
ok      go/constant     0.053s
ok      go/doc  0.238s
ok      go/doc/comment  2.640s
ok      go/format       0.079s
ok      go/importer     2.139s
ok      go/internal/gccgoimporter       0.085s
ok      go/internal/gcimporter  8.743s
ok      go/internal/srcimporter 28.659s
ok      go/parser       0.322s
ok      go/printer      0.195s
ok      go/scanner      0.025s
ok      go/token        0.035s
ok      go/types        27.728s
ok      go/version      0.067s
ok      hash    0.054s
ok      hash/adler32    0.124s
ok      hash/crc32      0.124s
ok      hash/crc64      0.080s
ok      hash/fnv        0.112s
ok      hash/maphash    0.222s
ok      html    0.124s
ok      html/template   0.167s
ok      image   0.120s
ok      image/color     0.031s
ok      image/draw      0.207s
ok      image/gif       0.418s
ok      image/jpeg      0.272s
ok      image/png       0.314s
ok      index/suffixarray       0.166s
ok      internal/abi    0.342s
ok      internal/buildcfg       0.023s
ok      internal/chacha8rand    0.076s
ok      internal/coverage/cformat       0.045s
ok      internal/coverage/cmerge        0.075s
ok      internal/coverage/pods  0.071s
ok      internal/coverage/slicereader   0.049s
ok      internal/coverage/slicewriter   0.051s
ok      internal/coverage/test  0.105s
ok      internal/cpu    0.067s
ok      internal/dag    0.092s
ok      internal/diff   0.082s
ok      internal/fmtsort        0.067s
ok      internal/fuzz   0.131s
ok      internal/godebug        2.846s
ok      internal/godebugs       0.128s
ok      internal/gover  0.110s
ok      internal/intern 1.865s
ok      internal/itoa   0.105s
ok      internal/platform       2.397s
ok      internal/poll   0.104s
ok      internal/profile        0.032s
ok      internal/reflectlite    0.033s
ok      internal/safefilepath   0.039s
ok      internal/saferio        0.110s
ok      internal/singleflight   0.082s
ok      internal/syscall/windows        0.072s
ok      internal/syscall/windows/registry       0.082s
ok      internal/testenv        1.215s
ok      internal/trace  0.158s
ok      internal/trace/v2       19.417s
ok      internal/types/errors   3.344s
ok      internal/unsafeheader   0.057s
ok      internal/xcoff  0.074s
ok      internal/zstd   0.101s
ok      io      0.395s
ok      io/fs   0.346s
ok      io/ioutil       0.155s
ok      log     0.102s
ok      log/slog        0.171s
ok      log/slog/internal/benchmarks    0.046s
ok      log/slog/internal/buffer        0.064s
ok      maps    0.063s
ok      math    0.032s
ok      math/big        0.963s
ok      math/bits       0.050s
ok      math/cmplx      0.052s
ok      math/rand       0.172s
ok      math/rand/v2    0.296s
ok      mime    0.235s
ok      mime/multipart  1.042s
ok      mime/quotedprintable    0.108s
ok      net     7.234s
ok      net/http        10.291s
ok      net/http/cgi    1.031s
ok      net/http/cookiejar      0.073s
ok      net/http/fcgi   0.274s
ok      net/http/httptest       0.109s
ok      net/http/httptrace      0.066s
ok      net/http/httputil       0.941s
ok      net/http/internal       0.242s
ok      net/http/internal/ascii 0.049s
ok      net/http/pprof  5.506s
ok      net/mail        0.125s
ok      net/netip       1.137s
ok      net/rpc 0.135s
ok      net/rpc/jsonrpc 0.047s
ok      net/smtp        0.078s
ok      net/textproto   0.463s
ok      net/url 0.034s
ok      os      7.472s
ok      os/exec 2.830s
ok      os/exec/internal/fdtest 0.052s
ok      os/signal       3.372s
ok      os/user 0.127s
ok      path    0.050s
ok      path/filepath   1.998s
ok      plugin  0.029s
ok      reflect 0.778s
ok      regexp  0.586s
ok      regexp/syntax   0.829s
ok      runtime 132.949s
ok      runtime/cgo     0.047s
ok      runtime/coverage        0.087s
ok      runtime/debug   0.230s
ok      runtime/internal/atomic 0.116s
ok      runtime/internal/math   0.045s
ok      runtime/internal/sys    0.070s
ok      runtime/internal/wasitest       0.075s
ok      runtime/metrics 0.061s
ok      runtime/pprof   12.095s
ok      runtime/trace   0.273s
ok      slices  0.226s
ok      sort    0.139s
ok      strconv 0.268s
ok      strings 0.201s
ok      sync    0.864s
ok      sync/atomic     2.293s
ok      syscall 7.149s
ok      testing 2.621s
ok      testing/fstest  0.109s
ok      testing/iotest  0.063s
ok      testing/quick   0.111s
ok      testing/slogtest        0.107s
ok      text/scanner    0.062s
ok      text/tabwriter  0.072s
ok      text/template   0.099s
ok      text/template/parse     0.036s
ok      time    2.359s
ok      unicode 0.047s
ok      unicode/utf16   0.026s
ok      unicode/utf8    0.027s
ok      cmd/addr2line   1.486s
ok      cmd/api 27.763s
ok      cmd/asm/internal/asm    0.682s
ok      cmd/asm/internal/lex    0.026s
ok      cmd/cgo/internal/swig   0.120s
ok      cmd/cgo/internal/test   0.596s
ok      cmd/cgo/internal/testcarchive   0.024s
ok      cmd/cgo/internal/testcshared    0.022s
ok      cmd/cgo/internal/testerrors     59.477s
ok      cmd/cgo/internal/testfortran    8.184s
ok      cmd/cgo/internal/testgodefs     3.394s
ok      cmd/cgo/internal/testlife       2.854s
ok      cmd/cgo/internal/testnocgo      0.022s
ok      cmd/cgo/internal/testplugin     0.023s
ok      cmd/cgo/internal/testsanitizers 0.033s [no tests to run]
ok      cmd/cgo/internal/testshared     0.030s
ok      cmd/cgo/internal/testso 6.885s
ok      cmd/cgo/internal/teststdio      7.648s
ok      cmd/cgo/internal/testtls        0.037s
ok      cmd/compile/internal/abt        0.102s
ok      cmd/compile/internal/amd64      0.039s
ok      cmd/compile/internal/base       0.034s
ok      cmd/compile/internal/compare    0.028s
ok      cmd/compile/internal/devirtualize       0.034s
ok      cmd/compile/internal/dwarfgen   1.414s
ok      cmd/compile/internal/importer   6.156s
ok      cmd/compile/internal/inline/inlheur     4.067s
ok      cmd/compile/internal/ir 0.076s
ok      cmd/compile/internal/logopt     1.414s
ok      cmd/compile/internal/loopvar    0.065s
ok      cmd/compile/internal/noder      0.026s
ok      cmd/compile/internal/reflectdata        0.025s [no tests to run]
ok      cmd/compile/internal/ssa        8.101s
ok      cmd/compile/internal/syntax     0.162s
ok      cmd/compile/internal/test       42.529s
ok      cmd/compile/internal/typecheck  2.214s
ok      cmd/compile/internal/types      0.029s
ok      cmd/compile/internal/types2     70.326s
ok      cmd/covdata     0.057s
ok      cmd/cover       18.006s
ok      cmd/dist        0.030s
ok      cmd/distpack    0.025s
ok      cmd/doc 0.310s
ok      cmd/fix 10.618s
ok      cmd/go  78.441s
ok      cmd/go/internal/auth    0.030s
ok      cmd/go/internal/cache   9.036s
ok      cmd/go/internal/cfg     0.222s [no tests to run]
ok      cmd/go/internal/envcmd  0.241s
ok      cmd/go/internal/fsys    2.319s
ok      cmd/go/internal/generate        0.169s
ok      cmd/go/internal/gover   0.058s
ok      cmd/go/internal/imports 0.340s
ok      cmd/go/internal/load    0.085s
ok      cmd/go/internal/lockedfile      0.222s
ok      cmd/go/internal/lockedfile/internal/filelock    0.177s
ok      cmd/go/internal/modfetch        0.173s
ok      cmd/go/internal/modfetch/codehost       24.865s
ok      cmd/go/internal/modfetch/zip_sum_test   0.083s
ok      cmd/go/internal/modindex        6.308s
ok      cmd/go/internal/modload 0.310s
ok      cmd/go/internal/mvs     0.077s
ok      cmd/go/internal/par     0.082s
ok      cmd/go/internal/str     0.228s
ok      cmd/go/internal/test    0.274s
ok      cmd/go/internal/toolchain       0.139s
ok      cmd/go/internal/vcs     0.238s
ok      cmd/go/internal/vcweb   0.434s
ok      cmd/go/internal/vcweb/vcstest   22.691s
ok      cmd/go/internal/web     0.113s
ok      cmd/go/internal/work    0.253s
ok      cmd/gofmt       0.645s
ok      cmd/internal/archive    12.673s
ok      cmd/internal/bootstrap_test     0.071s
ok      cmd/internal/buildid    0.247s
ok      cmd/internal/cov        5.303s
ok      cmd/internal/dwarf      0.068s
ok      cmd/internal/edit       0.065s
ok      cmd/internal/goobj      0.084s
ok      cmd/internal/moddeps    40.009s
ok      cmd/internal/notsha256  0.053s
ok      cmd/internal/obj        3.483s
ok      cmd/internal/obj/ppc64  0.860s
ok      cmd/internal/obj/riscv  0.441s
ok      cmd/internal/obj/s390x  0.051s
ok      cmd/internal/obj/x86    6.738s
ok      cmd/internal/objabi     3.385s
ok      cmd/internal/pkgpath    0.343s
ok      cmd/internal/pkgpattern 0.046s
ok      cmd/internal/quoted     0.064s
ok      cmd/internal/src        0.045s
ok      cmd/internal/test2json  0.186s
ok      cmd/link        35.472s
ok      cmd/link/internal/benchmark     0.086s
ok      cmd/link/internal/ld    28.982s
ok      cmd/link/internal/loader        0.073s
ok      cmd/nm  9.871s
ok      cmd/objdump     25.447s
ok      cmd/pack        7.744s
ok      cmd/pprof       6.090s
ok      cmd/trace       0.053s
ok      cmd/trace/v2    0.094s
ok      cmd/vet 20.430s

##### os/user with tag osusergo
ok      os/user 0.023s

##### hash/maphash purego implementation
ok      hash/maphash    0.065s

##### GOMAXPROCS=2 runtime -cpu=1,2,4 -quick
ok      runtime 177.829s

##### GOEXPERIMENT=rangefunc go test iter
ok      iter    0.012s

##### Testing without libgcc.
ok      net     0.061s
ok      os/user 0.020s

##### internal linking of -buildmode=pie
ok      reflect 0.089s
ok      os/user 0.036s

##### sync -cpu=10
ok      sync    0.761s

##### Testing race detector
ok      runtime/race    12.048s
ok      flag    1.047s
ok      net     1.082s
ok      os      1.130s
ok      os/exec 2.117s
ok      encoding/gob    1.058s
ok      flag    1.041s
ok      os/exec 2.116s

##### Testing cgo
ok      cmd/cgo/internal/test   0.217s
ok      cmd/cgo/internal/test   0.264s
ok      cmd/cgo/internal/test   0.253s
ok      cmd/cgo/internal/test   0.245s
ok      cmd/cgo/internal/test   0.236s

##### ../test
ok      cmd/internal/testdir    48.931s

##### API check
ok      cmd/api 54.223s

ALL TESTS PASSED
---
Installed Go for windows/amd64 in D:\file\gofile\gogit\go1
Installed commands in D:\file\gofile\gogit\go1\bin
*** You need to add D:\file\gofile\gogit\go1\bin to your PATH.

Running all.bat took 8 minutes and 41 seconds.

What did you expect to see?

GOMAXPROCS=2 runtime -cpu=1,2,4 -quick

I hope this doesn't cause all.bat to run only one runtime package test on the CPU for close to three minutes, and the CPU usage is very low (2-4% most of the time) and only changes to around 20% when using the C toolchain.

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.PerformanceTestingAn issue that has been verified to require only test changes, not just a test failure.compiler/runtimeIssues related to the Go compiler and/or runtime.

    Type

    No type

    Projects

    Status

    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions