home lab

Home Server Stress Test Best Load Testing Tools

Learn how to put your Home Server to a stress test in this review - optimize stability, performance & CPU, RAM, disk & network usage!

Quick Summary

  • However, in testing for stability and other factors on this platform, especially with hybrid CPU configurations, I wanted to take look at home server stress test solutions to really put the heat on the hardware to make sure evertyhing is stable and performs as expected.
  • Running a stress test requires the right tools for the job to simulate demand in such a way that actually places load across the various components of your home server.
  • This is the total number of cores available to the VM from the host ESXi server, which I am running on top of a GMKtek M5 with a Ryzen 5700U processor.

Recently, I have been reviewing a lot of mini PCs in the home lab and even transitioning some of my workloads to these small footprint devices. In general, they perform really well. However, in testing for stability and other factors on this platform, especially with hybrid CPU configurations, I wanted to take look at home server stress test solutions to really put the heat on the hardware to make sure evertyhing is stable and performs as expected.

Home Server Stress Testing

A home server can run a wide range of services. These services can include file sharing and data storage to more complex service like running web applications or hosting a game server. The purpose of a stress test is to simulate high-demand scenarios that push your home server’s CPU, RAM, disk storage, and network capabilities to their limits.

Running a stress test requires the right tools for the job to simulate demand in such a way that actually places load across the various components of your home server.

Tools for stress testing your server

There are quite a few tools that are free and open-source found in Linux (can be installed without ads or an account and you don’t have to sign in, etc) that allow stress testing to evaluate performance. These include tools that test your CPU and RAM, stress tests to disk I/O, and tools to simulate network throughput. These tools may include stresssysbenchiperf3, and hdparm.

There is another tool I would like to introduce you to if you haven’t seen or heard about it as well. It is the S-TUI tool. The neat thing about this tool is that it provides a graphical interface of sorts that allows you to either monitor or stress the machine you are running it on.

Installing S-TUI

Installing S-TUI in Ubuntu is easy. You can do that with the single command:

sudo apt install s-tui -y
Installing s tui tool for stressing your linux machine
Installing s tui tool for stressing your linux machine

Installing the stress tool

To use the S-TUI tool for running stress tests, we need to install the stress tool. If you don’t install the stress module, you will see this by default when you launch s-tui:

The stress tool is not yet installed
The stress tool is not yet installed

We can install the stress tool with the following:

sudo apt install stress -y
Running the command to install the stress tool 1
Running the command to install the stress tool 1

Once we install the stress tool, we will see this option available to us now when launching the s-tui tool.

The stress tool is now available in s tui
The stress tool is now available in s tui

As a side note, you can run the stress utility on its own without the S-TUI tool. You can see the parameters if you run the stress command:

stress
Running the stress command to see the parameters
Running the stress command to see the parameters

Get your CPU cores from Linux

Before we start load testing, we want to know how many cores we have configured and available to us in Linux. One of the easy ways to see the number of cores assigned to your VM or on your physical machine is using the command:

nproc

With nproc, you can quickly get the number of cores available. Below, you can see I have assigned 16 cores to my Ubuntu Server 22.04 LTS virtual machine. This is the total number of cores available to the VM from the host ESXi server, which I am running on top of a GMKtek M5 with a Ryzen 5700U processor.

Running the nproc command
Running the nproc command

Below, you can see the configuration for the virtual machine I have configured for CPU stress testing.

Viewing the cores configured in the esxi host
Viewing the cores configured in the esxi host

CPU Load Testing with the S-TUI tool

Using the S-TUI tool, you can stress your CPU in your virtual machines or your bare metal machine running Linux. When you install the S-TUI tool, you can then launch it from the command line with the intuitive command:s-tui

Now let’s select the Stress option. We can see the CPU graphs for used % go to 100%. For comparison you can see the image below with the green bars, compared to the image above.

The stress test begins and we see the cores at 100 percent
The stress test begins and we see the cores at 100 percent

Also, if we monitor this in the vSphere Client if the host is connected to vCenter Server, or if we are connected directly to the host client, we see we have effectively saturated the CPUs with utilization.

All the cores are saturated and the host has 100 percent usage
All the cores are saturated and the host has 100 percent usage

After a bit, I was able to even get the warning in the vSphere Client of host CPU usage.

Host cpu usage alarm in the vsphere client
Host cpu usage alarm in the vsphere client

