Ryzen is for Programmers
timothypratley.blogspot.com
timothypratley.blogspot.com
I was surprised by two big things: high-performance devices are extremely affordable nowadays and processors have gotten a lot better despite minimal changes in clock speed.
I went on PC Part Picker and built my 'budget' device and my 'fantasy' device. It turned out they were just about the same. I couldn't really spend more than $1500 for anything better without jumping to server-grade parts.
Yesterday I played Halo Wars 2, listened to Spotify, kept Word, Excel, Edge, Chrome, & WEKA open, and was running an embarrassingly inefficient data mining program in Python via WSL, while running a Jenkins build server in an Ubuntu Server VM, and running TeamCity in a Windows Server VM.
Even on the Intel chip, which is presumably less good at multitasking than Ryzen, I just can't throw enough at it to experience anything resembling slowdown. 8 logical cores still seems to be plenty for most users, but I could see with even more VMs that one might need more. As an aside, it is incredibly nice to be able to run VMs without even thinking about their resource consumption - it's like having my own little cloud.
I wonder if maybe Intel's marketing for their chips could use improvement. On paper, my MacBook Pro with 16Gb RAM and 3GHz i7 shouldn't be that much worse than my desktop with 32Gb RAM (most of which is unused) and 3.6GHz i7. The difference in practice is night and day. I'm losing faith in the concept of a laptop as a developer's primary device (especially with SSH & Remote Desktop being so good these days).
I was blown away by how even a modest desktop [1] is so much faster than even a high end laptop [2]. I believe it's because any laptop will end up throttling because of thermals, unless you get one of those very heavy gaming or workstation laptops with huge cooling systems.
Oh and I had to throw away my laptop because the motherboard failed, all I could salvage was the SSD. Not going to happen with a desktop.
[1] (I have a non-overclockable i5-6500, 16GB DDR4, SSD with SATA3 interface, a GTX 1060 with 6GB VRAM)
[2] My laptop was an i7 quad-core, 16GB DDR4, SSD SATA3, GT840 GPU. Everything except the GPU was better than or equal to my desktop.
Apple REALLY needs to come out with a mini-tower Mac supporting desktop graphics cards. And no, I don't mean the new Mac Pro.
If you have battery power left, it might run faster and drain the battery until it's low and then throttle down. Or just shut down like an older Samsung I saw once.
Discovered this recently while working on a GPU-powered ray tracer, plugging my laptop in more than doubled the performance.
The prohibitive nature of battery powered devices has pushed Intel's processors to efficient low-powered solutions, but that's a big reason you'll see desktops simply overpowering laptops at the same price range.
Not to say you can never get strong processing in laptops though, they do offer the high-end HQ line which are high TDP mobile processors. Just that the default for Intel mobile processors is "gimped" by design to allow for efficient low-power processing.
Sometimes Ultrabook-style laptops will have a higher boost, but they're often thermally limited anyway so running more power just makes them throttle harder.
I have a 4core/8thread i7 laptop (4630QM) and I cannot get it to throttle after stress testing it for multiple minutes.
The GPU throttles if my thermal paste is getting old and the laptop sits flat on a desk and a game stresses it to 100% all the time. But the CPU I just cannot get to throttle, even with the above conditions being true, unless I remove the paste.
And this is a 13-inch, single fan laptop.
Consider repasting actually, there is no reason your CPU should be throttling.
Hell, especially the (r)macbook pro 15 that I got from my company which had the same 4770HQ - Apple for some reason believes that customers should have their legs burnt and CPU throttled before the fan even spins up.
Must have it confused with my last laptop's 4/8 i7 product code (which was an i7-3630QM).
The i7-4770HQ is listed as a 2,4 to 3,4 Ghz chip, so there's no reason it should ever throttle in a 15 inch laptop unless the laptop manufacturer messed up real hard (since the same silicon running at a higher frequency, with the same TDP, is adequately cooled by a single tiny fan on a 13 inch laptop).
It's rather unfair to say that laptops generally can't have consumer desktop-level performance on the CPU side, based on a few experiences with specific OEMs.
Now, this changes entirely when 6 and 8 cores are affordable. Desktops make sense again.
I still drool over getting a sweet $2k+ ultraportable laptop though. I'll let my office buy those things for that work and stick to the cheaper personal life. Portable devices just can't seem to live with the chaos of life, and I'd rather break a $400-500 machine than a $2k machine.
[1] $350 DIY PC + a $250 second hand thinkpad
[2] $2200 laptop with the latest i7 and discerete GPU.
I mostly just tote it to the office and home, so it's quite nice.
It is much worse. Remember that the laptop i7 is a much lower power part.
The nice thing is, I can throw a new GTX and a PCIe SSD in and that'll have quite a bit of benefit. Custom PCs are awesome!
Think about that: a 4 back your PC started in 10 seconds and 2 years back it's starting in 5 seconds, that's 5 second difference that you feel.
Currently the PC's start at 2.5 seconds and the speed difference is much less, so it feels like the power is not progressing that fast.
I have recently "upgraded" my desktop with an SSD (but have an old CPU i7 4780k or something) and it loads in a few seconds. But I don't want to upgrade my CPU just yet as it will only make everything only 1 second faster, not worth 300 USD I think.
But if you do a lot of data processing, software builds, ... You can increase the speed much more, and then it should matter.
Thanks!
The single thread performance on the 6950X is pretty low, and in fact pretty much on par with that 4771. If you want higher single-thread performance you have to opt for fewer cores at a higher clock rate, something like the i7 7700K, which would definitely perform significantly better than the 4771. The 6950X really only makes sense if you have a workload that needs those 10 cores.
See https://www.cpubenchmark.net/singleThread.html for the comparison.
Broadwell is kind of an exception here since it clocks so poorly both in the small-chip and HEDT form. But for example, 4.7 GHz is a good OC for Small Haswell and the Haswell-E HEDT chips will usually go to at least 4.5 GHz.
(of course the major caveat here is power - a highly OC'd 8-10 core chip can easily pull 200-250 watts package TDP on a normal workload, 300+ watts as measured at the wall. For an AVX-heavy workload like Prime95, add another 100 watts package TDP.)
So overall the penalty for using HEDT chips is nowhere near as big as you are implying here. It's something on the order of 4% loss of single-thread performance to go from 4-core to 8-10 cores. It just doesn't come that way out of the box - largely because anyone who buys a 10-core gaming chip for $1700 knows exactly how to do all this.
The bigger problem is that the HEDT chips are 2 generations behind the smaller chips. Broadwell vs Broadwell-E, the numbers look fine, but Kabylake has some IPC improvements and clocks significantly higher than Broadwell does.
This is one of those things that actually can be blamed on "Intel being lazy because they have no real competition". They could certainly push the HEDT chips out a little faster instead of waiting to work out all the bugs in the smaller chips, it would just be a bit riskier for them.
While most programs are not embarassingly parallel in nature, I suspect the latter plays a bigger role than most of us tend to admit.
Right now we are two steps removed. There aren't even many good data structure implementations out there. There is moodycamel::concurrent_queue and different memory allocators like jemalloc and the new rpmalloc, but the vast majority of programmers likely don't even realize that malloc locks and kills concurrency. Maybe they grab something from boost that just surrounds a data structure with a mutex, which is lazy bullshit.
I actually think the majority of software that runs slow can be made to be sped up nearly linearly using dozens of threads, but the few niche libraries that help are overly complicated to compile and use, bloated with enormous dependencies and end up being a minefield of usage. At the moment many people's idea of multi-threaded is mostly fork-join techniques like openMP and that will never scale to using all cores throughout the whole program, since is one very narrow technique.
If you think about the heart of the problem, it is really synchronization, and that only needs to happen in certain places in programs. Anything you can break up into pieces that can be transformed independently can be leveraged for concurrency, which also implies that independent stages in a pipeline can be concurrent as well.
Otherwise I think the rest of Erlang's performance is because it's optimized for reliability and distribution rather than raw performance.
One is promises (async/await). This takes the burden off the programmer for explicitly managing concurrency, and potentially allows lazy evaluation in many cases (if non-side-effecting). I've never worked in Lisps but it seems like a viable model in many ways.
The one I wanted to bring up was probabilistic programming. Imagine a tree where there's not just one place to put something, there's many, possibly distributed. As such you greatly reduce the chances of contention from multiple threads. They would also probably (almost necessarily) reduce the amount of rebalancing work.
GPUs seem like the perfect model here in multiple ways, not only do you have the massive degree of threading that surfaces any problems in such things but you also have the degree of threading to deterministically search these kind of structures. GPUs also highly discourage things like CAS or mutexing that we need to move away from.
(PS nice username)
GPUs are useful for the kinds of parallelism that has always been known to be easy - fork join with all threads writing to new memory. There is no mystery to how to do this.
> CAS or mutexing that we need to move away from
compare and swap is the backbone of lock free programming. Mutexes to me seem to rarely be ideal, but there is no getting away from compare and swap as far as I know.
Equating the single core speed of Intel's latest CPUs and moore's law is just another case of simple, easy and wrong.
> For a while they were able to use higher transistor counts to get more instructions per clock, but even that strategy is running out of steam
On a single core, not over a whole processor, as can be seen by the fact that there are 22 and even 72 core processors available now.
> The big news about Ryzen is that it was finally able to catch up to Intel in that regard.
This has nothing to do with Moore's law, it is a result of processor architecture.
> On a single core, not over a whole processor, as can be seen by the fact that there are 22 and even 72 core processors available now.
A worthwhile development, but not a panacea. I'd suggest you become familiar with Amdahl's law: https://en.wikipedia.org/wiki/Amdahl%27s_law. There's also some give-and-take between core count and individual core performance.
> This has nothing to do with Moore's law, it is a result of processor architecture.
But Moore's law is an enabler of more sophisticated processor architecture.
Once again, there are still transistor density improvements.
> A worthwhile development, but not a panacea. I'd suggest you become familiar with Amdahl's law
I'm not sure what you are trying to say here. Are you going back to saying computers aren't getting faster and then trying to say that moore's law is therefore dead when we've already established that it was never about speed?
Also what is your point about Amdahl's law? I work with lock free concurrency all day every day and if you are trying to say that more cores doesn't mean more speed because of Amdahl's law, that is pretty shaky ground to say the least. For some reason people seem to assume that if the software they use isn't using multiple threads effectively that it must be impossible. This is FAR from the case. Most programmers don't know how to work with concurrency and most software is trapped in legacy architectures that make parallel computations become painful changes.
> But Moore's law is an enabler of more sophisticated processor architecture.
Again, this tangential and not even really true. AMD's CPU architectures suffered while their GPUs performance and manufacturing process has remained competitive.
Then you have improved architectures, memory/cache access, inter-core communications... there are more ways to improve a chip.
I agree with your snetiment, for general workloads. I have a 4 year old Haswell and it's working like I imagine the i5s today would perform on a basket of workloads.
It's neither recent or pristine, but having a slim 4C/64GB thing at that price is worth considering.. no more rpi clusters :p
These are really old, Socket F, DDR2 blades. Given that the corresponding blade center will be needed as well, probably not that good a deal.
- The centers are large and heavy, needs a fair amount of space, can't really be handled alone. Also means they're shipped on a pallet, which is somewhat expensive.
- Blades are less common overall compared to servers
- Blades have more peculiar I/O than normal servers, you can't just stick an IB card or GPU in there
- The backend I/O modules are fairly rare 2nd hand, so either you find a center which has the modules you want or you're SOL
I'd start with a used Dell Precision T7xxx series off of Ebay for a <$300 including RAM and a Xeon or two
Thanks for the tip though, could be of use for a friend.
Just bought Intel Optane memory this morning, installed it in my AMD Ryzen DEV machine and it works perfectly without any issue. Interestingly, according to Intel, this is not suppose to happen - you are expected to use both of their latest processor/chipset to run Optane memory!
Now you tell can me who is preventing people from accessing the best techs at reasonable prices.
https://cpubenchmark.net/cpu.php?cpu=AMD+Ryzen+7+1800X&id=29...
...And I also just jumped on the Ryzen train. Finally a good time to be a consumer in CPU-land.
Great CPU - still running and more than fast enough for my recording needs (maximum 16 tracks per take - about 20 tracks per song)
How are you measuring Optane working? AFAIK it's supposed to improve boot times and application load times as it learns after a few times without configuration. Are you observing this improvement or does the Optane just show up as a regular storage drive?
"A system that is Intel® Optane™ memory ready includes: a 7th Gen Intel® Core™ processor, an Intel® 200 series chipset, M.2 type 2280-S1-B-M connector on a PCH Remapped PCIe* Controller and Lanes in a x2 or x4 configuration with B-M keys that meet NVMe* Spec 1.1 and System BIOS that supports the Intel® Rapid Storage Technology (Intel® RST) 15.5 driver."
http://www.intel.com/content/www/us/en/architecture-and-tech...
Did they mention things like
"it also makes for a very fast primary storage drive, if you can survive on a mere 32GB"
or
"you can use non-Intel caching software for Windows or Linux and then the only system requirement for Optane Memory is that you have PCIe lanes to connect it to"
It is $45 unit price is another interesting factor for me - I only need 16GBytes but I need 16GBytes each on many machines. I am not really aware of any other tier-1 brand nvme SSDs that are available in such size/price. ;)
I've yet to see one person use it as a boot drive. Plenty mounting it as a "not quiet RAM disk".
What kind of system configurations have you found to cause problems? I wouldn't be surprised to see the NVMe remapping feature of Intel's chipsets get in the way, but that can be disabled on virtually all systems that have the feature.
Best $49 toy ever bought.
From what I gathered in the link in order to perform recovery you need a non-volatile and accurate history of a server's execution state? Using a RAMdisk to store the state and asynchronously writing it to SSD would not be fault tolerant enough in general?
Replaced only this year because 8G memory is not enough anymore :(
If you have coin, Intel has wares.
Having the coin being the key factor here. I won't deny they're expensive. But "computer equipment gets cheaper over time" doesn't make quite as nice a story as THE MAN keeping you down, does it?
Memory gets less reliable with each process shrink. They keep raising the DRAM refresh rate with various tricks but we're always right on the edge of having memory with so many errors that it's unusable. The size of memory cells has decreased to the point that a stray subatomic particle could cause multiple bit errors.
Just wait for the next big solar storm. We don't know how often they strike the Earth but it seems to happen every 20 years or so. When it does we're going to have a massive flash of corrupt data from machines not using ECC. Probably worst than y2k issues
So when that happens, it will be important to have the option.
Until then, since I have no reason to run a "production database" on my workstation, why would I want ECC?
> we're always right on the edge of having memory with so many errors that it's unusable.
That's fine by me. Living here on "the edge", even with overclocked memory, my system is the most stable system I have ever owned.
I really can't see any reason to use ECC on my desktop apart from fear of hand-wavy potential issues.
Is my personal experience so unique? Are any of you actually experiencing instability that you are sure is caused by physical memory errors that are fixed by using ECC memory?
I recently built such a PC with roughly $950, it includes one used E5-2650c2, used S2600CP board, 750W power supply, 32GB DDR3 ECC memory(I'm buying CPU, motherboard, power supply and memory from one vendor so I didn't know if the memory is new), brand new GTX 1070 and a brand new 128GB SSD. The good part is the board has 2 CPU slots, 16 memory slots and 6 PCIE slots, so if I feel the need, I can easily by another E5-2650 CPU, or 12 8GB memory sticks to make the total memory 128GB(or more if I choose to upgrade current 4*8GB memory sticks as well), or add more graphics cards for machine learning purposes.
Of course this won't cover all use cases since server CPUs tend to have more cores than high frequencies(mine has 8 cores, and 16 threads after HT, but only at 2.00GHz), which might be bad for high end games, but for programming tasks as described by the article here, this might be a better choice
The argument that makes me pull back though is my fear that its power draw would be considerable.
How much power does your system draw? Idle, and/or under load?
Great budget server, motherboard + 2xCPUs + ram were just under $500 from NATEX, intel server case + PSU was $100 from ebay.
So energy cost would be about €240/year where I live, assuming permanent idling. Not exactly cheap, but you get what you pay for I guess :-)
Thanks a lot for the info, and congrats on the sweet rig :-)
Very interesting.
The article doesn't really get into any of that, though.
You would not run it in production on your desktop though no matter the core count.
What you don't get is warranty, redundancy so you have to handle it on your own, preferably multiple machines, power supplies and network connections. Or complete collocation if you can afford it.
Intel, unlike AMD, is hiking price for server market by disabling more important features like high RAM capacity support, ECC and remote management.
I'm running a dual Xeon as you mentioned, through buying ex-fleet parts at less than half price of new ones. Several issues I experienced:
- Lack of motherboard options. I had to purchase new motherboard at a high price since the ones that support dual Xeons are either in an incompatible form factor or simply out-of-stock. I settled with Asus Z9PE-D8 WS with an SSI-EEB form factor.
- Outdated BIOS. I had to order a new, pre-flashed, BIOS chip since the BIOS that came with the motherboard refused to boot with the CPU and memory combo.
- Hard to find suitable ECC RAM. The motherboard only supports limited RAM (speed + latency) configs, and finding those is becoming harder. Availability looks seasonal at times.
- Needs capable power supply. One thing that people often look past is the need of a proper PSU. I had to upgrade to one which support two CPU power connectors.
In the end, I went with one of the Phanteks Enthoo [1] cases. Decent quality without breaking the bank :)
Notes:
What is SIMD support like for Ryzen? Does it do avx2 or something similar?
It's true that server components are generally loud. If you have the room, I recommend my setup - which is to have a (home build) rack in the basement, and run long DisplayPort cables (and USB extension cables) to the desk. Or build a closet around a rack in an office, which can be soundproofed. This does push it to the next level in terms of work involved, obviously (and cost as well if you don't have tools or time to DIY most of it).
This downside is likely to become slightly more serious as time goes on and more software uses avx2; but it's certainly not crippling.
We recently built an 8 core machine for a project for "how far could we push some multi-threaded" workload. The "out of the box" workstation's with 8 cores, at least in NZ, were staggeringly expensive. We managed to knock about 1/3rd to 1/2 off the price by a build our own solution but that's not workable for general purpose machines.
Early indicators for certain types of workflow, Ryzen is a blazingly fast platform at a very attractive price point.
https://cpubenchmark.net/cpu.php?cpu=AMD+Ryzen+7+1800X&id=29...
http://www.cpubenchmark.net/cpu.php?cpu=AMD+Ryzen+5+1500X&id...
http://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-7700+%...
E.g. maybe it's hard / not worth it to process a file in parallel, but maybe the most frequent use case needs to process more than one file and files can be processed in parallel with much less work.
4 cores is enough for (almost) any kind of multi-core dillydallying, so any "old" 4 core cpu is fine. (sidenote: firefox has "dillydallying" in its dictionary:)
It's probably the ryzen hype that got this post so high. I like AMD as well, but really.
That being said, you're absolutely correct in that this is far closer to a PC build log than to being a justification for why Ryzen is better than its Intel competitors. I too was expecting some "crazy assembly insights". I also do think it "reads like a rewrite of the wiki over at /r/buildapc".
So why do you need a lot of cores for multitasking like that again?
I expected a new PC build with the latest 8 Core CPU and twice as much, better, RAM, to be at least quadruple the speed of a 4 years old MBP.
AMD has a very dedicated fanbase, but because they've been on the defensive for years they've built up a "siege mentality". Now that they're finally competitive again they're just going nuts.
Reviewers who put out Ryzen reviews that were perceived as less than ideal were getting death threats, and obviously the positive attention from people who were praising Ryzen as the second coming was just as intense.
I use it for bits and pieces for work and I haven't had any issues, I'm not pushing it much though.
I know, btw, that it's possible to run OSX in VMware.
The highest official DDR4 frequency is 2400MHz. Anything beyond that is technically overclocking.
Testing has shown that there is very little performance benefit above 2666MHz. [0]
The long and short is that manufacturers are happy to sell you 3200MHz RAM, but you're paying for speed you'll likely never use: your CPU memory controller needs to be stable at those overclocked speeds, and the performance gains are minimal.
However on Ryzen, RAM frequency directly determines the frequency of the bridge between the two 4-core complexes the CPU is made of! This matters a lot.
Okay, so looking at the spreadsheet of results from the Reddit thread [0]:
- Overclocking the RAM from 2133MHz to 3000MHz resulted on average an 8% increase in FPS. This is a 40% higher frequency netting on average 8% more performance
- They only tested two speeds: 2133MHz and 3000MHz
I would imagine that the difference between 2400MHz (officially the top speed of DDR4) and 3000MHz would be even less than the 8% they found.
Let's assume, based on no evidence whatsoever, that the performance gains are linear. For 40% increase in RAM clock, you get 8% performance gain.
So from:
- 2400MHz->3000MHz: 5% increase in performance
- 2666MHz->3000MHz: 2.5% increase in performance
You also have to account for the fact that:
- Higher speed RAM costs more
- Overclocking will consume more power and generate more heat
Based on the above, where the average benefit from a 40% RAM overclock was a mere 8% performance gain, I'm just not seeing how "enormous" the performance benefits are.
[0] https://docs.google.com/spreadsheets/d/1LKmt9FDEjFXeu3USK1bz...
Also, please watch the video as well. The practical effect of having faster ram on frametimes is immense and sometimes a lot bigger than what you'd expect. Moving from just barely reaching 60 FPS in the Crysis train sequence to comfortable 80, with an i3, is very nice. There is also the Ryse sequence (~ at minute 7) where performance of the i3 doubles, just because of the faster ram.
In fact, my motherboard is advertised at a 2133Mhz max, and so is my memory.
"Official" frequencies are a very poor metric. You might as well run your memory as fast as you can, so long as it's still stable. If you are concerned about stability, just run a few iterations of memtest86.
http://www.legitreviews.com/ddr4-memory-scaling-amd-am4-plat...
I'll be building a Ryzen system tonight for a podcast. Same CPU, RAM, and SSD, and I'll put it in my Fractal R4 case. I bit the bullet and got the Asus X370 board, for the extra USB ports.
I also discovered the sad state of AM4 coolers. Honestly, I expected the CPU itself to be in short supply, but the Coolermaster bracket being out-of-stock is ridiculous. I went with a cheapish Thermaltake, and I'm considering eventually building a custom water loop.
Anecdotally among my peer group, yes, with Windows 10 becoming a viable option due to Windows Subsystem for Linux. I hear lots of grumbling about Apple having turned into a gadget company under Cook and apparently forgetting that they even sell the Mac Pro & Mac Mini. Two friends purchased DongleBook Pros, but they feel kind of embarrassed about having done so.
I installed Windows 10 over MacOS on my work machine, and my next personal machine will run Windows 10.
Of course, the last four years have had much less focus on core performance, or even on putting more cores into pro-sumer machines. Apple in particular is all about thinness, battery life, and passive cooling.
That's not a complaint. For most people, including me, those are good trade-offs.
The laptops, or at least the MBP, seem to be built to mostly run on idle IMO.
This is very much my experience when switching from my previous MBP Retina to my power workhorse desktop. Even my newer XPS 15 is mostly optimized around idle I'm pretty sure.
NMI watchdog: BUG: soft lockup - CPU#9 stuck for 23s!
which requires a hard reset. This behavior doesn't occur on Windows, though, so if you use Windows for development, you should be good.This sounds disturbingly unacceptable yet accepted
Having experienced first hand AMD driver instability on both Windows & Linux, AMD have lost my custom for the next 10 years..
Multiple re-occurring driver crashes using their main graphics card product line(RX380) on Windows 10.. So, pretty mainstream and yet having driver crashing (even when doing non-intensive tasks e.g. web browsing)
For the record, I'm not so sure Nvidia is any more stable either. The only (constantly) stable graphics provider over the years has been Intel's on-board graphics.
I installed the official AMD RX580 drivers and it's been stable since.
IIRC in my case it goes away once I install bumblebee. Apparently something to do with switching between internal Intel graphics and the dedicated Nvidia chip, and not at all related to your issue, except for the symptom.
It's comedic because after bootup I have about 90s until lockup, so I have to be lightening-fast to type the commands to install bumblebee. If I'm too slow: reset machine, try again.
FWIW, this is on a notebook, running Ubuntu 16.04.
I was unclear, this only happens after a fresh install, before I've installed Bumblebee and its dependencies. Once that is out of the way, I don't need to worry about it any more.
SMT support on Ryzen is really flakey, it's almost always a wash and often can hurt performance and I wouldn't be surprised to see it cause this kind of bug as well (especially in the early days of kernel support).
But in the future I want a desktop and a highly mobile laptop, not an awkwardly immobile laptop. These large laptops were nice for LAN gaming in college but I just don't do that anymore.
99% of programmers don't need a machine with liquid cooling. Even if they are targeting high performance hardware, development work can be run from a more modest machine.
Does he need that much power, though? I certainly wouldn't, but for what he is doing I can see it. He's running 12 containers in VirtualBox. Avoiding VirtualBox would help a lot, but depending on what he's doing, he may not be able to (and on Mac, I think you have no choice -- he may not realise that he'll get tons better performance without it). On top of that he's doing Closure (presumably with power hungry development toys) and lots of video conferencing. I often pair program remotely with video conferencing and it can eat half of your CPU(s). Mumble and Tmux is a much better way to go, but again setting up and getting used to the tooling is not trivial.
$2K and building your own machine vs doing some pretty serious work trying to lighten the development environment -- I can see an argument for it, even if it's not the way I would choose to go.
When it comes to these things, I can't find anything but anecdotal evidence. Even the most respected reviewers usually have a sample size of one.
One fan is a lot quieter than 2-3 fans + pump.
Something like Watercool MO-RA3. This can dissipate about 500W heat fanless. (4x that with full fans) Of course the room might get hot after hours of constant use.
Combine with fanless (or watercooled) PSUs and very quiet pumps for maximum silence.
It takes a lot of static pressure to force air through a radiator, and such radiators are definitionally mounted near some kind of air intake/outlet so there is usually very little noise dampening available. Also, AIOs usually have the cheapest parts available (pumps/fans) and are lower quality than you would get from a (much more expensive) custom setup.
There are quite a few benchmarks and real world comparisons on YouTube that seem to indicate significant improvement in some workloads.
I built my own 6850k system last June (4.2ghz +32gb ram + samsung 950 pro nvme), and find it great for programming - well, everything, really.
In case you are not familiar with what can go wrong, here there is a vastly incomplete list:
- You can damage the PSU by selecting the wrong voltage, you might have a PSU doesn't supply enough wattage.
- You can buy incompatible components that won't work with each other.
- You could have static electricity, and you won't notice until you turn the computer on and you hear a little spark sound... that means something died.
- Causing a short circuit by leaving a metallic object lying around (e.g: a screw)
- Getting a thermal problem by applying the thermal paste wrong or connecting a fan spinning to the other side.
- Crushing the processor by installing the heatsink with too much muscle.
- Connecting light cables to pins that are not for lights causing unintended behavior.
In short, there's a lot you can get from building your own system but it can also go wrong... and when it does: no warranty, you are on your own.
I do it for beer/nice bottle of scotch and to keep my hand-in for when I build my work machines (I have Ryzen parts on order at the moment just waiting for them to turn up, for the new jobs desktop).
If you take your time, read the manuals (heresy I know) there isn't very much that can go wrong.
It's also gotten remarkably easier over the years, connectors have improved etc.
One is attaching the CPU power connector, since in many cases it's absolutely JAMMED against the top of the case/a fan/etc. Getting it off is even more of a nightmare, if you ever need to change the PSU. I changed a PSU last week and spent a half hour trying to open the latch with a screwdriver while tugging on the wires (and hoping I didn't rip them out). I tried needlenose pliers, couldn't get a grip on that stupid smooth plastic connector body.
The worst, though, is attaching those stupid 1-pin jumper sockets for the power switch/the LEDs/etc. HOW IN THE WORLD has nobody standardized that connector block and turned it into a single pluggable unit like the AC97/HD Audio connector?
Also yes why the hell is that that not a standard.
I have fairly frequently had issues like the ones mentioned by the gp. Some factors: I'm clumsy and break things. I did not, in the 1990s, take static seriously. The instructions that come with computer parts are often more reminder than instruction: they have a lot of useless boilerplate, and then the actual instructions will admit more than one interpretation or simply imply the correct actions rather than state them. I have more than once had the experience of not being able to complete a build until the next day because some screw I needed was not included, or the screwhole wasn't threaded, or because a 2 cent plastic tool was not included, but still semi-required. Going back to the store might be something you can do, but maybe you'll have to wait for shipping, or maybe the store is far enough that it's a weekend activity to go (not everyone has a Fry's or Microcenter within ten miles...).
Over the weekend, I, too, picked up a shiny new Ryzen and mainboard. Since I have had poor experiences ordering parts from Amazon, Newegg, etc, I drove to Microcenter and picked up the parts I needed. If I got the wrong part, it would be a week before I could go back, so I'd probably order online, but that doesn't satisfy they "build a new machine this weekend" desire...
The sales rep helpfully told me I'd need an adaptor for the heatsink/fan, which was important and which I'd not run across online in research... why would there be a bunch of mainboards available for AM4, but no heatsinks to attach to them? But that seemed to be the case, at least there in the store. If I'd bought parts online, frustration would have definitely ensued.
The heatsink came with around 20 screws and other parts, and a complicated process for attaching a part that looked like a swiveling X to hold the heatsink against the CPU. The adaptor had a single bar with two latch-and-screw arrangements. It showed an image of how to attach it. It said "Easy installation!" in the instructions, and that was the only clue that you need not use all the other hardware that came with the heatsink. It literally took more than half an hour for me to understand that this was how it was.
While there are definitely similarities, and things that don't change much any more (ATX, for example), the details of things like storage connectors (large plastic with thick metal pins for IDE, then small plastic tabs for SATA, now a spring-loaded card insert on the mainboard with a screw to hold down the other end of the m.2 card...) change so frequently that if you only build a machine when you need it (4-10 years apart), you'll be dealing with several new connections and card types, and everything has to be approached from the standpoint of "if I slip or the static clip is pulled off the grounding or I am too confident that something should fit where it does not, I will end up going back to the store and buying a new whatever".
Also there is this: http://www.logicalincrements.com/
Every few years, I build my own after few months off reading and picking parts. Great hobby.
Storytime: I bought my newest computer a couple weeks ago from Puget Systems. Along with the PC, they shipped a 30-page custom binder that included the results of all the benchmarks and tests they ran, plus thermal images they took during the process to ensure optimal airflow. When I hit the power button for the first time, my desktop appeared within 5 seconds, with all Windows updates and the latest drivers/firmware installed already. The cabling job inside the PC was immaculate, and the PC is whisper quiet even though it's overclocked.
Moral is, if you're going to pay a premium for a pre-built custom PC, do it from a high quality vendor.
> - You can damage the PSU by selecting the wrong voltage...
What voltage are talking about? Curent PSUs do not care about input (if it falls into roughly 70-280 volts no matter DC or AC and frequency). Output voltage is usually 3/5/12 or CPU-specific. All these voltages are routed to special connectors which cannot be inserted wrong way. (evev with a lot of force).
> ...a PSU doesn't supply enough wattage
This will cost you a single roundtrip to the store to replace with a beefier one.
> - You can buy incompatible components that won't work with each other.
Most stores have “configurators” (on their web sites) that show only compatible parts. If you are not sure, just google a reviev/assembly example and order the same set.
> - You could have static electricity, and you won't notice until you turn the computer on and you hear a little spark sound... that means something died.
Never ever had a part died due to static. Before assembling touch the metal case of your new PC, that is usually enough to discharge.
> - Getting a thermal problem by applying the thermal paste wrong or connecting a fan spinning to the other side.
Nowadays thermal interface is pre-applied for you. And the fan is already screwed to radiator.
> - Crushing the processor by installing the heatsink with too much muscle.
You cannot crush a new intel or amd cpu, even with a hammer (if you are not assembling ultrabooks with bare dies of course).
> - Connecting light cables to pins that are not for lights causing unintended behavior.
I do not know what are you talking about. Most of connectors can be inserted (physically) only the correct way and only into intended sockets. Those which can be misconnected are usually labeled/colored accordingly. Just match form/color/label, even a kindergartener can manage this.
I am pretty sure I've fried PSUs with 110V rather than 220V, in a 220V grid. Haven't tried this on newer PSUs.
> This will cost you a single roundtrip to the store to replace with a beefier one.
What if that store is an online store? what if you actually imported your parts from abroad? What if there is a no refund policy?
> Most stores have “configurators” (on their web sites) that show only compatible parts
If someone is filtering using the wrong criteria, e.g: price, can end up selecting wrong parts. It's possible if you are not familiar with this.
> Never ever had a part died due to static. Before assembling touch the metal case of your new PC, that is usually enough to discharge.
Yes. But you do this exactly because it's possible. It's easy to prevent, but first you need to be aware of it.
> Nowadays thermal interface is pre-applied for you. And the fan is already screwed to radiator.
Some fans/heatsinks include a pad of thermal paste, some others will require you to apply the paste. The CPU fan/heatsink is hard to connect wrong, but installing extractors in your case need you to be aware of where the air is flowing. It's not impossible to attach an extractor flipped to the other side.
-
Then after you are done with all the hardware, there comes the software, and getting everything installed correctly with the right drivers can also be challenging for some.
And yes, all issues are preventable, and a lot of it is "connecting stuff where it fits", and with a short intro and common sense it can be easy to assemble a machine.
My point was that there are still details you need to be aware of. And there's a non-zero risk you need to be aware of. Many people require help to install a printer, let alone assembling a machine.
Yep, I haven't seen a PSU that's not universal (100-240 V) in ages.
> What if that store is an online store? what if you actually imported your parts from abroad? What if there is a no refund policy?
Don't import PSUs from abroad? If it's no refund you can sell it to someone or use to build a second, less powerful computer, etc.
> If someone is filtering using the wrong criteria, e.g: price, can end up selecting wrong parts.
PC Part Picker literally excludes incompatible components with each component selection! That's the whole point.
> Many people require help to install a printer, let alone assembling a machine.
This thread is called "Ryzen for Programmers"… key word "programmers" :)
You can do really well just using laptops and the cloud. Many people will never have the need to build their own computer in this generation.
Then, for some users, specs are not everything since sometimes you can just deploy stuff to a high spec instance on the cloud (for a cost, yes. but you can dispose it after you are done). Sometimes mobility, battery life, durability, a nice keyboard, and something that doesn't overheat on your lap are more important. You cannot bring your desktop computer to a coffee shop.
Then, if it's the IDE speed... you can always tune your IDE. IntelliJ, the IDE used in the article: make sure you have the right JVM, tune the JVM settings, disable features you don't need, break down your project into smaller projects if it's too large, and temporarily exclude files that don't need to be indexed...
While it is more cost-efficient and powerful, the sound of whirling fans is not for everyone. I used to build computers with up to 10 different fans in them, it sounded like an airplane when you turned it on. I am sure my wife would be very irritated by it. The solution to that is to use water cooling or something like that, but chances are you are just using fans.
Sure, but they usually can learn it extremely quickly :)
> I used to build computers with up to 10 different fans in them, it sounded like an airplane when you turned it on
That's weird, because if you have more fans, each one can spin slower. Did you just leave them all at 100% without any software control?
My tower is extremely quiet at idle, slightly louder at 100% CPU, and only actually loud at 100% GPU. (The GPU is heavily overclocked which requires more cooling from the case fans. If I ever want it to be quiet while gaming I can just lower the GPU clock and voltage. But I prefer more frames per second, I use headphones anyway :D)
> You cannot bring your desktop computer to a coffee shop
That's why I also have a small Thinkpad. Compiling FreeBSD on it takes like a day, compared to less than 30 minutes on my desktop. Yeah sure the "cloud" is there but it's not for everyone. I like having actual powerful hardware.
https://aws.amazon.com/s/dm/optimization/server-side-test/fr...
All desktop/consumer AMD sockets are PGA (pins on CPU), so the application of the hammer would bend/break all the pins :( For LGA CPUs, sure :D
> Most stores have “configurators” (on their web sites) that show only compatible parts
You don't have to use a store-specific one, just use PC Part Picker. Heck, manually matching the basic parts is very easy.
Building your first computer is incredibly scary and there are indeed a lot of ways to screw up. It's something that should be approached with an appropriate amount of fear so that you are careful.
But if you are careful, it's really not as bad as it seems. You can buy static wrist straps to eliminate the possibility of shocking any of your parts. I never wear one, and I'm pretty sure I've never killed anything that way. And if I had, I'd just RMA it like any other bad part.
The connectors these days are incredibly easy to match up and there won't be any problem with voltages or anything.
Incompatible parts can be returned, as long as you bought it somewhere reputable like Newegg or Amazon.
Don't leave screws lying around. This is just good sense. If you're the kind that can't keep track of things, then yeah, don't build machines that cost hundreds of dollars.
Crushing the processor? If you manage that, you didn't read the instructions. The only time I've seen bent pins is when someone didn't read. I've never even heard of "crushing" a CPU while installing it.
The rest of the stuff is just following instructions and doing things slowly and carefully.
Last time this happened was back in the Athlon days were CPUs had no heat-spreader, so you could literally chip the edge off the chip by setting the heat sink down on it with an angle. Needless to say, most of the silicon in a CPU is actually needed for it to work :)
(For the record - it actually needed a decent bit of force)
This doesn't happen with mobile CPUs, which don't have heat-spreaders either, because their cooling units are much, much lighter compared to the coolers of the Athlon era.
IIRC there were also some problems with high-end after-market coolers and Skylake (which lowered mounting force tolerance due to a thinner interposer PCB), but it was publicized quickly and manufacturers reacted as well.
Specifically about static electricity, almost always it's enough to just make sure you touch the metal body of the processor before its pins (what's inevitable if you are taking it from the original box). Despite the warnings, most parts are not very sensitive to static at all, make sure you discharge any extra charge by touching the floor and you are good to go.
https://www.reddit.com/r/linux/comments/5xvn4i/update_corebo...
[1] https://www.cpubenchmark.net/compare.php?cmp[]=2966&cmp[]=26...
Web development like the article mentions is probably the perfect fit there. Analytics is probably good too(R, Python, SQL). Careful if you need a video card in there, though.
I mean the author writes that "The Ryzen remains fully responsive and completely usable." and some years ago there was this magical patch that greatly improved the responsiveness of Linux systems: http://marc.info/?l=linux-kernel&m=128979084506774&w=2
I hate any kind of latency between "this should work" -> "does it work?".
I've even considered buying beefy server hardware at home but electricity is expensive and it's a rented place so I can't exactly start install server racks.
In a primarily memory-bound workload, the obviously correct answer is a HEDT i7 or a Xeon anyway, since they have quad-channel RAM (doubling your RAM performance right upfront) and don't have the silliness of Ryzen's memory controller.
I have a 1700X/16GB/SSD build and a Dell XPS 15 9560, both of which are very fast, but the Ryzen just flies!
I'm getting a replacement (Model Up actually, Dell did a 12% off offer) so we'll see how it is. I look forward to UHD Touch & Fingerprint Reader.
1. IO is not as important as your gut feeling tells you (e.g. 5x faster IO often led to <2x faster compiles)
2. Programming languages tout the parallelism horn, but their compilers and tools are really not optimized for many cores.
2x faster compiles is still too big an improvement, something there is badly optimized.