Hardware Benchmarks

Benchmarks help us in testing and quantification of our hardware infrastructure. Consistently performant hardware infrastructure forms the base of a high performance data structure. A cloud deployment or an on-prem high density virtualisation platform shares its compute and storage across multiple hosts. This typically causes hot and cold patches in performance.

This document discusses standard hardware testing and benchmarking tools that can be used to benchmark hardware before a deployment.

Testing Process

When to test, how to ensure consistent performance.

  1. Test and benchmark your hardware before you install, to ensure the underlying hardware fulfils expecations. Initial results must satisfy or exceed the performance benchmarks indicated in scaling datanodes or your custom solution design document.
  2. Repeat tests if you find performance related issues while in operations and compare the results with the initial benchmarking.

Benchmarking

This section will cover in detail the tools and the commands used to benchmark hardware.

Testing tool

Choosing the right tool that will remain consistent across tests is extremely important, for DNIF we have selected sysbench which has been available and trusted for years. Sysbench is also a part of the standard linux stack so it can be installed using the following command.

sudo apt install sysbench

CPU Benchmarking

CPU Benchmarking using a single thread

sysbench --test=cpu --num-threads=1 --cpu-max-prime=20000 run

CPU Benchmarking using multiple (we will use 8) threads

sysbench --test=cpu --num-threads=8 --cpu-max-prime=20000 run

The test metric to be measured are

  • Total run time in seconds
  • Total number of events executed
  • CPU events executed

Memory Benchmarking

Benchmarking memory using a single thread

sysbench --test=memory --num-threads=1 run

Benchmarking memory using multiple (we will use 8) threads

sysbench --test=memory --num-threads=8 run

The test metric to be measured are

  • Operations per second
  • Throughput

File IO Benchmarking

Benchmarking file IO is done in three parts - create a test file for a specific size, conduct your test on the file and finally delete the file to return the used disk space back to operations.
Preparing for benchmarking

sysbench --test=fileio --file-total-size=150G prepare

Conducting the test

sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --max-requests=0 run

Cleaning up after the test

sysbench --test=fileio --file-total-size=150G cleanup

The test metric to be measured are

  • Write speed during test prepare
  • Read and write operations per second
  • Read and write throughput

Benchmark samples

We have collected some samples to indicate what the results of these tests look like on available cloud infrastructures.

The samples have been generated from the following test setups

Test Metric DO REF 16vCPU DO REF 32vCPU AWS Netmon Azure Netmon(SSD) Azure Netmon (Standard SSD) DO 4 shared vCPU DO 8 shared vCPU Azure Cloud Internal16(B-series) Azure Cloud Internal 32(F-seriesv2)
CPU Single Thread Total time (s)

10.0014 ✅

10.0016 ✅

10.0002 10.0004 10.0009s 10.0024 10.0011 10.0012s 10.0011s
  Total events

4658 ✅

4607 ✅

4612 3236 3316 2580 2500 3062 4347
  CPU Events / sec

465.65 ✅

460.56 ✅

461.13 323.53 331.49 257.87 249.91 306.08 434.59
CPU Multi Thread Total time (s)

10.0012 ✅

10.0019 ✅

10.0029 10.0032 10.0022 10.0061 10.004 10.0029s 10.0021s
  Total events

35158 ✅

36426 ✅

25634 24593 25209 10498 18848 24518 34156
  CPU Events / sec

3514.82 ✅

3641.14 ✅

2562.18 2457.93 2519.77 1048.93 1883.61 2450.51 3414.22
Memory Single Thread Throughput (MB/s)

4969.27 ✅

5298.52 ✅

5772.9 9608.49 4082.95 2816.15 2889.8 4013.92 5196.55
  Operations / sec

5088537.19 ✅

5425685.2 ✅

59122793 9839093.85 4180224.62 28845219 2959155.46 4110249.09 5321272.09
Memory Multi Thread Throughput (MB/s)

7217.27 ✅

7791.13 ✅

7435.38 8192.92 8338.35 5893.93 8673.99 8422.64 7045.25
  Operations / sec

7390489.56 ✅

7978120.44 ✅

76149504 8389545.66 8538467.96 6035383.23 8882162.08 8624780.2 7214336.11
File IO Operations (Random Read Write) Read / sec

2745.78 ✅

5252.33 ✅

1468.03 4065.71 324.99 449.06 760.13 365.45 310.50
  Write / sec

1830.52 ✅

3501.56 ✅

978.69 2710.47 216.59 299.37 506.76 243.63 207.00
  fsyncs / sec

5868.46 ✅

11205.08 ✅

3138.09 8684.41 702.03 970.57 1627.41 788.41 664.59
File IO Throughput (Random Read Write) Read MB / sec

42.90 ✅

82.07✅

22.94 63.53

5.08 ❌

7.02❌

11.88 ❌

5.71❌

4.85 ❌

  Write MiB / sec

28.60✅

54.71✅

15.29 42.35

3.38 ❌

4.68 ❌

7.92 ❌

3.81 ❌

3.23 ❌

Disk Write Speed Write MB/sec

836.41 ✅

847.68 ✅

          46.67 233.23