Re: speedup build time

From: David Wolfskill <david_at_catwhisker.org>
Date: Mon, 28 Oct 2024 02:10:48 UTC
On Sun, Oct 27, 2024 at 08:47:55PM -0500, Maku Bex wrote:
> Hi David,
> 
> * What (if any) "max_jobs" (make's "-j" parameter) are you using? 16
> 
> * For a 16T system, I expect I would start with a value of around 28. Shouldn't this number be equal to $(nproc --all)?

Not necessarily.  You might want to watch the output of "top" as the
machine is busy, and try changing the max_jobs parameter.  Basically, if
the machine is spending "a lot" of time during "make buildworld" (&
friends) in "system" time, well ... that's likely (mostly) overhead.  I
typically (mostly, and from memory) see 0% idle with <2% system CPU.

You almost certainly don't want a thread to need to hunt down the next
bit of work to be done when the current bit's time slice is up or it
goes into a wait: that next work should be queued up, ready to go.

> * Are you using make's "meta" mode?  I do. Yes.
> 
> * Can you get more memory for that system? Yes, I can bump it to 32GB. This is a Dell OptiPlex 7080 Micro, and not sure if it is worth upgrading the other components.

I suspect that additional memory would be "helpful."

> If your laptop can complete the builds in such a small amount of time, then there's either something wrong with my machine or the config files. Oh! The build just finished as I was typing this reply and...(not for the weak hearts):

:-}

> --------------------------------------------------------------
> >>> World built in 32437 seconds, ncpu: 16
> --------------------------------------------------------------  
> 
> Here are the contents of:
> 
> make.conf:
> 
> CPUTYPE?=icelake-client
> CFLAGS= -O2 -pipe -march=${CPUTYPE}
> #CXXFLAGS=${CFLAGS}
> MACHINE_CPU+= avx512 avx2 avx sse42 sse41 ssse3 sse3 f16c
> MAKE_JOBS_NUMBER= 16
> BATCH=yes
> WRKDIRPREFIX=/var/ports/tmp
> CCACHE_DIR=/var/ccache/tmp
> 
> OPTIONS_UNSET+= QT5 QT6 CUPS VESA SCFB TWM XCONSOLE XCLOCK GNOME KDE EXAMPLES \
>                 DEBUG ASPELL NLS DOCS
> -------------------------------------------------------------------------------
> src-env.conf:
> 
> WITH_META_MODE=yes
> WITH_CCACHE_BUILD=yes
> #WITH_DIRDEPS_BUILD=yes <<fails
> #WITH_DIRDEPS_CACHE=yes <<fails 
> 
> WITHOUT_TALK=yes
> WITHOUT_TELNET=yes
> WITHOUT_TFTP=yes
> WITHOUT_IPFILTER=yes
> WITHOUT_IPFW=yes
> WITHOUT_FLOPPY=yes
> WITHOUT_GAMES=yes
> WITHOUT_BLUETOOTH=yes
> WITHOUT_EE=yes
> WITHOUT_FREEBSD_UPDATE=yes
> WITHOUT_GPIO=yes
> WITHOUT_MAIL=yes
> WITHOUT_TESTS=yes
> WITHOUT_AMD=yes
> WITHOUT_CLANG=yes
> WITHOUT_DEBUG_FILES=yes
> WITHOUT_EXAMPLES=yes
> WITHOUT_HYPERV=yes
> 
> Happy Hacking,
> ....

My config files are much simpler (these are for stable/14; head is
nearly the same):

/etc/make.conf:
NET_SNMP_SYS_CONTACT="david@catwhisker.org"
NET_SNMP_SYS_LOCATION="variable"
NET_SNMP_LOGFILE=/var/log/snmpd.log
NET_SNMP_PERSISTENTDIR=/var/net-snmp
EXTRA_PATCH_TREE=/usr/local/port_patches
WITH_BSD_JDK=TRUE
WITHOUT_RUNTIME_CPUDETECTION=   YES
WITHOUT_CJK=    YES
NO_SUID_XSERVER=YES
INSTALL_AS_NCFTP=yes
OPTIONS_SET=OPTIMIZED_CFLAGS
DISABLE_VULNERABILITIES=yes
FORCE_PKG_REGISTER=    YES
PKG_NOCOMPRESS=1
SENDMAIL_MC=/etc/mail/laptop.mc
WITH_DEBUG_PORTS=x11/nvidia-driver

/etc/src-env.conf:
WITH_META_MODE=yes

/etc/src.conf:
KERNCONF=CANARY
PORTS_MODULES+=graphics/drm-61-kmod
.MAKE.META.IGNORE_PATHS += /usr/local/etc/libmap.d
IWN_DEBUG=1
IEEE80211_DEBUG=1
BATCH_DELETE_OLD_FILES=1
WITHOUT_REPRODUCIBLE_BUILD=yes
WITHOUT_LLVM_TARGET_ALL=yes

[Some of the above may well be a bit dated; I am not always good about
cleaning up after an experiment.]

Peace,
david
-- 
David H. Wolfskill                              david@catwhisker.org
It has been said that history repeats itself. This is perhaps not quite
correct; it merely rhymes. -- Theodor Reik

See https://www.catwhisker.org/~david/publickey.gpg for my public key.