Let’s Compile a Custom Kernel for OpenBSD … and let’s check if we can tune the Process it with multiple Processors.
get Sources and prepare Custom Kernel
cd /usr/src ftp https://cdn.openbsd.org/pub/OpenBSD/$(uname -r)/sys.tar.gz tar xfz sys.tar.gz rm xfz sys.tar.gz cd /sys/arch/$(uname -m)/conf cp GENERIC.MP CUSTOM.MP config CUSTOM.MP cd ../compile/CUSTOM.MP
-> with config CUSTOM.MP, you can enable disable Components which will be built into your Custom Kernel. Wlan Drives for a VirtualServer, as example, does not make sense.
start the build process without arguments. One Kernel is used …
make clean time make
… as we can see in the “htop”. 1 CPU in used, the Load of the Systems is also 1.
Time to Go: 38min … (38m00.28s real 29m30.71s user 8m44.51s system)
Let’s try with 4 Cores
Most (Virtual) Machines got multiple CPU’s, respectively Cores. Let’s try to Speedup the Build Process with enabling Multiple Cores. The “-j” Flag is sused to tell to the Compile how many Core it should use.
make clean time make -j 4 make install uname -a
Time to Go: 9.30min (9m35.44s real 27m52.17s user 9m03.97s system)
and finally with 16 Cores
Compile the Kernel with all possible Cores. In our Example, we have 16 Cores and we wanne use them!
make clean time make -j $(sysctl hw.ncpufound |cut -d= -f 2) make install uname -a
Time to Go: 4:30 (4m26.83s real 39m18.96s user 18m59.31s system)
Install and Reboot
and finally, install the Kernel, reboot and check the loaded Kernel after reboot
make install uname -a # -> OpenBSD pbuilder-demo 7.1 GENERIC.MP#3 amd64 reboot uname -a # -> OpenBSD pbuilder-demo 7.1 CUSTOM.MP#1 amd64
Compare with Vultr PowerBox
- 8 vCPU / AMD EPYC-Rome Processor
- 16 GB RAM
- 350 GB Disk
- -> 96 USD/Month
- 1 CPU: 14m09.98s
- 8 CPU: 4m03.12s
Happy Compiling !