Categories
Uncategorized

Bleg for a new machine

I last upgraded my desktop machine in June 2011.  This improved Firefox clobber build times from ~25 minutes to ~12 minutes, which was a huge productivity win.  Since then, build times have crept back up to, yep, ~25 minutes.  Time for a new machine.

I’m no hardware guru, so I’m asking for help.  I’m a Linux desktop user, and my main goal is to make compilation of Firefox fast.  I frequently build both Firefox and the JS shell, and it’s not unusual for me to have two (and occasionally three) builds running concurrently.  I’d also like for the machine to be quiet, as it will sit on top of my desk, not far from where I sit.

I have a quote for a machine from a company called CPL, who I’ve bought from before.  (Note that all prices on their website are in AUD.)  I gave them partial guidance on components (based on some very helpful advice from Naveed Ihsanullah), and here’s what they came up with.

  • CPU.  The Intel i7-4770K.  It is a 3.5 GHz CPU with 4 physical cores, 8 virtual cores, and an 8 MiB cache.  This is the fastest of the new Haswell CPUs that CPL has and so seems like a good choice.
  • Motherboard.  ASUS Z87-C.  Naveed said ASUS is a good brand.
  • Memory. 32 GiB of Kingston 2133 MHz RAM.  I currently have 16GiB, and while I don’t feel like that limits me at the moment, I might as well give myself some breathing room.
  • Disk. Samsung 840 Pro Series 512 GB.  Naveed recommended this specific model.  I currently have a magnetic disk, so I’m hoping to see some big performance improvements here (both while compiling and when doing things like grepping through the whole tree).  It’s interesting that this is easily the most expensive component;  SSDs still ain’t cheap.
  • Graphics card.  I currently do very little graphics-intensive stuff, other than look at the occasional WebGL demo.  Apparently the i7-4770K has a reasonably fast integrated graphics card, so I’m on the fence about whether I should get a separate graphics card.  If so, I guess it would be good to know if the driver situation on Linux is a happy one.
  • Case.  The Zalman MS800 Plus ATX Mid Tower.  This was entirely CPL’s suggestion, and I don’t much like the look of it.  It’s tall — about 10cm taller than my current case — and it also has an air-vent on top, whereas my current case doesn’t and so I’m able to put a printer on top of it.  On the plus side, it is pretty plain looking — no glowing lights or racing stripes — which I appreciate.
  • Optical drive.  A bog-standard Samsung DVD-RW drive.  I think I have the exact same one in my current machine, and it works fine.  I pretty much only use it to install OSes.
  • Software.  I use Ubuntu, and I want to install Windows 7 in a VM for the occasional times when I have some Windows-specific behaviour that I need to investigate.  (My current machine dual boots between Linux and Windows, and having to reboot is an enormous hassle.)  CPL has Windows 7 Home Premium 64-bit — I’m pretty sure I don’t want to deal with Windows 8 — but they don’t sell VMWare so I’ll need to get that somewhere else.

Overall, I feel pretty good about everything except the graphics card and the case.  Please let me know if you have any suggestions!  Thanks.

50 replies on “Bleg for a new machine”

Cool! My wife will love it if I get that one, just the look of it. Where’s the on/off switch?

I showed her a picture. Her eyes widened and she said “that’s gorgeous” 🙂

It’s on the top edge along with the reset button, USB ports, and audio jacks that are traditionally on the front.

My understanding is that the Intel Haswell graphics is reasonably well supported and should work out of the box with Ubuntu 13.04, but you might need to use Ubuntu 13.10 or a PPA to get best performance. Hopefully someone with actual experience of the graphics/processors can comment though.

I haven’t used the new Haswell-based chips, but I currently have an Ivy Bridge machine with the previous generation of Intel GPU (HD4000) and I can say that it’s more than adequate for any desktop stuff I’ve thrown at it, and does tolerably well with older games from the Humble Indie Bundle and via Wine.

On top of that, Intel’s GPU drivers are the only official Linux GPU drivers that are open-source, and they integrate properly with the standard X11 extensions for things like resolution-switching and multi-monitor support (XRandR) instead of requiring special vendor-specific config tools.

If you want a GPU that Just Works under Linux, and you’re not fussed about top-of-the-line 3D performance or general-purpose-GPU computing, it’s hard to go wrong with Intel.

Your machine looks good except for the memory configuration.
Building a new developer box without ECC is insane.
So I would recommend the Asus P9D WS motherboard,
a fast (Haswell) Xeon chip and 32GB of ECC memory, of course.

Because debugging build failures due to faulty memory
is no fun…
With ECC you can be 100% sure that build failures
are software related when there are no ECC issues
reported in your log.

I think this issue is largely theoretical, simply because in all my years of software development I have *never* had any problems that I could attribute to memory errors. And if your (non-ECC) memory is seriously faulty, you’ll notice soon enough anyway.

The other thing to consider is price: ECC memory costs more, and you’ll have to buy an ECC compatible motherboard.

