I’ve found myself needing a new computer and, given that I plan to build my computer, this means that I need to figure out what computer parts I would like to have in my computer. What kind of CPU should I get? How much RAM? How large of a hard drive do I need? And how fast do the hard drives need to be? (Wait … I need to worry about how fast the hard drives are?) Do I want a gaming PC or do I need a workstation? Figuring out which computer parts to choose for a new computer involves answering several questions:
- What do I use my computer for?
- What do I want to use my computer for?
- As a bonus question, how much do I want to brag about it?
These questions apply to whether you’re purchasing a pre-built computer from a computer shop (like Best Buy) / pc builder (like Puget Systems or Dell) or buying parts to build your own computer. Given that I’m a software developer I planned to build a workstation that would help me build good software. Join me as I walk through answering these questions and choose parts. Additionally you may want to check out my post on creating Windows 10 install media (aka a USB drive).
Note: The links to the parts in this post are affiliate links to Amazon. Before you purchase anything make sure you double check prices at other places like NewEgg. The links to Puget Systems are NOT affiliate links. They’re work to test parts and know what kind of systems do well for certain workloads warrants consideration when buying a computer.
Check Here For Updates On The Prices Of Items I Purchased
I’ll reserve this section at the top of the article to include any good deals I happen to see on the parts that I bought for my computer. I will come back and remove links that I don’t find deals for anymore. For example, the Crucial Ballistix kit I said was on sale for roughly $75 off this morning? Not any more. That being said, Amazon changes their prices often and many times per day so I wouldn’t be surprised if some of you still see it for sale still while I don’t.
What do I use my currently computer for?
My primary career is as a Software Engineer / Developer and I do some development work on my own machine. At the time of writing this I do have a full time job with a company that has provided me with a laptop. This means that I’m not doing a ton of development work on my Windows PC at the moment. In addition, I like playing the occasional game (though I don’t play anything super intensive). This means that I don’t need my computer to be extremely powerful.
The dev tasks that I have the knowledge and potential to do at a moment’s notice are:
- C/C++ development with Visual Studio
- Database development with MS SQL Server
- WordPress setup with Varying Vagrant Vagrants & other tools
Compiling large C/C++ projects benefit from lots of CPU cores. VVV uses VirtualBox to start up a virtual machine to run an instance of WordPress which benefits from both CPU and RAM. Even with these requirements my projects have been small enough that using a several year old 8 core processor with 16 GB of RAM suited me fine for a long time.
What do I want to use my computer for?
There are several things I would attempt with a computer more powerful than I presently have:
- Get an instance of SQL Server running to handle the data from the EveSDEImporter project
- Create a VM for SQL Server and for other services to better understand both VM setup and network communication
- I have a grand total of 1 commit to the Chromium project. It’d be nice to do more but Chromium is HUGE and takes a long time to build
These are a few of the things that I would like to do that require a computer with more processing power and RAM than my present computer parts will grant me. Given that I’ve got a spouse, a child, and a full time job there are priorities that will take priority over trying new things. But they are goals for things that I’d like to do. As such buying a computer with the power to accomplish these goals is less of a priority than getting parts to suit what I need to do now. They are, however, a consideration.
What parts of my computer need to be fast?
The different parts of the computer contribute to making a computer fast in different ways. The good folks over at Puget Systems have done TONS of research on the performance effects of different parts for certain workloads. As such I will just speak in generalities here and point out which computer parts I need to be fast.
Central Processing Unit / CPU
The CPU of a computer is the part that does all of the computations for the computer (with the exception of graphics processing or workloads specifically set to run on a GPU). In general:
- The faster that the processor runs the sooner it will be able to complete any single task. The higher the GHz number the faster it runs.
- Newer processors tend to get more done in a single cycle than older processors so don’t look to buy an older processor JUST because the GHz number is higher
- The more cores it has the more tasks it can complete at any specific time.
In my particular case I am prioritizing having more cores over having faster cores. This will allow my to compile large C/C++ projects like the Chromium project that has lots of source code files. The compilation of each of these files is a separate process and the more cores I have the more files that can be compiled at once. This will also allow me to possibly have several virtual machines running at once each with enough cores assigned to it that they all run quickly.
Random Access Memory / RAM
The RAM is the fast, temporary memory of a system. It’s job is like the young child helping their family member fix a car. It holds stuff for the CPU and hands the information to it quickly when needed or put it in it’s proper storage place quickly. It has basically the same two arguments that the CPU has:
- The faster it is the faster the CPU can grab information from it or send information to it.
- Note: AMD Ryzen CPUs are particularly sensitive to memory speed. In general, the faster the better.
- Having more of it allows for bigger or more files to be in it at once
The argument for more RAM is very much the same as the argument for more cores in the CPU but for a different reason. When building a C/C++ project the step that creates the actual executable (the link step) is particularly memory hungry. And, also similar to the CPU argument, the more RAM available to the machine as a whole the more that can be made available to virtual machines.
The hard drive is the long term storage device for your data. It typically has much more space on it for data than RAM does and keeps the data stored even when the computer is powered off (unlike RAM). The sacrifice that is made for these benefits is the speed at which data can be retrieved from or saved to the hard drive. Given that it takes so long (in terms of how fast a CPU is) to get data off of a hard drive it pays to get the fastest hard drive you can.
NOTE: Most drive manufacturers advertise how fast their drives can transfer data to and from the drive. Not as many make a big deal about the latency which is how long the drive takes to acknowledge a request to read/write data and start that operation. Most of us will not need to care about the specifics of these other than to get the best combination of speed and size that fits our budget.
The last hard drives that I purchased were SATA based solid state drives (SSDs). Just as these have a marked improvement in data throughput speed and data access speed (latency) an argument can be made for stepping up another generation to an NVMe based SSD drive. Being able to pull information off of a drive as fast as possible is always worth an upgrade when possible. It will also let me use my previous storage as another tier of storage.
Video Card / GPU
The GPU has one main purpose that will apply to most people – making graphics look fantastic in games. Having the latest and greatest in GPUs is important if you are playing fast moving games that require quick reactions to tiny details on the screen (think first person shooter type games). I don’t presently play any games of the sort and, as such, don’t need to upgrade from the MSI Geforce GTX 1070 that I have.
There is a secondary purpose as well – doing the same calculations over large data sets very fast. Due to the way these graphics processors are designed for games they happen to be very good at calculations over lots of data. In recent years Nvidia and AMD created programming interfaces to allow developers to run calculations on GPUs. These interfaces have been used to do things from bitcoin mining all the way to heavy duty scientific calculations in super computers. That being said I am not at the point where I am doing any GPU development. Given the high price for high end graphics cards I do not have any need for a faster card than my present GTX 1070. If I did start to do some GPU programming I would likely, at time of this writing, choose an Nvidia RTX 3090 due to how fast it is and how much memory it has available.
Update: Given the recent announcement of the Nvidia RTX 30xx line of GPUs I thought the I’d mention whether I plan to upgrade my GPU. The answer is still no for the reasons I mentioned below. While it would be entertaining to be able to buy an RTX 3090 to play games with incredible fidelity or interesting to use it to solve complicated data science problems I’m not at the point where I need this. I’ll consider upgrading to an RTX 2080 ti if a good deal comes up on it but, given that this build was already expensive, I don’t have a reason to right now.
What computer parts did I buy?
Given all of the above let’s take a look at what I decided to purchase:
CPU – AMD Threadripper 3960X
The Threadripper 3960X is a beast of a CPU. It has 24 cores that can run 48 threads. These cores run at a base speed of 3.8 GHz and can boost up to 4.5 GHz when called for. It is an incredibly fast CPU but has a drawback to all this performance. It produces a LOT of heat.
Why did I decide to buy this when it is so expensive especially when the Ryzen 9 3950X 16 core / 32 beast of a CPU is half the price, performs very well, and has does so producing much less heat? Because the Threadripper has been thoroughly dominating productivity workloads especially when considering price. This chip will also last me much farther into the future and allow me to take on bigger projects than I otherwise might. Yes, this boils down to the processor being an awesome bit of technology now that I like and hopes that it’ll pan out. That being said I’ll leave this section with the results of building Chrome as a reason for buying this:
CPU Cooler – Noctua NH-U12S TR4-SP3
Update – Previously I said that I’d purchased the Noctua NH-U14S instead of the U12S that I actually purchased. I realized this mistake and corrected the names and links. The CPU is running a little hotter under load than I might like. That being said I will probably upgrade to liquid cooling if I decide to go for better cooling.
In order to keep this beast of a processor cool I chose the Noctua NH-U12S given Noctua’s reputation for making good CPU coolers and quiet fans. Here is a review from AnandTech for this specific cooler. At the time of writing it is the only product from Noctua that is compatible with the Threadripper 3960X. The benefit of this particular cooler (other than its ability to keep the CPU appropriately cool) is that it has a relatively thin cooling tower that allows for easy access to both the RAM slots and the top PCI Express slot for use by the GPU as seen here:
Motherboard – MSI TRX40 Pro WiFi
I didn’t have a ton of requirements for the motherboard that I got other than:
- Fit the Threadripper 3060X
- The house doesn’t have network cabling pulled in the walls (yet!) so I need this connectivity
- M.2 Slots for NVMe drives
- Two minimum for boot and storage drives
I have heard a lot of good stuff about the Asus Zenith II Extreme (especially given that Linus Tech Tips used them for their editors work station builds). That being said I was trying to get parts quickly, NewEgg had the MSI TRX40 Pro WiFi ready to ship, and AnandTech gave the board a decent review. So, that’s what I ended up getting.
Here there also very few requirements for me. They were:
- 64 GB
- No RGB
- Fast memory since Ryzen and Threadripper benefit from fast memory
- Provide for upgrade paths later
When I chose this RAM kit I wanted to have a two stick kit so that I’d have more slots available to upgrade later. While I stand by that reasoning and the fact that I didn’t think it wise to spend the money required for two of these I realized later that the Threadripper supports quad channel memory out of the box. Given that I might be leaving some performance on the table by only filling two slots. However, given that this is such a HUGE step up from my previous build, I’m not worried about this potential performance loss at this point. If I come to the point that it matters I’ll purchase another of these kits and will get more RAM and more performance in one step.
Hard Drives – 2 x Seagate Firecuda 520 1 TB PCI-E Gen 4 NVMe SSD
My requirements for my boot drive was that it be the fastest possible that the motherboard and processor can handle. I saw the Seagate Firecuda 520 in the computer configurator at more than one boutique computer builder (including Puget Systems) as the fastest NVMe drive available. That made the choice for me as for the specific drive. While I do still have a 1 TB SATA based SSD from my previous computer that I used for fast non-boot drive space to do work that is going in this build I decided to get two of these drives to fill both M.2 slots on the board. My thought process is that I plan to do some development and database work and might as well have the fastest possible storage available for this as well.
Power Supply – Super Flower Leadex Platinum 1000W Modular Power Supply
Given that I was upgrading to a large CPU with a large power draw I thought it wise to upgrade to a 1000W power supply. This also gives me the headroom to upgrade to a power hungry GPU monster down the road. I hadn’t heard of the Super Flower brand before this purchase but a quick search showed no tech/computer part review channels with particularly bad reviews.
Conclusion — Buy Your Computer Parts To Last A Long Time
If you’ve decided that it is time for a new Windows or Linux computer my recommendation has always been that you should buy the best parts you can afford and give yourself room to upgrade. This IS more computer than I need at the moment even with the heavy lifting of development work that I expect to put on it. That being said I expect this combination of CPU, motherboard, RAM, GPU, and hard drive to last for quite some time.
Thank you so much for reading this far! Please reach out if you have more questions about why I chose particular parts or if you want to see pictures of the build (or a guide on how to do such a build).