Last week I blegged for help in designing a new machine, and I got almost 50 extremely helpful comments and a handful of private emails. Many thanks to all those who gave advice.
I mentioned that I want browser and JS shell builds to be fast, and that I want the machine to be quiet. There were two other things that I didn’t mention, that affect my choices.
- I’m not a hardware tinkerer type. I don’t particularly enjoy setting up machines — I’m a programmer, not a sysadmin :) I like vanilla configurations, so that problems are unlikely, and so that when they do occur there’s a good chance someone else has already had the same problem and found a solution. So that’s a significant factor in my design.
- I turn off my machine at night. And I use lots of repository clones (I have 10 copies of inbound present at all times), typically switching between two or three of them in one session. So I stress the disk cache in ways that other people might not.
Here’s my latest configuration. I don’t expect anything other than perhaps minor changes to this, though I’d still love to hear your thoughts.
- CPU. The Intel i7-4770. I originally chose the i7-4770K, which is 0.1 GHz faster and is overclockable, but it lacks some of the newer CPU features such as support for virtualization and transactional memory. Since I won’t overclock — as I said, I’m not the tinkerer type — several people suggested the i7-4770 would be better.
- Motherboard. ASUS Z87-Plus. I originally chose the ASUS Z87-C, but was advised that a board with an Intel NIC would be better.
- Memory. 32 GiB of Kingston 2133 MHz RAM. No change.
- Disk. Samsung 840 Pro Series 512 GB. No change. Multiple people said this was overkill — that 256 GB should be enough, or that the cheaper 840 EVO was almost as good. But I’ll stick with it; those disks have a really good reputation, it should last a long time, and I really like the idea of not having to worry about disk space, especially with two OSes installed. And apparently the performance of those drives diminishes once they get about 80% full, so having some excess capacity sounds good.
- Graphics card. Multiple people agreed that the Intel integrated graphics was powerful enough, and that the Intel driver situation on Linux is excellent, which is great — I don’t like mucking about with drivers!
- Case. The Fractal Design Define R4 (Black) was recommended by two people. It looks fantastic (my wife is in love with it already) and is reputedly very quiet.
- Optical drive. A Samsung DVD-RW drive. Unchanged.
- Software. Several people suggested using Virtual Box instead of VMWare for my Windows VM. I didn’t know about Virtual Box, so that was a good tip. Someone also suggested I get Windows 7 Professional instead of Home Premium because the latter only supports 16 GiB of RAM. Ugh, typical Microsoft segmented software offerings.
- I didn’t mention monitor, keyboard and mouse because I’m happy with my current ones.
This looks like an excellent set-up for a single-CPU, quad-core machine. However, multiple people suggested that I go for more cores, either by choosing 6-core or 8-core server CPUs, or using dual-sockets, or both. I spent a lot of time investigating this option, and I considered several configurations, including a dual-socket machine with two Xeon E5-2630 CPUs (giving 12 cores and 24 threads) or a single-socket machine with an i7-3970X (giving 6 cores and 12 threads) or a Xeon E5-2660 (giving 8 cores and 16 threads). But I have a mélange of concerns: (a) a more complex configuration (esp. dual-socket), (b) lack of integrated graphics, (c) higher power consumption, heat and noise, and (d) probably worse single-threaded performance. These were enough that I have put it into the too-hard basket for now.
Ideally, I’d love to build two or three machines, benchmark them, and give all but one back. Or, it would be nice Intel’s rumoured Haswell-E 8-core consumer machines were available now.
Still, daydreams aside, compared to my current machine, the above machine should give a nice speed bump (maybe 15–20% for CPU-bound operations, and who-knows-how-much for disk-bound operations), should be quieter, and will allow me to do Windows builds much more easily.
Thanks again to everyone who gave such good advice! I promise that once I purchase and set up the new machine, I’ll blog about its performance compared to the old machine, so that any other Mozilla developers who want to get a new machine have some data points.