[U-Boot] [PATCH] MAKEALL: Automatically use parallel builds

Add logic to the MAKEALL script to determine the number of CPU cores on the system, and run a parallel build if there is more than one. Usually this significantrly accelerates builds.
Allow to manually adjust the number of parallel make jobs by using the "BUILD_NCPUS" environment variable.
Signed-off-by: Wolfgang Denk wd@denx.de --- MAKEALL | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/MAKEALL b/MAKEALL index dbed268..a16549c 100755 --- a/MAKEALL +++ b/MAKEALL @@ -1,6 +1,15 @@ #!/bin/sh
-: ${JOBS:=} +# Determine number of CPU cores if no default was set +: ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"} + +if [ "$BUILD_NCPUS" -gt 1 ] +then + JOBS=-j`expr "$BUILD_NCPUS" + 1` +else + JOBS="" +fi +
if [ "${CROSS_COMPILE}" ] ; then MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"

On Monday 08 December 2008 18:41:25 Wolfgang Denk wrote:
Add logic to the MAKEALL script to determine the number of CPU cores on the system, and run a parallel build if there is more than one. Usually this significantrly accelerates builds.
Allow to manually adjust the number of parallel make jobs by using the "BUILD_NCPUS" environment variable.
Signed-off-by: Wolfgang Denk wd@denx.de
MAKEALL | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/MAKEALL b/MAKEALL index dbed268..a16549c 100755 --- a/MAKEALL +++ b/MAKEALL @@ -1,6 +1,15 @@ #!/bin/sh
-: ${JOBS:=} +# Determine number of CPU cores if no default was set +: ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"}
+if [ "$BUILD_NCPUS" -gt 1 ]
no point in quoting here ... if it isnt numeric, then -gt will fail, and all numeric values lack whitespace ...
+then
- JOBS=-j`expr "$BUILD_NCPUS" + 1`
+else
- JOBS=""
+fi
i generally see the heuristic (cpus * 2) rather than (cpus + 1) ... benchmarks tend to favor that as well ...
but this is certainly better than previous behavior: always use -j1 ... -mike

Dear Mike,
In message 200812090056.25498.vapier@gentoo.org you wrote:
-: ${JOBS:=} +# Determine number of CPU cores if no default was set +: ${BUILD_NCPUS:"`getconf _NPROCESSORS_ONLN`"}
+if [ "$BUILD_NCPUS" -gt 1 ]
no point in quoting here ... if it isnt numeric, then -gt will fail, and all numeric values lack whitespace ...
You are wrong. This is defensive programming against invalid user input.
Assume the user runs
BUILD_NCPUS=' ' MAKEALL
...
Without the quoting, we get a "[: -gt: unary operator expected" error message; with the quotes we single process build as (probably) expected.
+then
- JOBS-j`expr "$BUILD_NCPUS" + 1`
+else
- JOBS""
+fi
i generally see the heuristic (cpus * 2) rather than (cpus + 1) ... benchmarks tend to favor that as well ...
This obviously depends onyour benchmarks. For U-Boot builds, all systems I've checked (with 512 MB or more of RAM) tend to have all required files in RAM, so the only I/O is writing the object files and binaries out - which is negligable. In other words, the system is nearly 100% CPU bound. In this case, (cpus + 1) seems more appropriate to me. But YMMV ...
Best regards,
Wolfgang Denk
participants (2)
-
Mike Frysinger
-
Wolfgang Denk