Benchmark HDD vs SSD vs NVME inside the old XEON server
This is a pretty dummy benchmark of 3 identical servers with Intel Xeon E3-1275 v5, 64GB ECC RAM and 3 different storage types – spindle HDD, sata SSD and NVME drives. All three servers had their storage in a magnificent software RAID1, had Debian12 and in all other terms had the same configuration options.
This CPU and server are almost 8 years now (CPU release date is in 2015) and definitely can not be considered as very powerful in our days. But if you consider the price – some providers offer it for as low as 30 euro a month (and that includes internet, power and defective hardware replacement) – I would not call this deal so bad – especially if you need a server for occasional tasks, not-so demanding websites or as backup solution. (The HDD-version of this server had two 4Tb drives onboard). While being a bit old – you still get 4 physical cores running 3.6Ghz, 8 threads and DDR4 support.
The main purpose of this benchmark is to see – how much this CPU would benefit from super-fast NVME storage or suffer from the old-school spindle drives.
Benchmark methodology and bla bla bla
There should be some plan, right. So with this case, and I will try to stick to it with future benchmarks, I have planned the following steps:
- CPU benchmark with sysbench – 1 thread, 2 threads, 4 threads, 8 threads, 16 threads, 32 threads and 80 threads (just because there are 80-core single socket CPUs). This will show us how well CPU can handle huge amount of simultaneous commands and calculations.
- Storage benchmark with sysbench – storage preparation (4 threads cooking up 20gb of random data), file operations and throughput – again with a single thread, 4 simultaneous threads, 8 threads and 16 threads.
- Various storage benchmarks with different block/file sizes using Yet Another Bench Script. The same tool will do test your server with Geekbench6 and more! If you haven’t seen this script – check it out – it’s really amazing and really that simple to use!
- Install Apache2, PHP FPM, MariaDB and use wpbenchmark.io plugin to see, how does plain WordPress feels on that that server. Run one benchmark when server is empty and idling, then simulate medium load and run another benchmark and finally do the same, but under simulated heavy load. I use stress tool to simulate CPU, storage, RAM memory fake heavy tasks.
- Finally bechmark WordPress fontpage using apache benchmark (ab) tool. Use different number of active concurrent connections (2, 5, 20, 50) and repeat it when server is without any extra load, with medium load and under heavy faked load.
I will not claim, that this benchmark scenario is the best. Real life is always different from the one in the laboratory. But at least we all might get some insight into what might happen and how. And if you have better ideas or would like to correct my course – I will always be happy to get an email from you!
Sysbench CPU test
Very simple. We have the same CPU in all 3 servers and since it is purely CPU-benchmark part – they really show pretty much identical results. Performance grows up to the number of available threads (4 cores, 8 threads) and stays pretty much the same (to be honest, I was expecting some drop, due to higher number of active processes, I was expecting, that it will start lagging.. )
Sysbench storage preparation
With sysbench you have to “prepare” your random data for other tests before you run them. This step basically generates some files with random data and gives results – how fast it was able to do it.
So this is where we can start to see the difference!
You can clearly see, that spindle drives (blue color) is slower – it takes more time to prepare same amount of data and it’s speed is slower. But to be honest – I was expecting, that NVME (orange) drives will be much much more faster, than SATA-SSD. The difference on these graphs is absolutely small. It looks, like the NVME is actually NVME-over-SATA, if that is even possible.
And to be honest - the responsiveness of server with SSD drives was actually faster, than the one's with NVME drives. The same yum update did execute faster on SSD-driven server, but I have no proofs for that..
Sysbench storage testing
Well, it failed. Number, that sysbench has produced do not correlate with any logic. The HDD drives showed mere 1MB/s, the SSD drives showed up to 200MB/s and NVME hardly reached just 20MB/s.
What am I doing wrong? I could not figure out and it would be fair to skip this test for now, at least until I figure the reason for such inconsistent results. Therefore I am not including any graphs, just numbers.
Yet Another Bench Script
For SSD and NVME drives reading and writing speeds are quite constant regardless the block size, with a gentle improvement, as block size grows. For HDD drives, indeed – the bigger file and bigger file block you have – the faster they will be able to finish the job. Also please note, that 400MB/s for NVME is definitely lower it’s technological limit – which means, that these old XEON servers are not capable of using full potential of NVME drives. For SATA SSD – I would also expect higher speeds, but.. it is what it is.
4k block IOPS for SSD and NVME are counted in thousands and made these graphs look weird. As you can see, still NVME show higher results, even though number of IOPS, as expected, drop as the workload increase.
Full Geekbench results
- server with HDD drives – https://browser.geekbench.com/v6/cpu/2645277
- server with SSD drives – https://browser.geekbench.com/v6/cpu/2645300
- server with NVME drives – https://browser.geekbench.com/v6/cpu/2645275
As expected, CPU performance does not differ, as these servers have identical CPU models. Performance drops, as server is being put under more load.
Situation and performance changes, as we move toward more filesystem specific tests. As you can see, wpbenchmark performance scores are high, when there is no load on the server – this particularly is due to linux filesystem cache and buffers. As we add more load to the servers (and that includes filesystem load, CPU load and RAM load) situation changes and server with HDD scores significantly lower, especially for large amount of small files. As for comparison of SSD and NVME drives – looks like in particular situation NVME wins with higher IO performance.
MySQL import is the most CPU and storage intense task – mainly due to InnoDB table structure and redundancy. Server with HDD storage is slow even without any load on the server and it’s performance drops no zero under heavy load. But quite unexpected to me was terribly poor NVME performance in this test. And this is what I have mentioned – even though synthetic benchmarks show, that NVME delivers more IO and more data bandwidth – some tasks in console (e.g. server install, OS updates) were actually faster on a server with SSD storage. I have feeling, that it has to do something with the NVME or PCI-E port on this particular old Xeon server.
Other WPBenchmark database tests are more or less predictable. In must setup I am using MariaDB database server and main difference from MySQL is that MariaDB still supports query cache. That significantly improves database server performance even for servers with slow storage. I will make a separate review and comparison of different MySQL-like servers.
This is combined single graph – I run benchmark with different number of concurrent connections and under different server load. By server load I mean extra generated (using stress tool) load on various server subsystems (CPU, disk, memory), which is not related to web request processing.
Summarizing apache benchmark results:
- if your page is rarely visited – it does not matter much, if your server is busy or not;
- head load on the server impacts your page load a lot, so choose your provider wisely. This applies a lot of VPS hosting, as many virtual servers share same physical resources and at the end your server will get a fraction of what hardware can provide.
- for WordPress – disk speed is important, but CPU speed and performance is even more important. Once your server becomes busy with other tasks – not much is left for WordPress and its performance drops and just faster disks – won’t solve the problem. As you can see – under heavy load – all three servers, regardless their storage – struggle a lot.
We have compared 3 identical servers with different storage options. Servers itself were very old 4 core Xeons.
My tests showed, that with old hardware (CPU, motherboard) – advantage of NVME is not so obvious. In several scenarios SATA SSD was performing better.
Server with large amount of RAM memory and spindle HDD drives will still work fine and provide significantly more disk space. All three tested servers were priced similarly, but the one with HDD drives offered 4TB storage, while both SSD and NVME servers only had 500GB onboard.
Even now in 2023 this old Xeon can run and host webpages just fine. Servers, that I had on test today priced approx. 30 eur per month. I would say – this is price of a relatively large VPS. But meanwhile VPS is usually hosted on a server, that shared resources between other servers – with a dedicated physical server – all these resources are just for you. Advantage for virtual server on shared resources could be ability to resize it later, but if that is not the case – physical dedicated server for this price is a bargain – not the fastest CPU, but lots of resources, that can handle heavier load better without performance degradation.