On Wed, 18 Mar 2020 at 13:01, Mikko Rapeli <mikko.rapeli@...> wrote:
On Wed, Mar 18, 2020 at 05:52:37AM -0700, Oliver Westermann wrote:
Hey,
We're currently using a VM on Windows and it's a lot slower than the native linux build (which is expected).
We're looking into getting a dedicated build server for our team (basically a self-build tower PC). Any suggestions what to put in that build to get the most out of it?
Currently we're looking at a big Ryzen, 64G of RAM and one or multiple SSDs on a "consumer grade" board like the X570.
Drop all virtualization and go for Linux on bare metal. Then make sure there
is enough(tm) physical RAM for each CPU thread. For a "big Ryzen" the 64G of RAM sounds
too little. I'd go higher there, but it all depends what kind of project
is being compiled.
I would also setup CPU, RAM, disk IO and network IO monitoring on the build machines
and review and monitor the build times and results when the project evolves. There are
times when most CPUs will be idling and there will be times when IO to disk is
happening even when RAM is available. Linux kernel can be tuned to avoid disk IO if
RAM is still available for example.
What Mikko said is excellent advice.
I'd recommend NVMe drives if you can. My build machine has two large
M.2 NVMe drives, one is used for the working directory and the other
for sstate, downloads and source checkouts to make the best use of the
available bandwidth. I find that XFS is a better fit than ext4 when
you've got fast drives and highly parallel I/O workloads.
Make sure you spread your RAM across the different memory channels on
your motherboard as this increases memory bandwidth - this usually
means either filling your RAM slots or half-filling them with RAM in
every 2nd slot but you'll need to check the motherboard manual to
confirm the channel layout.
Let me know if you need a detailed review of your proposed setup.
Thanks,
Paul