memtest86+

Upgrading RAM on my home server

Listen

For years, I was excited about new hardware releases. I kept my PC up-to-date and read reviews and benchmarks. I loved the feeling of obtaining new hardware and assembling it. Those days are long gone. I do not own a PC. I am on a MacBook Pro, and there is literally nothing I can change about its hardware configuration. Luckily, I own a HP ProLiant Microserver Gen10+ which is customizable just enough to bring back those delightful moments. This post documents my journey of upgrading RAM in my home server.

The current setup

Before we get to the juicy part. Let’s see the current setup and why a RAM upgrade may make sense.

Use-cases

My primary use case is running a bunch of small apps and services. These include,

Most of the above runs in Portainer, although some services, like NFS and Wireguard, are hosted directly and not in Docker.

Hardware

As for hardware, I fell in love with an HP ProLiant MicroServer Gen10+ (v1) after reading this article. I spent a long time debating whether I should build the server from scratch and save some money or buy a server grade configuration from a vendor. I went with HP and never had second thoughts. It works like a charm, with no compatibility issues or driver problems; everything clicks right out of the box. And the internals are even slicker than the outside. Everything is compact and easy to access. I was genuinely amazed when I first opened it. Take a look.

The OS is on a Samsung SSD 970 EVO Plus 250GB (NVMe). Storage is provided by 4x6TB capacity WD Red Pros running at 7200rpm. CPU is a modest Intel Xeon E-2224 @ 3.40GHz, 4 cores w/o hyper-threading. And for the memory, it is a stock 16GB DDR4-2666MHz CL19 Unbuffered ECC stick from HP.

There is also an iLO card installed so I don’t have to dig the server out to see its monitor. This is a game changer if you are running a server and don’t have easy physical access.

It’s not supercomputing, but it’s very sufficient for the use cases above.

Software

I managed the server with Ansible playbooks. No service is configured by hand. The OS is a plain old Ubuntu 22 LTS (for now), with ZFS on root and storage as well. The storage configuration is a striped mirror, so the usable capacity is only 12TB.

Why upgrade

Recently, I have been interested in LLM and wanted to experiment with running smaller models locally. Most 7B parameter models happily start up with only 16GB of RAM. Previously, that’s all I had, so it would have been a smooth ride. Linux reported about 2-3GB free at any time. Besides, RAM will be helpful no matter what I do in the future. Linux will use up free RAM for caches and buffers anyway. And with two sticks, there is dual channel support, which will also be faster.

How much RAM?

This one was easy, as much as possible. The server officially supports up to 32GB. The processor is okay till 128GB. There are tests on the web for 64GB configurations, so that’s what I opted for.

Given this machine’s breeze of maintenance, the whole upgrade process shouldn’t last longer than 30 minutes.

The process

Most of my time was spent getting the server out of its closet. It’s pretty packed in there with an Eaton 9E 1000i.

The sticks

There’s not much to see on this front. I popped in the machine to Kingston’s Memory Finder, and it gave me 2x16GB sticks. I bought the 32GB version of those: Kingston KTH-PL426E/32G.

The carrot ๐Ÿ˜Ž

There is just one thing left. Arguably, the most time-consuming part is testing the memory. No one serious about computing uses untested RAM; it can be the source of countless problems that are almost impossible to track down.

Luckily, there is gold-standard testing software out there. All it does is fill the memory with specific patterns and read it back to ensure it’s ok. It is not a 100% guarantee, but running it for a few days places confidence in the newly bought hardware.

I got memtest86+ and burned the image with Etcher. It only took a few seconds. Booting it was more tricky as it didn’t boot right away.

I spent a couple of minutes hunting down the problem. I was wondering if it was the bootable USB stick or the server. The system startup seemed fine, but testing didn’t start.

System report also shows everything is installed correctly.

Finally, I found a boot log entry in iLO.

Disabling the secure boot did the trick, and the tests started hammering the memory.

It ran for almost 4 full days.

Seems ๐Ÿ‘

All done

After a re-enabling secure boot, it fired up just fine. The system reports 64GB on all fronts.

Interestingly, the free capacity didn’t increase much ๐Ÿ˜…

The next step is to get some LLMs running. I’ll probably use Ollama for that.


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *