Re: Improving www/chromium build time on arm64

From: Mark Millard <marklmi_at_yahoo.com>
Date: Tue, 30 May 2023 09:46:53 UTC
On May 30, 2023, at 01:39, Nuno Teixeira <eduardo@freebsd.org> wrote:

> Hello Ronald and all!
> 
> Finally I build it after 57 hours @ 2000MHz !!!

So the prior "[88:53:28] Failed ports: www/chromium:build/timeout"
was not with the overclocking? Other differences that could
contribute to the time difference?

MAX_EXECUTION_TIME=86400 (the default) only allows for 24 hours
before it starts analyzing the log for failure information (while
letting the build continue while that scanning is done).

> Configs, photos and log at: https://people.freebsd.org/~eduardo/logs/chromium/

https://people.freebsd.org/~eduardo/logs/chromium/poudriere.conf
shows no assignments to MAX_EXECUTION_TIME or NOHANG_TIME or
other such (outside comments). In the comments are the default
values, not increases.

Similarly for PARALLEL_JOBS , PREPARE_PARALLEL_JOBS , ALLOW_MAKE_JOBS ,
and so on. (It is not clear what the load average behavior/ idle time
behavior might have been.)

The file does show explicit assignments to: ZPOOL, FREEBSD_HOST ,
RESOLV_CONF , BASEFS , USE_PORTLINT , USE_TMPFS , DISTFILES_CACHE ,
and PACKAGE_FETCH_URL .

> I'm running it right now and it runs very smooth!
> 
> Next step will be compiling with LTO to check compile time and do some comparisons on binary size and run performance.
> 
> Should I bother with LTO? Will it add performance?
> 
> Thanks all!
> 
> 
> Ronald Klop <ronald-lists@klop.ws> escreveu no dia terça, 23/05/2023 à(s) 11:23:
>> Â  
>>> Van: Nuno Teixeira <eduardo@freebsd.org>
>>> Datum: dinsdag, 23 mei 2023 09:48
>>> Aan: FreeBSD Mailing List <freebsd-ports@freebsd.org>, freebsd-arm@freebsd.org
>>> Onderwerp: Re: Improving www/chromium build time on arm64
>>> (...) 
>>> Â 
>>> But I also found that poudriere:
>>> [88:53:28] Failed ports: www/chromium:build/timeout
>>> Â 
>>> So I will search how do I increase build time to avoid timeout:
>>> ---
>>> # This defines the max time (in seconds) that a command may run for a build
>>> # before it is killed for taking too long. Default: 86400
>>> #MAX_EXECUTION_TIME=86400
>>> ---
>>> Â 
>>> I suspect it can be the cause of build failure because build >24h.
>>> Â  
>>> Nuno Teixeira <eduardo@freebsd.org> escreveu no dia terça, 23/05/2023 à (s) 08:31:
>>> Hello all, 
>>> Â 
>>> I'm running 13-STABLE on rpi4 8 and since firefox{-esr} is constantly tab crashing and seg faulting I decided to give chromium a try.
>>> chromium pkg isn't available for arm64 and I didn't found error log at https://pkg-status.freebsd.org/ so I decided to build it on poudriere.
>>> Â 
>>> It fails to build around 70% but my biggest concern is build time: 27 hours for 70% compilation!
>>> Â 
>>> Just for comparison:
>>> llvm15: 12h
>>> rust: 9h
>>> firefox: 6h
>>> Â 
>>> rip4 v1.5 8GB @ 2000Hz ~62 Celsius
>>> zfs
>>> poudriere:
>>> USE_TMPFS=no
>>> PARALLEL_JOBS=1
>>> ALLOW_MAKE_JOBS=yes
>>> Â 
>>> Any hints on how to speed build? ccache?
>>> Does cflags "-O -pipe" not present in compilation is related to build time? 
>>> Â 
>>> Full log:
>>> https://people.freebsd.org/~eduardo/logs/chromium/chromium-113.0.5672.126.log
>>> Â 
>>> Thanks!
>>> Â 
>>> ---
>>> <SNIP>
>>> In file included from ../../base/check.h:11:
>>> ../../base/compiler_specific.h:8:10: fatal error: 'build/build_config.h' file not found
>>> #include "build/build_config.h"
>>>          ^~~~~~~~~~~~~~~~~~~~~~
>>> 1 error generated.
>>> ninja: build stopped: subcommand failed.
>>> ===> Compilation failed unexpectedly.
>>> Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
>>> the maintainer.
>>> *** Error code 1
>>> 
>>> Stop.
>>> make: stopped in /usr/ports/www/chromium
>>> build of www/chromium | chromium-113.0.5672.126 ended at Tue May 23 02:22:56 WEST 2023
>>> build time: 27:15:37
>>> !!! build failure encountered !!!
>>> ---
>>> -- Nuno Teixeira
>>> FreeBSD Committer (ports)
>>>   Â 
>>> -- Nuno Teixeira
>>> FreeBSD Committer (ports)
>>> 
>> 
>> Hi,
>> 
>> My poudriere.conf for building ports on rpi4 contains these two changes:
>> 
>> # This defines the max time (in seconds) that a command may run for a build
>> # before it is killed for taking too long. Default: 86400
>> #MAX_EXECUTION_TIME=86400
>> MAX_EXECUTION_TIME=172800
>> 
>> # This defines the time (in seconds) before a command is considered to
>> # be in a runaway state for having no output on stdout. Default: 7200
>> #NOHANG_TIME=7200
>> NOHANG_TIME=172800
>> 
>> 
>> I'm maintaining some mongodb ports which also take a long long time to build on rpi4.
>> But I don't remember which of these settings has the preferred impact on your situation.
>> 
>> Oh... now I'm reading your log better. It contains this:
>> "=>> Killing timed out build after 86400 seconds"
>> 
>> And some time later:
>> "=>> Cleaning up wrkdir
>> ===> Cleaning for chromium-113.0.5672.126"
>> 
>> So the errors about missing files happen because poudriere is removing files while some processes of the build are still running.
>> 
>> I'm curious how far it gets after you increase MAX_EXECUTION_TIME.
> 

===
Mark Millard
marklmi at yahoo.com