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]