diff --git a/daemon/daemon_windows.go b/daemon/daemon_windows.go index f7d557fb84..85a1d43ed5 100644 --- a/daemon/daemon_windows.go +++ b/daemon/daemon_windows.go @@ -3,7 +3,9 @@ package daemon // import "github.com/docker/docker/daemon" import ( "context" "fmt" + "math" "path/filepath" + "runtime" "strings" "github.com/Microsoft/hcsshim" @@ -41,9 +43,10 @@ const ( windowsMaxCPUPercent = 100 ) -// Windows doesn't really have rlimits. +// Windows containers are much larger than Linux containers and each of them +// have > 20 system processes which why we use much smaller parallelism value. func adjustParallelLimit(n int, limit int) int { - return limit + return int(math.Max(1, math.Floor(float64(runtime.NumCPU())*.8))) } // Windows has no concept of an execution state directory. So use config.Root here.