By running a CPU stress test on your server for a period of time you can gauge the CPU’s stability and thermal performance, power consumption, etc. It helps to ensure you don’t see overheating or throttling.

RAM Stress Testing

RAM is another critical component that affects tje pverall speed and responsiveness of your server. Stress testing RAM involves filling it to capacity and performing read/write operations to check for errors and stability issues and the need for any diagnostics. 

We can use the stress tool from the command line. For instance, if you have 4 gigs of memory assigned, you can use the following to stress test your memory allocated.

stress --vm 4 --vm-bytes 1024M
Stressing your configured memory using the stress tool
Stressing your configured memory using the stress tool

In the S-TUI tool options, we can also affect the memory as well. Note the options:

  • Bytes per malloc*
  • Touch a byte after * bytes
  • Sleep time between free
  • Dirty the memory
More memory testing options and configuration in s tui
More memory testing options and configuration in s tui

Disk stress testing

Disk stress testing is also extremely important. Especially if you are running virtualization solutions that rely on quick disk access, it is good to find any problems before you begin running your workloads and accessing files or running block storage. It can evaluate both the read and write speeds, latency, response time, etc of your storage media, including HDDs, SSDs, and even NVMe drives.

Generally, there are a large number of benchmarking tools and disk speed tests. You can use the more traditional type tools like the CrystalDiskMark utility. Below is a screenshot of the results of a disk test I had ran quite some time ago. The version is likely old in the screesnhot at this point.

Running the crystaldiskmark tool for disk performance testing
Running the crystaldiskmark tool for disk performance testing

For HCI solutions, you can’t really run something like CrystalDiskMark. HCI solutions built on top of object storage need a benchmarking solution that is built for that use case and the scalability of object storage. 

The HCIbench solution I have written about before is a great way to benchmark your VMware vSAN solution, if you are running VMware. 

Read my HCI Bench post when I introduced Intel Optane to my home lab: Configure HCI Bench for VMware vSAN Performance Testing. HCI Bench has a nice graphical user interface (GUI) for your HCI test.

Running hci bench for distributed storage testing
Running hci bench for distributed storage testing

Network Throughput

If along with a new home server, you have upgraded your network to 10 gig or even 25 gig, you will likely want to know you are getting the throughput expected. 

Testing network performance involves measuring both the upload and download speeds, as well as the stability of connections over time. There is a widely recognized network tool called iperf3 that allows simulating high-traffic between servers.

Essentially, you setup one server as the iperf3 server listener, and the other is setup as the iperf3 client.

Check out my post here covering how to use iperf to test network performance between hosts: Run Basic Network Speed Bandwidth Throughput Test Between ESXi Hosts.

Iperf3 results on the server side displayed
Iperf3 results on the server side displayed

Power Consumption

An often overlooked aspect of home server testing is power consumption. A server that’s efficient under load not only saves on electricity bills but also generates less heat and has lower temperature readings, needing less cooling. This helps with the lifespan (endurance) of the components and many other benefits. 

Monitoring power usage during the torture test provides insights into how well the server performs under different stress levels. This is one test that you will need a piece of hardware to really test effectively. I have a very cheap power meter I snagged on Amazon for testing power consumption.

Watt meter from amazon to check power consumption
Watt meter from amazon to check power consumption

You can use a power meter like this in conjunction with the CPU torture test to get an idea of what kind of power consumption you are seeing running a worst-case scenario (100% CPU) so you know what it will amount to.

Wrapping up home server stress testing

Running repeated torture tests, especially after making changes to your server’s hardware or software configuration helps you understand how performance and power profiles might change. It can also help with an analysis to understand if something knew might affect reliability. 

System optimization using various torture tests and performance benchmarks can help “burn in” a new server, and definitely understand the performance you can expect. As mentioned several times, it also helps to discover potential stability issues before you place workloads on them.

Hopefully this post has been enlightening on a few resources you can use for torture testing for performance, diagnostics and troubleshooting, and power consumption. Keep in mind, there are other benchmarking areas that may apply in your home server environment, such as graphics cards (gpu) benchmarking or web server load testing (apache and others). There is likely a tool for your needs that has already been developed outside of the ones we have looked at in this post.

Subscribe to VirtualizationHowto via Email 🔔

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com and has over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, Brandon has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family.

Related Articles

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.