This article provides a footnote for the actual state of using OpenBSD as a build machine with a high number of CPU cores.

To perform a test case, the net/tdesktop-6.1.3 port was built, selected because it possesses sufficient complexity to load the system for several minutes, as opposed to the hours required by www/chromium.

Tests were performed on an AMD EPYC 7502P 32-Core Processor (2500 MHz) with 128 GB of RAM and a single SSD, which reads as Micron 5200 MTFD, on the kernel version:

kern.version=OpenBSD 7.8-beta (GENERIC.MP) #31: Wed Sep 10 21:40:01 MDT 2025
    deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP

Each test execution involved the commands: make clean; make configure; time make build MAKE_JOBS=X, where X denotes the number of parallel jobs, allowing clean build time measurement as follows:

jobsreal timeuser timesystem time
1276m53.83s256m32.71s18m49.09s
2142m47.23s263m09.67s20m11.75s
474m01.92s266m53.64s23m00.65s
838m31.42s271m14.37s25m44.12s
1226m54.55s273m36.58s28m27.56s
1621m09.12s274m23.38s31m49.76s
2415m50.98s276m05.34s40m20.67s
3214m15.87s297m29.70s54m54.61s
4814m14.88s372m59.95s90m57.23s
6414m11.65s410m18.70s168m53.98s

Utilizing more than 32 jobs yields no practical benefit, as the real time improvement becomes negligible while system time increases dramatically.

Subsequently, the same tests were performed on an AMD Ryzen 9 7950X3D 16-Core Processor (4200 MHz) with 192 GB of RAM and two NVMe in RAID 1 (mirror), which reads as NVMe KIOXIA KCD8XRUG1 0105, on the same kernel. This machine is approximately twice as fast, measured as follows:

jobsreal timeuser timesystem time
1135m58.01s127m25.92s7m47.18s
269m39.49s130m02.55s8m19.45s
436m28.50s134m09.79s8m59.83s
819m20.34s138m38.84s11m00.53s
1213m56.10s144m28.11s12m53.58s
1612m08.71s160m20.16s14m48.17s
2410m45.70s202m18.02s19m19.03s
329m45.18s235m19.81s24m12.17s

For a small number of concurrent jobs, the speed enhancement is approximately twofold. However, as the number of jobs approaches the core count limit, the enhancement diminishes to approximately one-third, demonstrating diminishing returns from increased parallelization.

Furthermore, complete builds of all ports from OpenBSD 7.8 were executed with /usr/ports/pobj placed on different file systems:

FSreal time
mfs 11 day 22:43:01
ffs1 day 23:08:31
tmpfs21 day 19:31:09

  1. Mounting was performed with the async option. ↩︎

  2. It is regrettable that tmpfs is disabled by default. ↩︎