RPi3B -j4 vs. -j3 main [so: 14] from-scratch buildworld times for my context; buildkernel too; swap space usage and such
- Reply: bob prohaska : "Re: RPi3B -j4 vs. -j3 main [so: 14] from-scratch buildworld times for my context; buildkernel too; swap space usage and such"
- Reply: Mark Millard : "Re: RPi3B -j4 vs. -j3 main [so: 14] from-scratch buildworld times for my context; buildkernel too; swap space usage and such"
- In reply to: Mark Millard : "Re: Armv7 (rpi2) getting stuck in buildworld for -current"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 25 May 2023 00:46:11 UTC
RPi3B -j4 vs. -j3 buildworld times for my context: World built in 120764 seconds, ncpu: 4, make -j4 [So a little under 33 hr 35 min] World built in 115635 seconds, ncpu: 4, make -j3 [So a little under 32 hr 10 min] [A delta of a little under 1hr 30min] So: -j4 buildworld spent more time waiting for its trashing of the swap space than time it gained from having use of a 4th core. The trashing is mostly during building of libllvm, libclang, and liblldb. The RPi3B RAM subsystem can limit the gain from having more cores active as well. By contrast . . . RPi3B -j4 vs. -j3 buildkernel times for my context: Kernel(s) GENERIC-NODBG-CA53 built in 7836 seconds, ncpu: 4, make -j4 [So a little under 2 hr 15 min] Kernel(s) GENERIC-NODBG-CA53 built in 8723 seconds, ncpu: 4, make -j3 [So a little under 2 hr 30 min] [A delta of a little under 15 min] So: -j4 buildkernel spent less time waiting for its trashing of the swap space than time it gained from having use of a 4th core. (Not much thrashing occurred.) And mem/swap usage info for buildworld+buildkernel . . . Overall -j4 vs -j3 buildworld buildkernel info for my context: -j4 Mem: . . ., 677688Ki MaxObsActive, 249652Ki MaxObsWired, 950032Ki MaxObs(Act+Wir+Lndry) -j3 Mem: . . ., 683416Ki MaxObsActive, 315140Ki MaxObsWired, 927424Ki MaxObs(Act+Wir+Lndry) -j4 Swap: . . ., 1495Mi MaxObsUsed, 2117Mi MaxObs(Act+Lndry+SwapUsed), 2358Mi MaxObs(Act+Wir+Lndry+SwapUsed) -j3 Swap: . . ., 1178Mi MaxObsUsed, 1811Mi MaxObs(Act+Lndry+SwapUsed), 2049Mi MaxObs(Act+Wir+Lndry+SwapUsed) FYI for the context: make[1]: "/usr/main-src/Makefile.inc1" line 326: SYSTEM_COMPILER: Determined that CC=cc matches the source tree. Not bootstrapping a cross-compiler. make[1]: "/usr/main-src/Makefile.inc1" line 331: SYSTEM_LINKER: Determined that LD=ld matches the source tree. Not bootstrapping a cross-linker. Notes: Incremental buildworld's would depend on how much rebuilding of libllvm, libclang, and liblldb would happen to occur. A system with 2 GiBytes of RAM would have far less trashing of the swap space. A system with 4 GiBytes of RAM would not thrash the swap space. The closest comparison I could make with 4 GiBytes of RAM would be the Rock64 doing a from-scratch build. It is also cortex-a53 based. As I remember, its RAM subsystem does not limit multiple cores as easily/much. I've no access to an analogous 2 GiByte context. === Mark Millard marklmi at yahoo.com