I have been thinking on upgrading my old Intel(R) Core(TM) i7-4770S based workstation for some time, and with the launch of Ryzen 5000, the time was right.
This time around I also choose to created a clean build, compared to previously upgrades. My current workstation still uses a Chieftec Dragon big tower I bought when I was in high-school 17 years ago, so it includes some very old components.
Before designing this build, I did some reflection about what I need from my workstation. It ended up as the following list.
- Quietness – I detest noise, so target is a machine where it is basically silence when idle, and with a soothing “whoosh” sound compared to a whining when under heavy load. This also means that the motherboard needs to have decent fan control.
- Stability – The most basic part of a stable build is power delivery. So I choose component used for overclocking and then _not_ overclock.
- Performance – Here the focus is CPU / memory as I don’t game. This workstation is first and foremost for developing where part of this is compilation and doing yocto builds. For building / compilation, this means as many cores as possible. As I have a wish for using ramfs for all build outputs, I end up needing above 50G for the yocto build folder, combined with the memory needed for actually running the build processes.
So let me present the chosen components, which ended up being a maxed out AM4 platform.
CPU
The chosen CPU is the new Ryzen 5000 based 5950x with 16 cores / 32 threads and 64 MB of L3 cache.
I was looking at the Threadripper parts like the 3970x, but when taking the price of this CPU (around 15.000 DKK) into account, it was just to expensive for my personal rig, compared to the newer Ryzen 5000 series, where the 5950x as I have ordered goes for 6400 DKK.
If I would design the workstation for my workplace, it would without a doubt be based on the Threadripper platform, because of the increased memory bandwidth (4 channels versus 2 channels) and 88 PCIe lanes compared to the 20 lanes on my 5950x.
A good thing of the 5950x compared to a part like the 3970x is a higher single-thread performance, as it boost to 4.9 GHz, and the Zen3 in general has higher performance than Zen2. This is important when linking binaries among others, as it happens as a single threaded workload. I often end up with changing only a few files before compilation – so linking end up being a significant part of the development cycle.
Memory
My starting point was 2G of memory per thread, e.g. 64G to fit the CPU. But as previously stated I want to use memory also as part of the filesystem so all the object files / temp files from compilation is written to a ramdisk instead of physical writing them to a disk. To support the type of Yocto builds I do, I choose 128G as my needed memory.
First I looked on ECC memory, but the significant increased price, and appertaining slowdown because of the ECC check compared to cheaper and faster normal DDR4 made me choose the normal DDR4. Needing 128G of memory reduced the number of good kits, as I want a max of CL16 and minimum able to run 3600 MHz. The speed of the memory significantly influence the CPU, as it is only dual channel for 32 threads.
I ended up choosing Crucial – model BL2K32G36C16U4B.
They give me a timing of 16-18-18-38 for PC-28800 at 1.35 volt, with a price of 5200 DKK.
Motherboard
I ended up with the Asus ROG CROSSHAIR VIII HERO. It is used in a number of review / overclocking projects using the AM4 platform. For this build, I don’t intend to use the overclocking features, but rely on that the enhanced power capability (16 power stages) compared to other boards also provide enhanced stability.
For connectivity it has 8 x *USB 3.2 Gen 2 and 4 x USB 3.2 Gen1, 2.5 G Ethernet, A number of PCIe 4.0 slots (including either x16 from CPU or dual x8 from CPU.
I also have very good experience with Asus boards previously, and it has one of the best sound options (SupremeFX S1220 codec, ESS ES9023P) for the AM4 platform.
Case
Here I choose the be quiet! Dark Base 700. Mostly because of its space and low noise. If needed it can contain an E-ATX board (Threadripper) and have the option for seven 3.5″ hard drives and fourteen 2.5″ drivers. (Only ships with option for three 3.5″ drives and nine 2.5 drives). I only expect to use four 2.5 drives as a start.
CPU cooler
Noctua NH-U14S is the choice here, in combination with an extra NF-A15 fan for a push-pull config. Again quietness is the reason for this. It is used in many Threadripper builds, making i able to handle much more heat than the chosen CPU delivers, and with fan control it gives a very quite system.
Storage
Having only 4 lanes of PCIe 4.0 for storage I ended up with a combination of a single M.2 drive and 2 SSD. To help with the quiteness I also opted for no mechanical drives, as the vibration and noise from a spinning disk can be significant. Specifically when the disks starting to be worn.
For the main drive I selected the the Corsair SSD MP600 1TB. It is a PCIe 4.0 drive giving me up to 4250 MB/s for writes and 4950 MB/s for reads. I might have been able to mange with the 500G version, but again as I only have 4 lanes for fast storage, and as the 1TB is faster than the 500G version I choose the 1TB version.
For general storage I opted for the cheaper SSD in the form of 2 times 2TB of Crucial SSD MX500. The main reason for this disk compared to many others is DRAM cache and 3D TLC NAND. Many disks, including disks in the same price range does not have any cache and is using the QLC flash technology, resulting in slower performance, and often bad TBW. The TBW for the 2TB disk I have selected is 700TB or 383 GB per day for 5 years.
With this I end up having 1 TB of extremely fast storage, and 4 TB of reasonable fast storage (above 500 MB/s). The 4 TB I can either use in a 2 disk config, or configure as RAID 1 for added data protection against disk failure.
PSU
Here I went for the Seasonic Focus PX 850. It is a modular PSU having among others a very silent mode up to around 50% load, and is able to run in fanless mode when the load goes below 30%.
Seasonic is also known for their stability and gives 10 years of waranty.
GPU
Here I choose to keep my old Nitro+ RX 570. Being a GCN4 based card, means it have superb Linux support, and as I don’t game I only need the card for driving a solid dual monitor setup.
Summary
To sum up my selection it ends with the following.
- Ryzen 9 – 5950x with 16 cores / 32 threads
- 128 DDR4 memory with timing 16-18-18-38
- PCIe gen 4 for all peripherals
- 1 TB M.2. drive with above 4 GB/s for main storage
- 2 x 2TB SSD for general storage
Currently I am waiting on parts, where I expect the CPU to be the last part I receive. Expect it to be early December. I will follow up with a post when build it and run some tests.
Can you run the benchmark for test-oe-build-time if you get a chance when the parts arrive? I’m also looking at one of these for work, and yocto is one of the highest time sucks for me.
You can find it on GitHub at https://github.com/shr-project/test-oe-build-time
Thanks!
Hi – Will follow up with a build post, and good point to be running this benchmark.