Category Archives: Private

Family, parties and more

Ryzen 5950x workstation update

As my previously post indicated I have created a new workstation, Components for New workstation, based on the Ryzen 5950x. This post is a follow-up, where I will present a minor change to the build, the build itself, results from a benchmark with Yocto and lastly my general view on the workstation and what I would change if I had the change.

Changes

In my previous post I stated that I went for the Seasonic Focus PX 850. Unfortunately availability of seasonic PSUs was very limited and everything above 650 watt completely out of stock. So based on availability I ended up with Seasonic Prime TX 650 – 80 Plus Titanium. This is a very nice PSU – including hybrid fan control making it a very silent PSU. Also this build uses well below 650 watt, but I prefer the PSU to be oversized, as the fan speed, and by this the noise increase with load percent. Though the difference in load percent is more than compensated by being the Titanium model with 135mm fan and better fan control compared to the 120mm of the PX model I originally intended to use.

The build

The build was pretty straight forward, though with a very tight fit, mostly caused by the size of the CPU cooler. I took some quick shots of the process, you can see below.

Components arrived for the workstation
The CPU in the motherboard
Assembled the hardware in the case. Still missing power. Notice the CPU fan touching the memory, and the tight fit for the graphic card.
Final result, while running memory test

If you look at the last photo, you can see the tight fit around the graphic card and the CPU cooler. The fan of the cooler is also touching the memory, so no room to spare. The M.2. sits under the fan also. So be aware that all the space around the CPU cooler is used. A minor annoyance is how the Corsair MP600 with its own cooler attached, collides with the M.2. cooler plate for the motherboard. I needed to remote the chipset fan grill to remove the plate for using the MP600, and as I could not use the motherboard plate, the chipset fan grill could not be mounted again. Later i was informed how to remove the heatsink on the MP600, so the heatsink from the motherboard could be used, so would change this in a rebuild.

Yocto benchmark

Martin ‘JaMa’ Jansa who is a WebOS developer at LG and core developer of OpenEmbedded, provide a benchmark over different CPUs with the test-oe-build-time.

If you look at the time.build tab of html result, the build time for this system is around 2:37:29 for zeus branch and 3:41:26 for hardknott branch. In comparison building the zeus branch on Threadripper 3970x takes 1:36:18, a dual socket Xeon E5 2699 v3 takes 2:40:26 and a dual socket Xeon E5 2698 v4 takes 2:18:41.

I don’t have the price of the reference systems, but looking into the CPUs, a single Xeon E5 2699 v3 is $4115.00, a single Xeon E5-2698 v4 is $3226.00, a Threadripper 3970x reference price is $1999.. and my chosen Ryzen 5950x is $799.00. So if you compare the results according to price, you get the most bang for the buck with the chosen workstation.

Conclusion

In general I am very happy with the workstation. Running with the quiet profile in the BIOS and setting the RPM down, means the workstation is for all practical purpose silent when idling and only a woosh sound when under heavy load.

The only thing I properly would change is the Corsair MP600. I ended up patching the kernel because of a firmware bug with the SUBNQN. I documented it in their forum. This combined with a number of people report slowdown, and the small issue with not having the fan grill on the chipset because of the attached cooler, means that I would properly go with a Samsung 980 Pro if I needed to do the build again.

Hope you can use the comments and please comment if you have any questions.

Components for New workstation

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.

Lego Apollo Lunar Module

The people around me knows how fascinated I am about the Space Race. From the launch of Sputnik 1 in 1955, over project Mercury and Gemini culminating with the Apollo program. So when the Lego Ideas set for the Saturn V arrived last year, it made it to the top of my wish-list. Luckily I got it and had a great time building it together with Marie.

As my son is 4 years old now, I have also been at my parents and pickup all my old Lego. A fun element was getting my old Lego Apollo Lunar Module set. I inherited it from our neighbors when I was a young kid. This old set was properly part of what got me fascinated by the space race from a young age.

So I decided to share the below image, showing the new Apollo Lunar Module as part of the Lego Ideas set 21309 from 2017, and the old Apollo Lunar Module in the background part of my Lego set 367, released in 1975.  So two official Lego versions of the Apollo Lunar Module, with an age difference of 42 years.