Also, why a Xeon chip? The E3-1270v3 looks to be a Xeon Haswell chip with basic specs very similar to the i7-4770K — 3.5 GHz, 4 cores, 8 threads, 8 MB cache…

That *was* an interesting read. I live close to sea level, and I turn my machine off most nights, so that’s good 🙂

The reddit discussion has some criticism of that ECC article. tl;dr: the probability of bit flips is negligible for most machines, and high for bad hardware. Extrapolating to a single machine doesn’t work well.

This will be the first VM I’ve ever set up. I just assumed VMWare, because that’s the one I’ve heard most about, but I’m open to other suggestions…

Intel graphics is absolutely sufficient for “occasional WebGL” stuff.
And its the best choice if you care about open source drivers.

I’d recommend the Antec Performance One P183 V3 for a case. (Their site’s region cookie selector breaks deep links so you may have to select your region, hit Back a couple of times, and click again.)

It’s the near-identical successor to the P182 that I’ve been perfectly happy with for almost a decade and it retains four big advantages that caused the P182 to win editors choice from various magazines back when I bought mine:

1. It’s designed to minimize noise (drive mounting screws are isolated from the case via silicone grommets, side panels are made from a noise-absorbing metal-plastic sandwich, it’s got a double-hinged door at the front to baffle noise from the intake vents and drives, it comes with three of the second-quietest model of 120mm fan on the market, etc.)
2. It’s designed to keep things cool efficiently (no fan smaller than 120mm, specialized internal layout to improve airflow)
3. It’s easy to work with (The six hard drive bays are mounted in slide-out carriages. External drive bays use well-designed latching rails, there’s a storage box mounted to the smaller of the two hard drive carriages for keeping your mounting screws right with the case, and two of the 3.5″ hard drive mounts can also take 2.5″ drives without extra hardware)
4. While the front vents they added make it less elegant than the P182, it’s still a very sleek-looking case.

It does have a top vent, but given how things are laid out, you should just be able to turn up the rear fan right next to it and relocate it to one of the front fan mounts without a problem it if you want to cover it.

HyperThreading (intel’s virtual cores) is mostly useless for gcc compiles (+10% throughput at most, not the +100% you’d expect). If you’re not planning to overclock, don’t pick a K processor, pick the matching non-K processor which has better virtualisation support (IOMMU support in particular). Intel segments its offerings so that, outside of Xeon, you can’t have both overclocking and advanced virtualisation.

Oh, and you can use bcache with a smaller, cheaper SSD (64gb is plenty). Just get a recent kernel (3.10+ from here) and you’ll be set.

Thanks for the suggestions!

I don’t plan to overclock — I’m not a hardware tinkerer type. And even if HyperThreading only gets me 10%, that’s better than 0%. And 3.5 GHz is slightly better than 3.4 GHz, and faster virtualization isn’t important because I’ll only use the VM very occasionally. So the i7-4770K still sounds the best.

Between 4770 and 4770K there are many little differences, the base freq is 3.4 vs 3.5 doesn’t matter much, also because the turbo boost goes to 3.9 in both cases, but only 4770 has VT-d,TXT,vPRO. They doesn’t matter in most cases but it also has TSX, which are new instruction for multithreading. Now I don’t think any software uses them but in the future they could be important. They’re supposed to provide a speedup in programs and it’s a way to future proof the CPU. I’m planning a new PC and I’ll buy a 4770 over 4770K because of TSX, I don’t overclock either.

Ah, good to know. Sounds like the 4770 is a better option then — 3% worse clock speed is worth it for the extra instructions. Thanks!

Here is an interesting read and slideshow about Intel Haswell architecture I think you should go through it:

http://www.anandtech.com/Gallery/Album/2291#14
+1 from side for rest of the stuff, I highly recommend that if you are not into overclocking getting a non-K chip still matters and to save some bucks you should go with non-K variant.

I would get a smaller SSD (256 “MB”) and use a second HDD for things that don’t have to be fast, like storing your music collection.

This is purely a work machine. I have things like music and photos on a different machine.

I would get a Motherboard with an Intel NIC. The Asus Z87-Plus is the cheapest of theirs with an Intel NIC, IIRC.

Second the recommendation of the Fractal Design Define R4. I have one and it is very quiet.

I would get a GPU. Asus DC-II HD7790 is silent and fairly fast. Good for MadVR too. You will have to deal with the Firefox AMD GPU corruption problems then though …

https://bugzilla.mozilla.org/show_bug.cgi?id=837489

For a PSU – The Seasonic G series are high efficiency and near silent for a good price.

The Noctua NH-U12S is a very quiet and efficient CPU cooling fan, when run in PWM mode. Pricey though.

Intensive network traffic takes a lot less CPU power.

Also, if you care about noise from working PC, you may think about replacing stock CPU cooler with something like Thermalright Truespirit 120. Next, if you not using optical drive intensively, external drive may be better idea, you can use it on different PCs and plug only when it’s needed. And advice about 4770 without K is good too.

What do you have currently? If it’s a quad core Sandy Bridge (it should be given the timeframe), don’t really expect more than a 20-25% improvement cycle-per-cycle.

