An EPYC NixOS Build Farm
grahamc.com
grahamc.com
I'm saying this as someone who really wants AMD to succeed and push the ecosystem forward. I just want to make sure that I'm reading the results correctly here.
They are effectively getting 35% extra performance 60% of the price that's just beyond impressive.
Edit: actually, this is a dual Xeon machine so its TDP is slightly higher than EPYC's.
Comparing TDPs between manufacturers is invalid.
Why? It's all Watts
That's not enough to explain. I highly doubt replacing the 12-core Broadwell Xeon CPUs with a current-generation 12-core Xeon (which would be Skylake) would catch up with the 30-40% performance lead that EPYC displays in their workload.
The Zen microarchitecture of the EPYC is quite impressive and it could just very well be a workload that Zen is particularly good at.
For example the fact EPYC can pack so many cores on a single socket means all the RAM and all its 64MB of last-level cache are "local" to every core (at worst accesses go through the Infinity Fabric.) By comparison, in Intel's case when one of the Xeon cores need to access RAM or cache on the other socket, accesses have to go through the QPI link between the 2 sockets, and it has higher latencies and worse throughput than AMD EPYC's Infinity Fabric.
Lets just ignore the price point for now because the memory capacity are different.
But the performance, 24 Core AMD EPYC Zen is ~35% faster than 24 Core Intel Broadwell Xeon under the same frequency? Broadwell isn't even that old because Intel has only launched Skylake Xeon E5 not long ago. And the different between Skylake and Broadwell IPC aren't that much either. the max turbo speed are similar, and the Intel platform had the advantage of two CPU using two heatsink, higher TDP, higher heat dissipation more time for turbo.
And most testing has shown Zen to be about Sandybridge IPC performance. Something seems wrong here ( Or may be too good to be true )
That's just a hunch though.
$machine->waitForWindow("^Desktop ");
It looks incredibly useful.Thanks!
https://github.com/NixOS/nixpkgs/blob/49a6964a4250d98644da61...
Digging a little bit, nixos' tests appear to be written in perl and are executed in a context that has access to a bunch of useful primitives for asserting these sorts of things. https://nixos.org/nixos/manual/#sec-writing-nixos-tests
I'll be writing more soon about how these tests work and how neat they are. They really help NixOS quickly release really high quality updates!
In this case, the test makes use of both xdotool and Nix's own testing library.
Tests are written in a mix of Nix and Perl automation scripts like this; the Perl scripts control QEMU, but the Nix code describes what is put into the disk images. It's fairly bespoke and tuned to our own needs. The source code for the Perl driver is here: https://github.com/NixOS/nixpkgs/blob/f148c5c4a1ffa353836bfd...
It can even do multi-machine test setups as another comment pointed out, and it's pretty fun for writing functional demonstrations; for example I've been meaning to use these tools to write examples of doing PostgreSQL replication and failover, etc.
PLEASE consider releasing some form of this tool, or at least documenting the snot out of it... it looks incredible. We'd really use this at work.
- http://open.qa/ - TestKitchen
But I must recommend, indeed, taking a good hard took at NixOS! :)
So these two servers are pretty similar, I originally thought they were comparing a Amazon m1.xlarge vs EPYC...
That said, that's just the first thing that popped into my head to explain the result. Either way, the results here are extremely encouraging!
In NUMA-speak, each group is (probably) a node with neighbouring nodes having a lower distance.
Or perhaps it has absolutely nothing to do with memory speeds, but I can't think of what else would have such a dramatic effect. I'd love to see the same test with a single Xeon.
This seems like a meaningless measurement.