Checking server disks performance in CentOS 7

Disk benchmarking is the process of running software that accurately measures transfer speeds under various disk access scenarios (sequential, random 4K, deep queue depth, etc.). The aim is to produce figures in MBps that summarize the speed characteristics of a disk.

There are a plenty of software options available for CentOS 7, which you can easily install and run to to benchmark your server drives.

We assume that there are two kind of parameters that give a complete overview in disk benchmarking:

  • IOPS (I/O Per Second)
  • Latency

In this article we will explain how to measure IOPS with fio, and disk latency with IOPing on a basic RHEL 7 system.

Let’s install FIO:

# yum install fio

If nothing happens, you should link a repo:

# wget
# yum localinstall epel-release-latest-7.noarch.rpm

Request FIO to test with following command and parameters:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64

The server will start creating 4Gb file and do read/write procedures. When testing will be done, check the report. In our case we have the following results:

test: Laying out IO file (1 file / 4096MiB)
Jobs: 1 (f=1): [m(1)][100.0%][r=83.6MiB/s,w=27.8MiB/s][r=21.4k,w=7118 IOPS][eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=16663: Thu Apr 04 23:43:45 2019
   read: IOPS=20.7k, BW=80.9MiB/s (84.9MB/s)(3070MiB/37931msec)
   bw (  KiB/s): min=27808, max=88088, per=100.00%, avg=83084.92, stdev=10290.14, samples=75
   iops        : min= 6952, max=22022, avg=20770.96, stdev=2572.53, samples=75
  write: IOPS=6924, BW=27.0MiB/s (28.4MB/s)(1026MiB/37931msec)
   bw (  KiB/s): min= 9248, max=29819, per=100.00%, avg=27762.60, stdev=3403.83, samples=75
   iops        : min= 2312, max= 7454, avg=6940.33, stdev=850.90, samples=75
  cpu          : usr=16.08%, sys=80.31%, ctx=2573, majf=0, minf=22
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwt: total=785920,262656,0, short=0,0,0, dropped=0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=80.9MiB/s (84.9MB/s), 80.9MiB/s-80.9MiB/s (84.9MB/s-84.9MB/s), io=3070MiB (3219MB), run=37931-37931msec
  WRITE: bw=27.0MiB/s (28.4MB/s), 27.0MiB/s-27.0MiB/s (28.4MB/s-28.4MB/s), io=1026MiB (1076MB), run=37931-37931msec

Disk stats (read/write):
    md126: ios=784396/262219, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=392960/262739, aggrmerge=0/27, aggrticks=121303/62780, aggrin_queue=183628, aggrutil=98.81%
  sda: ios=417381/262739, merge=0/27, ticks=126959/28128, in_queue=154557, util=96.55%
  sdb: ios=368539/262739, merge=0/27, ticks=115648/97433, in_queue=212700, util=98.81%

After checking IOPS we will have to calculate latency rates. To run a latency checker install IOPing to the server:

# yum install ioping

Now execute the IOPing with option ‘-c 100’:

# ioping -c 100 .

* The [-c 100] option is the number request ioping will make

The output will show you results. Closing line in terminal is showing the latency rates of the server disk.

Finally in this articles we installed and checked 2 useful tools which can give information and performance of server disks (speed and latencies).

Looking for a custom solution?

Our technicians can provide you with the best custom made solutions on the market, no matter whether you're a small business or large enterprise.

Get in touch