If you want the fastest compile times, the biggest help by far would be to use real workstation processors, the ones with 6+ cores on a dual-socket motherboard (24+ software threads total). These are not cheap, however, and are an architectural generation behind.

The SSD is probably overkill – it’s a good model but 512GB is too much (too expensive) and write performance isn’t that important for compiling.

Current CPU is an i7-2600, so yes, a 4-core/8-thread Sandy Bridge.

The 4770K does not support VT-d (due to Intel’s crazy product differentiation strategy), which might be of use to you if you are doing virtualization.

A few things to note:
– If you plan to use your CPU’s hardware virtualization, make sure it isn’t disabled in the BIOS. For some reason, it came disabled by default on my high-end ASUS Sabertooth Z77 motherboard
– Windows 7 Home Premium is artificially limited to support only up to 16 GiB of RAM. For the full 32 GiB you’ll need Professional or Ultimate (the latter being a waste of money)
– In terms of SSDs, see if Samsung 840 EVO SSDs are available yet and how they compare in terms of price (in terms of performance they seem to do well compared to 840 Pro, unlike the earlier 840 series)

I have an older i7 out of the “SandyBridge” generation (but quad-core + hyperthreading as well) and it’s absolutely a charm using its graphics support under Linux. WebGL and so on work nicely, BananaBread gives decent performance, it works well out of the box with “just” the open-source in-kernel drivers (which are done by Intel, in the open). Go for the Intel graphics option, you won’t regret it.

For SSD, I have a 256GB out of the previous Samsung generation, and the perf jump it gave to launching the system and compiling Mozilla builds is awesome. SSD, next to a lot of RAM, is surely the way to go to improve compiling speed.

I suggest getting as much RAM as reasonable. I increase my depend build speeds a lot by putting my objdir in a RAM disk, and syncing that to a real disk later if it’s going to be useful later.

I just bought a very similar machine for working on WebKit.

I got the 4770 without the K, because I don’t do overclocking, and, from Wikipedia:

Parts below 45xx as well as R and K parts do not support TSX, Trusted Execution Technology, or vPro. Additionally, none of the K parts support VT-d.

If you’re doing virtualization, you may find that vPro and VT-d are more valuable than the extra 0.1 Ghz.

I don’t have a separate GPU, and it’s been really nice having access to high-quality open source graphics drivers. Unless you plan to heavily use OpenCL or play games, I’d say this build is better without a separate graphics card.

I really like this NZXT case because it’s simple (a black box) and cheap ($40). It’s kind of annoying that the front USB ports are only USB 2.0 though.

One thing that nobody has yet suggested but you might want to consider is getting a dual-socket machine, particularly if you’re often building two trees. It would cost a lot more, but the cost is small compared to the value of your time.

(In other news, the difficulty of the reCAPTCHA which guards comments is starting to progress beyond my abilities as a human.)

500GB SSD seems unreasonably much – what should be the reason behind that? 256GB Samsung SSD should be sufficient and cheaper.

Also I’m not a dev myself – you should research on what affects compiling performance the most. I know that for example for 3d rendering some people like multiple xeon processors in their workstation and there are slot cards with several processors (for example the new Intel Xeon Phi – http://en.wikipedia.org/wiki/Intel_MIC) on them to speed up render time immensly – maybe compilers can also work with that? But they cost like 1k$+.

The Samsung 840 Evo is not recommended because it is a brand new drive and has not had time to prove itself in the market. While Samsung is a reliable brand, the 840 Evo has a new multi-tier cache hierarchy which is very complex to manage so we can’t just assume that it will be problem-free, or that any problems that do exist will be discovered quickly. The 840 Pro is an excellent choice, just very expensive. The 840 non-Pro is worth considering and performs similarly to the 840 Pro for reads, but is about half as fast for writes.

While this doesn’t seem to apply to you, ***no one should consider a 120GB Samsung 840 non-Pro or Evo*** Their expected lifespans are very short, as little as 3.5 years in desktop workloads.. It will probably be fine, but these are the only drives that it’s even possible to wear out in normal usage.

If you find that a 240GB drive would be enough you might want to consider a drive such as the Intel SSD 530/330/335 (in order of decreasing endurance and price) that is based on the Sandforce controller. Performance on Samsung drives drops off under very heavy load or when the drive is more than 80% full, Sandforce-based drives have more consistent performance under those conditions. Most of the time the 840 Pro is the faster drive though.

I’d be interested to hear how much your build time improves. I’ve been considering whether I should get a powerful desktop machine at the office, and I’m never sure the productivity boost of not having to wait for builds would outweigh the convenience of being able to easily take my work home.

While the build system today doesn’t scale too well above 5 or 6 physical cores for many parts of the build, that won’t always be the case. I encourage you to “splurge” for a Xeon setup with at least 8 physical cores. Watch out for clock speed though – many of the Xeons run at lower clock (but offer more cores). I’d maximize total GHz over number cores.

I especially recommend this setup to remote employees not near an office, as any future compilation or caching service would likely be bandwidth/latency prohibitive.

Comments are closed.