Legos Apollo Lunar Module (The old model 367 and from the new Saturn V set – 21309)

Doing presentations on my Mac

I am in the middle of creating some presentations about Git. A version control system, I have successfully integrated into my department at Phase One. So I could of cause use Microsoft PowerPoint, or Apple Keynote.
Though is there a tool, which I am more used to, and even though it is harder to learn, superior in many ways. The tool is LaTeX, Beamer, Emacs and AuxTex.

So why do I consider this a superior solution.

  • The files are text files, and easy to version control, including being able to merge changes.
  • Depending on target, It will guide the presentation design against a PDF output, meaning you will not create distracting animations etc.
  • Being designed to PDF output also means it easy to prints handout etc.
  • The tools is true cross platform, working on Windows, Mac OS X, Linux and *BSD. So you data are not locked to a vendor.

The bad thing is the learning curve and knowhow needed for using the tool. PowerPoint and Keynote are much easier to get started with.

So knowing the tool from my many years working with Linux, the new part was to install the tools on my Mac. It was though pretty easy to install, as I am already using MacPorts.

  • LaTeX. The easiest way to install LaTeX using MacPorts, is the texlive package. This can be installed in a basis, medium or full variants. I just select the medium variants, as it contains the package I need.
sudo port install texlive +medium
  • Beamer is a tetex package, containing what is needed for creating presentation in LaTeX. Again installed by a MacPort command.
sudo port install tex-beamerposter
  • Emacs is an old family of editors, started in 1975 by Richard Stallman. The version I choose to use on my Mac is called emacs-app in Macport, and contains a Cocoa edition of GNU emacs. Cocoa means the editor uses the Macs native graphical toolkit.
sudo port install emacs-app
  • AucTex is a package originally from Aalborg University, which is a major emacs mode for editing TeX files. It is installed by the following command.
sudo port install auctex +emacs_app

When everything is installed you will need to bind it together in the .emacs file. This is the configuration file for emacs, and there are many examples for how to create one around on the internet. Personally I see it as a continued work in progress; there never can be finished. Later I will maybe give some tips as comments to this post.

Firmware udvikler hos Phase One

Det har været en rigtig spændende start på det nye år, da jeg er startet på mit nye job som firmware udvikler hos Phase One. Allerede i november sidste år, startede jeg med at søge en stilling hos firmaet. Efter et ansættelsesforløb over nogen samtaler fik jeg jobbet, hvor jeg så startede 17 januar i år.

Jeg vil lige introducere firmaet Phase One, og hvad de laver. Det er en virksomhed med base på Frederiksberg i København. Phase One betegner sig selv som ”World leader in open-platform based medium format camera systems and solutions”, og hvis man arbejder med professionelt fotoudstyr, som medium-formatet tilhøre, kan man ikke undgå at have hørt om deres produkter. De har kamera, linser, billedhåndteringssoftware med Capture One og ikke mindst digitale bagstykker til kamera. Det er netop udviklingen af de digitale bagstykker jeg er blevet tilknyttet. Og hvad er et digitalt bagstykke tænker du så. Jeg vil ikke sige så meget, men vise følgende lige video, som viser den platform jeg hjælper med at færdiggøre firmwaren til.

Det er et super fedt job. Som nævnt i filmen er der tale om et 80 megapixel bagstykke. Lidt hurtig hovedregning siger at med 16 bit farvedybe, fylder hvert billede 480 megabyte, hvis det var i Tiff formatet. Så hvordan håndtere man så store mængder data på en indlejeret enhed. Det kræver elementer som dedikeret hardware i FPGA, et hjemmedesignet operativsystem og rigtig mange tricks for at kunne være realtid. Og tro mig, der er rigtig mange realtidsprocesser i et kamera system som dette. Med andre ord er jeg placeret i et rigtig udfordrerne job, hvor jeg er så heldig at have nogen super kollegaer inden for indlejeret systemer. Den sidste gode ting – gratis Cola mens jeg er på arbejde. 🙂