boyter · GitHub

@dbaggerman

scc was starting to be capable of launching goroutines at a rate which
can lead to launching too many OS threads:
* linux-4.19-rc1 on a 16 core c5.4xlarge:
runtime: failed to create new OS thread (have 4090 already; errno=11)
runtime: may need to increase max user processes (ulimit -u)
fatal error: newosproc
this change bounds the number of goroutine workers to avoid this, while
still creating enough to saturate the CPU. This includes a marginal
improvement in performance, and appears to make the runtime much more
consistent:
* linux-4.19-rc1 on a 4 core c5.xlarge:
before: Time (mean ± σ):      4.680 s ±  0.727 s    [User: 17.920 s, System: 0.632 s]
after:  Time (mean ± σ):      4.532 s ±  0.005 s    [User: 17.340 s, System: 0.705 s]

Read the original on github.com ↗