Build computer

Hi all,

I'm thinking of buying a server to build firmwares faster. Do you have any recommendations?

What is desirable for faster builds? More CPUs, memory or IO? Or is it all?

Also I'm thinking of using VMs to build OpenWRT. I've had a bad experience with upgrading Linux and the system going down due to driver compatibility issues in the new distro. Is there anything wrong with using a VM for building OpenWRT?

Thanks in advance
Don

Just FYI: VMs will be considerably slower than building on raw metal. They always have been due to VM overhead and multi-core limitations but are now even more so with the recent spectre/meltdown patches. If performance is what you need, VMs probably aren't the way to get it.

For building software, parallelization (high build concurrency) will improve your build times significantly, this really profits from decent amounts of RAM, many cores and fast I/O. Other than the graphics department, there isn't a lot you can save on the hardware without sacrificing performance; you can obviously manage your expectations against your budget.

Using full system virtualization for building software, in general and OpenWrt in particular, means that you will sacrifice a very significant amount of performance for the virtualization overhead (even worse since meltdown and spectre) relative to building with linux installed on the bare iron. If you are already running linux on your host, building inside of chroots or maybe lxc might be more gentle on the hardware ressources than full system virtualization. Most OpenWrt buildbots are running Debian, which will provide you the best compatibility here - and Debian also tends to (dist-)upgrade pretty reliably.

2 Likes

I use a Laptop ACER V3-771G / 8GB / Intel Core i7 - 3610QM
1 - SSD 250GB for Debian ( dual boot )
2 - SSD 512 GB for W10

Thanks for the tips!

You should also be aware of this before buying a CPU:

I do not think your previous experience with Linux was something that happens often. I have been using it for decades (literally), and never faced that kind of throuble.

If you are going to dedicate a machine as a building server, I would definitely go Linux.

I do it like this: VirtualBox VM with a stable, popular linux distro, and store all code in a git repo. I allocate half of my host resources to it so I can build faster. I can copy the VM as needed (only 100GB) and just git pull the code. Added bonus is all of my custom "devops" scripts are available and work. I can keep my host OS updated without worrying about my dev environment getting fubar'd by some update.

Let's break this down:

The toolchain isn't great when it comes to parallelization, the "base" software is pretty well tuned but the package tree isn't so in most cases ~4 core and high clock speed will most likely build faster in the end than let's say 6 cores and low clock speed (ie a tradeoff as with everything else). At least when it comes to OpenWrt...

Memory usage: 2-3G will be more than enough even if packages are using LTO

Storage: Your average SSD will do fine, you might find HDDs a bit limiting during tarball extraction but otherwise it's probably not going to be much of an issue as you have the OS file system cache that will compensate. Using ccache will help even more in that regard.

VMs will do fine (several users are using this method including myself), keep in mind that depending on hypervisor performance may vary quite a bit. I personally run FreeBSD and Debian in a VM using bhyve which works great and doesn't seem to have much of a performance it. I do find it much more reliable and predictable than Linux distros even if Debian isn't that bad however that is my personal experience and preference.