Toolchain and systemd services to use x86_64 volunteers to help build Arch ARM stuff.
The following examples illustrate that gains for 2-3x can be realized when compiling ARM code using a single x86_64 volunteer with distcc. The two compile tasks shown below used a RPi4 host alone, then the RPi4 host with a single x86_64.
For the purposes of the experiments, two different x86_64 volunteers were used:
make -j5 bzImage
for the kernel and make -j5
for ffmpeg.make -j5 bzImage CC=distcc CXX=distcc
for the kernel and make -j16
for ffmpeg.Building kernel v5.4.75 (make bzImage
only). The table below summarizes the runs compiling alone and with the x86_64 node. The times shown are the mean of 4 runs. The % change is relative to the time to compile alone. Using a single x86_64 node decreases compilation time by 2.1-2.6x depending on the CPU power of the volunteer tested.
Nodes | Time (sec) | % change |
---|---|---|
RPi4 alone | 1,341.3 ± 1.1 | - |
RPi4+mars | 516.2 ± 0.4 | 260.0 |
RPi4+mercury | 639.0 ± 0.9 | 210.0 |
Building ffmpeg v4.3.1, the table below summarizes the runs compiling alone and with the x86_64 node. The times shown are the mean of 4 runs. The % change is relative to the time to compile alone. Using a single x86_64 node decreases compilation time by by 2.1-3.3x depending on the CPU power of the volunteer tested.
Nodes | Time (sec) | % change |
---|---|---|
RPi4 alone | 757.1 ± 0.7 | - |
RPi4+mars | 229.4 ± 5.0 | 330.0 |
RPi4+mercury | 356.6 ± 0.1 | 212.3 |
Arch ARM supplies pre-built toolchains for armv7h and armv8 (aarch64) and the distccd-alarm package in the AUR supplies these plus systemd service units. Download and install these on your x86_64 volunteer.