How to investigate an unexpected port build time-taken relationship in an aarch64 context?

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 29 Feb 2024 02:46:36 UTC
Example HW Context: Windows Development Kit 2023
8 cores: 4 cortex-A78C's and 4 cortex-X1C's
Headless: serial console and ssh access, no x11 or the like installed.
UFS use.

Note: cortex-A76's are missing 3 or so instruction set
features compared to A78C/X1C parts. Use of
-mcpu=cortex-a76 generated code is compatibile (and would allow
the code to run on a cortex-a76 system, such as an RPi5 once
supported).

I've been doing poudriere-devel bulk timing experiments based on:

A) PkgBase based system software (kernel and world) and
general use of default code generation for ports and
such.

B) A personal -mcpu=cortex-a76 based kernel, world, port builds
(into packages via poudriere-devel).

C) Also use of an armv7 poudriere jail based on armv7 PkgBase
and default armv7 code generation. This was used in both the
(A) and (B) contexts. These also show what I'm curious about.

Using the armv7 poudriere jail context for illustration:

For (B) used via the armv7 context:

[05:40:24] [03] [04:55:38] Finished lang/rust | rust-1.76.0: Success
. . .
[05:45:58] [01] [05:01:12] Finished devel/llvm18@default | llvm18-18.1.0.r3: Success
[05:46:00] [01] [00:00:00] Building devel/boost-libs | boost-libs-1.84.0
[06:59:23] [01] [01:13:23] Finished devel/boost-libs | boost-libs-1.84.0: Success

For (A) used via the armv7 poudriere jail context:

[06:33:21] [01] [05:40:48] Finished lang/rust | rust-1.76.0: Success
. . .
[06:40:05] [05] [05:48:09] Finished devel/llvm18@default | llvm18-18.1.0.r3: Success
[06:40:07] [01] [00:00:00] Building devel/boost-libs | boost-libs-1.84.0
[06:57:48] [01] [00:17:41] Finished devel/boost-libs | boost-libs-1.84.0: Success

The curiosity is about the 01:13:23 vs. 00:17:41 boost-libs: The
ratio is large and in the opposite direction to most time trends.

Notes: Almost all the time llvm18 and rust were building, both were
building but little else did and the load average was 16+ from the
llvm18/rust build activity. When boost-libs was building it was the
only thing building and it looked to be single threaded when I
was watching.

(A) and (B) without use of the armv7 context got similar results
when I first noticed this but I'm going back and recording times
for some variations. I do not have those to report other
pairs of results yet.

(In the armv7 poudriere jail context reported:)
(B) takes less time for llvm18 and rust than (A) does.
(A) takes vastly less time for boost-libs than (B) does,
approximately a factor of 4 for the time-ratio.

I'd be curious to get a clue what contributes to the boost-libs
time ratio being so extreme once I have figures for other
combinations of poudriere jail content vs. the system's content.


===
Mark Millard
marklmi at yahoo.com