Dec 1, 2024 Fast builds, low price

I hit that time where the workbench computer was due for an upgrade. This AMD FX-8350 PC started as my main workstation in 2012, and was moved to the bench after upgrading to the AMD Threadripper 3960X in 2020. I build my workstations with a 4-5 year lifespan as my main computer, and a total lifespan of 7-10 years relegated to other roles. It was great to see the FX-8350 exceed this, but it was really struggling to run more than a handful of channels on the Saleae Logic Pro 16 logic analyzer. Most of the time I don’t need a lot of channels, but those few times when I do and they’re not available can be painful. It’s also nice to be able to use the workbench as a secondary build box so I don’t have to switch between computers to compile software when doing hardware/firmware integration. Full Nerves system builds were taking over 30 minutes on the bench, which is impractical.

Options


A few upgrade options have been rolling around in my mind for a while. The first was to adapt the workbench for my Asus ProArt i9-13980H laptop. However, there’s no practical space on the bench for it, and finding a home for it under the bench makes it difficult to open it to hit the power button and reattach cables after traveling with it. We’ll circle back to this later though.

Upgrading the main workstation to a Threadripper PRO 7975WX and moving the 3960X to the bench sounded tempting. Very tempting. But Threadripper works so well for what we do at Redwire Labs that I need to scale it across the development team, and I can’t do that if I build the next computer myself. That means the workbench will have to be upgraded ahead of the Threadripper. On a side note, building Nerves systems is a game of compiles per hour, which Wendell at Level One Techs talks about in depth in the videos about compiling the Linux kernel and Unreal engine.

Remoting the workbench computer to a VMware ESXi virtual machine on one of my on-prem servers was a thought to consolidate physical systems. VMRC is an application to remote console into a VMware server, and has a similar feel to VMware Workstation Player except that the virtual machine is on another computer. Despite the term console, this is no mere ASCII terminal. It is a full KVM with local hardware passthrough. Unfortunately in testing, trying to pass through the logic analyzer was wonky. I considered using a USB over fiber extender to get all of the USB devices from the bench back to the server since the office already has fiber to the server rack, but this whole approach was feeling fragile enough to shelve it.

Going with a NUC, one of those small form factor computers that tend to be used as home media servers, also went through my mind. My concern was that they’re built for media, not heavy duty compiling. Although the GPU might be good for processing 1080p or 4k, the processors for these systems wouldn’t need many cores for media, and their small size and reduced ventilation may cause the system to thermal throttle when compiling.

But wait… the laptop’s i9-13980 is a 20 thread mobile processor, which means decent processing power in a small form factor. How well does it run the logic analyzer? It turns out with all 16 analog and digital channels enabled, flawlessly. Ok, so how do I get it in a better form factor?

Solution


The Minisforum MS-01 is a small form factor PC with an i9-13980H 20 thread processor. It looks better ventilated than many NUCs, and has active cooling. I like the dual SFP+ networking ports, since I was able to connect my two 10Gb fiber connections for the LAN and storage (iSCSI) networks directly to the PC, avoiding external adapters and maintaining full bandwidth. It also has two Ethernet ports, and Wi-Fi.

MinisforumMS-01-2The barebones model is $679 at the time of writing, and I purchased 64GB RAM and a 2TB NVMe drive to go with it. The total was under $1000. The 32GB RAM / 1TB SSD combo on their website ($839) should be fine for a Nerves build box, but I wanted control of the hardware in the machine and also wanted to max it out so I don’t have to upgrade its components again.

I believe the price dropped recently, possibly related to Intel’s recent voltage bug affecting 13th and 14th gen CPUs. It sounds like the bug only affects desktop processors, not mobile processors, so I took the chance that this price is artificially depressed due to the news being misunderstood. I’ve only had the computer for a couple weeks, but so far it has been fine.

So how does it perform?

Trying it out with my typical workloads was very positive. Just like the laptop, it can run all 16 analog and digital logic analyzer channels without skipping a beat. Compiling Nerves systems is also very acceptable. This isn’t something I’m going to do detailed benchmarks on. I just needed something that works well, and it achieved that goal. That being said, here are a couple Nerves system compile times for comparison. These were run without Buildroot parallel compilation, so only one package is built at a time. Packages that support multithreaded compilation, like Linux, will use it when compiling. There’s a whole can of worms here for another article.

nerves_system_bbb
v2.24.0
nerves_system_iot_gate_imx8plus
v0.2.0

13th Gen Intel(R) Core(TM) i9-13900H
20 threads

17m24.874s

13th Gen Intel(R) Core(TM) i9-13900H
20 threads

28m1.572s

AMD Ryzen Threadripper 3960X 24-Core
32 threads (VM)

13m24.201s

AMD Ryzen Threadripper 3960X 24-Core
32 threads (VM)

23m4.164s

Conclusion


I consider the Minisforum MS-01 performance “very acceptable” rather than “amazing” because I’ve been spoiled by AMD Threadripper. For me, it’s a great secondary computer for compiling Nerves systems, and feels like a “Threadripper Lite”. So far it’s great at everything else I need to do at the bench.

Although Redwire Labs does Linux-based development, a lot of developers programming in Elixir are using an M4 MacBook Pro. That’s a $2500+ computer that I hear takes over an hour to compile most Nerves systems. The Minisforum MS-01 is a sub-$1000 computer and is at least halving that time. If you’re a Mac user experiencing this pain point, you may want to consider purchasing an MS-01 as a build box that you can remote into from your Mac. With rsync and SSH you can transfer your source code to the build box, compile, and transfer the artifacts back to your Mac, significantly speeding up development time.