Hi RP,

On 8/11/20 3:57 PM, Richard Purdie wrote:
On Tue, 2020-08-11 at 15:22 +0800, Yu, Mingli wrote:
From: Mingli Yu <[email protected]>

pigz, which stands for parallel implementation of gzip, is a
fully functional replacement for gzip that exploits multiple
processors and multiple cores to the hilt when compressing data.

do_package uses pigz to compress data to speed up the time
if there is pigz available on the build server.

But for some big package such as clang, there comes below
error during do_package.
gzip: stdout: Cannot allocate memory
tar: 
TOPDIR/sstate-cache/20/80/sstate:clang:cortexa57-wrs-linux:10.0.1:r0:cortexa57:3:20808f8a746b00ec9470a81057c8595d878cfe8c565cfbcbbaa3ea870528ee34_package.tgz.QF5dss8M:
 Wrote only 8192 of 10240 bytes
tar: Child returned status 1
tar: Error is not recoverable: exiting now

So set the default pigz thread and the user also can customize
the pigz thread such as via PIGZ = "-p 3" or PIGZ_pn-clang = "-p 3"
for the individual package in local.conf to avoid eating so much
memory.

Signed-off-by: Mingli Yu <[email protected]>
---
  meta/conf/bitbake.conf | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 353caacef9..bc87e78d78 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -804,6 +804,9 @@ XZ_THREADS ?= "${@oe.utils.cpu_count(at_least=2)}"
  XZ_DEFAULTS ?= "--memlimit=${XZ_MEMLIMIT} --threads=${XZ_THREADS}"
  XZ_DEFAULTS[vardepsexclude] += "XZ_MEMLIMIT XZ_THREADS"
+# Default parallelism and resource usage for pigz
+export PIGZ = "-p ${@oe.utils.cpu_count(at_least=2)}"

Why not just set this in the cases you need it in and leave the
defaults alone? You can just export it in the tasks which need it too.

Actually I just want to use this logic in this patch altogether PIGZ_pn-clang = "-p 3" in local.conf to limit the pigz thread number for clang.

Without this patch, I think PIGZ_pn-clang = "-p 3" doesn't take effect.


This change actually makes the sstate number of cpus specific which we
definitely don't want.

From my understanding, the default behavior for pigz is to take all online cores, it should be the same with export PIGZ = "-p ${@oe.utils.cpu_count(at_least=2)}".

Thanks,


Cheers,

Richard


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#141366): 
https://lists.openembedded.org/g/openembedded-core/message/141366
Mute This Topic: https://lists.openembedded.org/mt/76121921/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to