Re: RPi 4 build time

From: tech-lists <tech-lists_at_zyxst.net>
Date: Fri, 21 May 2021 22:26:00 UTC
Hi,

On Fri, May 21, 2021 at 11:07:35PM +0300, Evgeniy Khramtsov via freebsd-arm wrote:

>How long are compile times for aarch64 8 GB RPi? It is especially
>interesting to know about overclocked results. I guess buildworld time
>would describe it well, but any heavy port (ex. rust) would also be great.

It depends. I've got it down to about 4 1/2 hrs for the
buildworld/buildkernel steps. But this is after all this has been done:

for stable/13:

1. configuration and use of devel/ccache-static
2. clocking to 2.0 GHz with the following config.txt:

[...]
% less /boot/msdos/config.txt 
arm_control=0x200
dtparam=audio=on,i2c_arm=on,spi=on
dtoverlay=mmc
dtoverlay=pwm
dtoverlay=disable-bt
device_tree_address=0x4000
kernel=u-boot.bin
over_voltage=6
arm_freq=2000
sdram_freq_min=3200

*make SURE you have good cooling!!!!!* I have a flirc rpi4 case on this
one.

3. /usr/obj /usr/src and /var/cache/ccache on zfs on usb3-connected
spinning rust

4. /tmp as tmpfs (512mb)

5. make -j6 buildworld && make -j6 buildkernel (after make -j10 cleanworld 
&& make -j10 cleandir && make -j10 clean)

6. having *already built* a new world and kernel and installed it all and
rebooted, which had been built with the following /etc/src.conf :

[...]
WITH_MALLOC_PRODUCTION=
WITHOUT_DEBUG_FILES=
WITH_CCACHE_BUILD=
WITH_OPENSSL_KTLS=

WITHOUT_APM=
WITHOUT_ASSERT_DEBUG=
WITHOUT_BLUETOOTH=
WITHOUT_CUSE=
WITHOUT_DICT=                                                                                                  
WITHOUT_DMAGENT=                                                                                               
WITHOUT_FLOPPY=                                                                                                
WITHOUT_FREEBSD_UPDATE=                                                                                        
WITHOUT_HAST=                                                                                                  
WITHOUT_IPFILTER=                                                                                              
WITHOUT_IPFW=                                                                                                  
WITHOUT_ISCSI=                                                                                                 
WITHOUT_KERNEL_SYMBOLS=                                                                                        
WITHOUT_LLVM_TARGET_ALL=                                                                                       
WITH_LLVM_TARGET_AARCH64=                                                                                      
WITH_LLVM_TARGET_ARM=
WITHOUT_LPR=
WITHOUT_NDIS=
WITHOUT_NETGRAPH=
WITHOUT_NIS=
WITHOUT_OFED=
WITHOUT_PORTSNAP=
WITHOUT_PPP=
WITHOUT_RADIUS_SUPPORT=
WITH_RATELIMIT=
WITHOUT_RBOOTD=
WITHOUT_ROUTED=
WITH_SORT_THREADS=
WITH_SVN=
WITHOUT_TALK=
WITHOUT_TESTS=
WITHOUT_TFTP=
WITHOUT_UNBOUND=
#
CFLAGS.clang+= -mcpu=cortex-a72
CXXFLAGS.clang+= -mcpu=cortex-a72
CPPFLAGS.clang+= -mcpu=cortex-a72
ACFLAGS.arm64cpuid.S+= -mcpu=cortex-a72+crypto
ACFLAGS.aesv8-armx.S+= -mcpu=cortex-a72+crypto
ACFLAGS.ghashv8-armx.S+= -mcpu=cortex-a72+crypto

(and afterwards, make check-old (then) yes | make delete-old then yes|
make delete-old-libs) then 

7. with the following in /etc/sysctl.conf :
vfs.read_max=128 

With regard to building ports (I use poudriere-devel) with jobs=4 I see
the following build times for the largest five ports built subsequently:

rust-1.51.0 took 7hrs 46mins
doxygen-1.9.1,2 took 1hr 36mins
texlive-texmf-20150523_4 took 1hr 36mins
llvm10-10.0.1_5 took 1hr 4mins
binutils-2.33.1_4,1 took 57mins 37s

The poudriere jail instance for this rpi4 uses the same /usr/src as what
has built the OS. This means it was built with the same /etc/src.conf
parameters.

My other rpi4 (runs main/14, currently I'm testing it) will clock to 2.1GHz. 
I've not thoroughly tested buildtimes there yet.

I forgot to mention both my stable/13 rpi4 and main/14rpi4 run powerd
with these lines in /etc/rc.conf:

powerd_enable="YES"
powerd_flags="-r 1"
-- 
J.