From c36243fd34b4da81b2929cd1b6a092178d334734 Mon Sep 17 00:00:00 2001
From: Esben Haabendal <esben.haabendal@huawei.com>
Date: Tue, 12 Jul 2022 11:57:54 +0200
Subject: [PATCH] CI: Attempt to throttle load caused builds better

Use the support that both make and ninja have to hold back on starting new
parallel jobs if load is higher than a set number.

Use the $CI_ONIRO_NUM_CPUS variable if set, or the output of nproc command to
set sane values.

For most cases, this means that CI runners don't have to set anything, as nproc
output should be fine.

Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
---
 .gitlab-ci.yml | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0ba1c1e3..06640ee8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -145,10 +145,11 @@ stages:
         echo "SSTATE_MIRRORS = \"file://.* file://$SSTATE_MIRROR_PATH/PATH\""
           >> conf/auto.conf ;
       fi
-    - if [ -n "$CI_ONIRO_NUM_CPUS" ] ; then
-        echo "BB_NUMBER_THREADS = \"$CI_ONIRO_NUM_CPUS\"" ;
-        echo "BB_NUMBER_PARSE_THREADS = \"$CI_ONIRO_NUM_CPUS\"" ;
-      fi >> conf/auto.conf
+    - NUM_CPUS="${CI_ONIRO_NUM_CPUS:-$(nproc)}"
+    - echo "BB_NUMBER_PARSE_THREADS = \"$NUM_CPUS\"" >> conf/auto.conf
+    - echo "BB_NUMBER_THREADS = \"$((NUM_CPUS/2))\"" >> conf/auto.conf
+    - echo "PARALLEL_MAKE = \"-j$NUM_CPUS -l$NUM_CPUS\"" >> conf/auto.conf
+    - echo "NINJA_ARGS:append = \" -j$NUM_CPUS -l$NUM_CPUS\"" >> conf/auto.conf
     - echo "RM_WORK_EXCLUDE += \"${RECIPE}\"" >> conf/auto.conf
     - echo "OPENHARMONY_VERSION = \"${OPENHARMONY_VERSION}\"" >> conf/auto.conf
   script:
-- 
GitLab