From c5db14b395ee5dc55baae5e84166ccfcdc1ef083 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Wed, 18 Aug 2021 21:29:53 +0100 Subject: sstate.bbclass: get the number of threads from BB_NUMBER_THREADS - bitbake BB_NUMBER_THREADS uses cpu_count from oe utils that uses the python os.sched_getaffinity and it is more acurrate. grep -nH ^BB_NUMBER_THREADS meta/conf/bitbake.conf meta/conf/bitbake.conf:806:BB_NUMBER_THREADS ?= "${@oe.utils.cpu_count()}" - multiprocessing.cpu_count() returns the number of CPUs on the host, not the number of usable CPUs on the host. If the user is using scheduler affinity then the number of usable CPUs may be less, so when determining how many cores we can use check the affinity instead. (From OE-Core rev: 45c52f08a289c6eb2329de50634a0406204d1d8e) Signed-off-by: Jose Quaresma Signed-off-by: Richard Purdie --- meta/classes/sstate.bbclass | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'meta/classes/sstate.bbclass') diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 2175ace4c4..d7f1b3f26e 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass @@ -971,13 +971,12 @@ def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True, tasklist.append((tid, sstatefile)) if tasklist: + nproc = min(int(d.getVar("BB_NUMBER_THREADS")), len(tasklist)) + if len(tasklist) >= min_tasks: msg = "Checking sstate mirror object availability" bb.event.fire(bb.event.ProcessStarted(msg, len(tasklist)), d) - import multiprocessing - nproc = min(multiprocessing.cpu_count(), len(tasklist)) - bb.event.enable_threadlock() pool = oe.utils.ThreadedPool(nproc, len(tasklist), worker_init=checkstatus_init, worker_end=checkstatus_end) -- cgit v1.2.3-54-g00ecf