diff mbox series

[v3,1/2] gitlab-ci.yml: Allow custom # of parallel linkers

Message ID 20210304030948.9367-2-dbuono@linux.vnet.ibm.com
State New
Headers show
Series gitlab-ci.yml: Add jobs to test CFI | expand

Commit Message

Daniele Buono March 4, 2021, 3:09 a.m. UTC
Define a new variable LD_JOBS, that can be used to select
the maximum number of linking jobs to be executed in parallel.
If the variable is not defined, maintain the default given by
make -j

Currently, make parallelism at build time is based on the number
of cpus available.

This doesn't work well with LTO at linking, because with LTO the
linker has to load in memory all the intermediate object files
for optimization.
The end result is that, if the gitlab runner happens to run two
linking processes at the same time, the job will fail with an
out-of-memory error,

This patch leverages the ability to maintain high parallelism at
compile time, but limit the number of linkers executed in parallel.

Signed-off-by: Daniele Buono <dbuono@linux.vnet.ibm.com>
---
 .gitlab-ci.yml | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Daniel P. Berrangé March 4, 2021, 10:38 a.m. UTC | #1
On Wed, Mar 03, 2021 at 10:09:47PM -0500, Daniele Buono wrote:
> Define a new variable LD_JOBS, that can be used to select
> the maximum number of linking jobs to be executed in parallel.
> If the variable is not defined, maintain the default given by
> make -j
> 
> Currently, make parallelism at build time is based on the number
> of cpus available.
> 
> This doesn't work well with LTO at linking, because with LTO the
> linker has to load in memory all the intermediate object files
> for optimization.
> The end result is that, if the gitlab runner happens to run two
> linking processes at the same time, the job will fail with an
> out-of-memory error,
> 
> This patch leverages the ability to maintain high parallelism at
> compile time, but limit the number of linkers executed in parallel.
> 
> Signed-off-by: Daniele Buono <dbuono@linux.vnet.ibm.com>
> ---
>  .gitlab-ci.yml | 4 ++++
>  1 file changed, 4 insertions(+)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8b6d495288..814f51873f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -27,6 +27,10 @@  include:
       else
         ../configure --enable-werror $CONFIGURE_ARGS ;
       fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
+    - if test -n "$LD_JOBS";
+      then
+        meson configure . -Dbackend_max_links="$LD_JOBS" ;
+      fi || exit 1;
     - make -j"$JOBS"
     - if test -n "$MAKE_CHECK_ARGS";
       then