What sort of server it takes to build Firefox in four and a bit minutes
Our new compute server builds Firefox Nightly from source in 4 minutes 22 seconds, as well it should given how beefy it is. The build process does manage to get the machine to 100% usage of all CPUs, which is impressive (and nice) since there are 112 of them.
Then in response to a question about the link phase's duration and parallelism:
The usage of all CPUs lasts about two minutes, with a ramp up at the start and down at the end, then some wiggly usage of a lot fewer CPUs, with a couple of periods where only three are being used (and up to 10-13 in use). I can't see a clear link phase in the build report.
(This is for a full from scratch build.)
This is a (very) big server but in some respects not an unusual one; subject to component availability (and money), anyone could get their own version relatively trivially. It has two AMD Epyc 7453 28-core processors (hence the odd number of CPUs), 512 GB of RAM, and two NVMe drives in a software RAID mirror.
(Or instead of buying one, you could probably rent time on an equivalent server from a cloud provider on a minute by minute basis.)
As officially reported in Ubuntu 18.04, the server has only two NUMA zones:
node distances: node 0 1 0: 10 32 1: 32 10
I'm not sure this is completely accurate for Zen 3 Epycs in practice, but it's the official view.
One interesting effect of the NVMe drives (and perhaps other things) is that a build with a cold disk cache for the Firefox Nightly source tree is only a few seconds slower than a build with a warm cache. However, the NVMe drives do slow down enough under load that despite Linux software RAID preferring to read from the first disk, it sometimes reads from the second drive, although nowhere as much. This has the interesting effect that the second NVMe drive reports a lower average IO time than the first one.
(All of this is captured with a certain degree of granularity through our Prometheus based metrics system.)
There was a day when a system like this would have been essentially impossible for us to have; something this big and powerful would have been far too expensive for us to afford (and also physically very large and probably required special power). I rather enjoy how the world has changed to bring more and more computational power into our hands.