# Check the IOPS performance

## Overview <a href="#tong-quan" id="tong-quan"></a>

To check the IOPS (Input/Output Operations Per Second) performance on a Volume, you can use the tool`fio.`

<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Warning**

* Performing IOPS performance testing can impact your Volume. We recommend backing up your data by taking a snapshot of the Volume or creating a new Volume with no data for testing. For more information, see the [Snapshot](https://docs-vngcloud-vn.translate.goog/vng-cloud-document/vn/vserver/compute-hcm03-1a/snapshot) section .
  {% endhint %}

## **Steps to follow** <a href="#kiemtrahieusuatiops-kiemtrahieusuatdongthoirandomread-and-randomwrite" id="kiemtrahieusuatiops-kiemtrahieusuatdongthoirandomread-and-randomwrite"></a>

{% hint style="info" %}
Below are detailed instructions and sample results for 3 performance tests of IOPS Read and Write simultaneously, Read only, Write only to Volume. Specifically, some configurations we use are as follows:

* **Region:** HCM-03
* **OS Images:** Ubuntu
* **Ubuntu Version:** 1\_Ubuntu-22.04x64
* **Instance** : s-general-4x8
* **Volume Type:** NVME
* **IOPS:** 5000 and 10000
* **Volume Size:** 100 GB
  {% endhint %}

### **Random read & write performance test** <a href="#kiemtrahieusuatiops-kiemtrahieusuatdongthoirandomread-and-randomwrite-1" id="kiemtrahieusuatiops-kiemtrahieusuatdongthoirandomread-and-randomwrite-1"></a>

1. **Create a server with NVME** Volume drive with IOPS **5000** at the vServer home page:

<figure><img src="broken-reference" alt="" width="563"><figcaption></figcaption></figure>

2. **Connect to** your Server. For more information see [the Connect to a Virtual Server](https://docs-vngcloud-vn.translate.goog/vng-cloud-document/vn/vserver/compute-hcm03-1a/server/ket-noi-vao-may-chu-ao) guide .
3. Run the following command to install **FIO** :

* **Ubuntu/Debian** :

  ```bash
  sudo apt update
  sudo apt install fio -y
  ```
* **CentOS/RHEL** :

  ```bash
  sudo yum install fio -y
  ```

4. Create a 4GB file, then run the command below to **read/write simultaneously** with 4KB blocksize at a ratio of 75% - 25% (ie 3 read/1 write) and perform 64 tasks at the same time (The ratio of 3:1 is very popular and approximates current database types):

* With only 1 job running, you can use the command:

```bash
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=TGS --filename=TGS --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75 --numjobs=1
```

* With 8 jobs running concurrently, you can use:

```bash
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=TGS --filename=TGS --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75 --numjobs=8
```

Additionally, you can change some parameters according to the conditions described below:

* `--randrepeat=1:`Use the same random seed for tests.
* `--ioengine=libaio:`Specifies I/O Engine, libaio (Linux asynchronous I/O) is an asynchronous I/O method, suitable for I/O performance tests on Linux.
* `--direct=1: Bỏ`through the operating system cache when performing I/O.
* `--gtod_reduce=1:`Reducing the precision of the timestamp (reducing the number of calls `gettimeofday`), reduces the performance impact and improves the accuracy of the test.
* `--name=TGS:`Test name
* `--filename=TGS:`Test file name
* `--iodepth=64:` The queue depth is 64, meaning that a maximum of 64 I/O requests can be waiting to be processed at the same time.
* `--rwmixread=75:` The ratio between reads and writes is 75:25.
* `--readwrite=randrw`: Perform random reads/writes.
* `--size=4G`: Total size of data to be checked.
* `--bs=blocksize=4k`: Block size (4KB is common for IOPS testing).
* `--numjobs=8`: Number of jobs running concurrently.

5. Below are the recorded results (with 4 core 8 GB configuration)

* When you set **numjob = 1** :

```bash
TGS: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [m(1)][100.0%][r=14.5MiB/s,w=5196KiB/s][r=3709,w=1299 IOPS][eta 00m:00s]
TGS: (groupid=0, jobs=1): err= 0: pid=66983: Fri Dec 27 08:45:29 2024
  read: IOPS=3748, BW=14.6MiB/s (15.4MB/s)(3070MiB/209636msec)
   bw (  KiB/s): min=14480, max=17728, per=100.00%, avg=15006.60, stdev=226.44, samples=418
   iops        : min= 3620, max= 4432, avg=3751.65, stdev=56.61, samples=418
  write: IOPS=1252, BW=5012KiB/s (5132kB/s)(1026MiB/209636msec); 0 zone resets
   bw (  KiB/s): min= 4536, max= 6256, per=100.00%, avg=5015.60, stdev=190.53, samples=418
   iops        : min= 1134, max= 1564, avg=1253.90, stdev=47.63, samples=418
  cpu          : usr=1.06%, sys=6.39%, ctx=939035, majf=0, minf=7
  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 rwts: total=785920,262656,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=14.6MiB/s (15.4MB/s), 14.6MiB/s-14.6MiB/s (15.4MB/s-15.4MB/s), io=3070MiB (3219MB), run=209636-209636msec
  WRITE: bw=5012KiB/s (5132kB/s), 5012KiB/s-5012KiB/s (5132kB/s-5132kB/s), io=1026MiB (1076MB), run=209636-209636msec

Disk stats (read/write):
  sda: ios=785024/262487, merge=0/48, ticks=12943132/437608, in_queue=13380944, util=100.00%
```

* When you set **numjob = 8:**

```bash
TGS: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
...
fio-3.28
Starting 8 processes
Jobs: 1 (f=1): [_(1),m(1),_(6)][100.0%][r=14.5MiB/s,w=4960KiB/s][r=3719,w=1240 IOPS][eta 00m:00s]
TGS: (groupid=0, jobs=1): err= 0: pid=1454: Fri Dec 27 08:37:31 2024
  read: IOPS=474, BW=1899KiB/s (1944kB/s)(3070MiB/1655679msec)
   bw (  KiB/s): min=  680, max= 3712, per=12.65%, avg=1899.92, stdev=364.08, samples=3309
   iops        : min=  170, max=  928, avg=474.92, stdev=91.05, samples=3309
  write: IOPS=158, BW=635KiB/s (650kB/s)(1026MiB/1655679msec); 0 zone resets
   bw (  KiB/s): min=  152, max= 1336, per=12.66%, avg=634.95, stdev=141.81, samples=3309
   iops        : min=   38, max=  334, avg=158.71, stdev=35.45, samples=3309
  cpu          : usr=0.13%, sys=0.43%, ctx=276151, majf=0, minf=7
  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 rwts: total=785920,262656,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1455: Fri Dec 27 08:37:31 2024
  read: IOPS=468, BW=1874KiB/s (1919kB/s)(3067MiB/1676092msec)
   bw (  KiB/s): min=  608, max=14436, per=12.47%, avg=1872.46, stdev=474.65, samples=3350
   iops        : min=  152, max= 3609, avg=468.05, stdev=118.67, samples=3350
  write: IOPS=157, BW=629KiB/s (644kB/s)(1029MiB/1676092msec); 0 zone resets
   bw (  KiB/s): min=  176, max= 5154, per=12.54%, avg=628.25, stdev=172.93, samples=3350
   iops        : min=   44, max= 1288, avg=157.03, stdev=43.22, samples=3350
  cpu          : usr=0.16%, sys=0.42%, ctx=290477, majf=0, minf=9
  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 rwts: total=785179,263397,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1456: Fri Dec 27 08:37:31 2024
  read: IOPS=471, BW=1885KiB/s (1931kB/s)(3070MiB/1667591msec)
   bw (  KiB/s): min=  608, max= 3664, per=12.56%, avg=1886.29, stdev=358.69, samples=3333
   iops        : min=  152, max=  916, avg=471.51, stdev=89.69, samples=3333
  write: IOPS=157, BW=630KiB/s (645kB/s)(1026MiB/1667591msec); 0 zone resets
   bw (  KiB/s): min=  200, max= 1304, per=12.58%, avg=630.13, stdev=139.36, samples=3333
   iops        : min=   50, max=  326, avg=157.50, stdev=34.83, samples=3333
  cpu          : usr=0.16%, sys=0.42%, ctx=279562, majf=0, minf=9
  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 rwts: total=786007,262569,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1457: Fri Dec 27 08:37:31 2024
  read: IOPS=471, BW=1884KiB/s (1930kB/s)(3071MiB/1668845msec)
   bw (  KiB/s): min=  704, max= 4472, per=12.56%, avg=1885.38, stdev=367.18, samples=3336
   iops        : min=  176, max= 1118, avg=471.28, stdev=91.82, samples=3336
  write: IOPS=157, BW=629KiB/s (644kB/s)(1025MiB/1668845msec); 0 zone resets
   bw (  KiB/s): min=  208, max= 1384, per=12.56%, avg=629.35, stdev=138.18, samples=3336
   iops        : min=   52, max=  346, avg=157.31, stdev=34.54, samples=3336
  cpu          : usr=0.14%, sys=0.43%, ctx=279931, majf=0, minf=8
  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 rwts: total=786156,262420,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1458: Fri Dec 27 08:37:31 2024
  read: IOPS=469, BW=1877KiB/s (1923kB/s)(3072MiB/1675283msec)
   bw (  KiB/s): min=  568, max= 7304, per=12.51%, avg=1878.59, stdev=429.34, samples=3349
   iops        : min=  142, max= 1826, avg=469.58, stdev=107.35, samples=3349
  write: IOPS=156, BW=626KiB/s (641kB/s)(1024MiB/1675283msec); 0 zone resets
   bw (  KiB/s): min=  144, max= 2320, per=12.50%, avg=626.56, stdev=158.62, samples=3349
   iops        : min=   36, max=  580, avg=156.61, stdev=39.64, samples=3349
  cpu          : usr=0.15%, sys=0.42%, ctx=288230, majf=0, minf=8
  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 rwts: total=786322,262254,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1459: Fri Dec 27 08:37:31 2024
  read: IOPS=477, BW=1909KiB/s (1954kB/s)(3073MiB/1648859msec)
   bw (  KiB/s): min=  600, max= 3720, per=12.72%, avg=1909.87, stdev=363.42, samples=3296
   iops        : min=  150, max=  930, avg=477.41, stdev=90.88, samples=3296
  write: IOPS=158, BW=635KiB/s (650kB/s)(1023MiB/1648859msec); 0 zone resets
   bw (  KiB/s): min=  104, max= 1312, per=12.68%, avg=635.52, stdev=138.71, samples=3296
   iops        : min=   26, max=  328, avg=158.85, stdev=34.67, samples=3296
  cpu          : usr=0.14%, sys=0.42%, ctx=276105, majf=0, minf=9
  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 rwts: total=786765,261811,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1460: Fri Dec 27 08:37:31 2024
  read: IOPS=471, BW=1887KiB/s (1932kB/s)(3072MiB/1667012msec)
   bw (  KiB/s): min=  688, max= 3864, per=12.57%, avg=1887.81, stdev=350.52, samples=3332
   iops        : min=  172, max=  966, avg=471.89, stdev=87.66, samples=3332
  write: IOPS=157, BW=629KiB/s (644kB/s)(1024MiB/1667012msec); 0 zone resets
   bw (  KiB/s): min=  184, max= 1384, per=12.56%, avg=629.62, stdev=136.59, samples=3332
   iops        : min=   46, max=  346, avg=157.38, stdev=34.14, samples=3332
  cpu          : usr=0.13%, sys=0.44%, ctx=276590, majf=0, minf=8
  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 rwts: total=786314,262262,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=1461: Fri Dec 27 08:37:31 2024
  read: IOPS=469, BW=1880KiB/s (1925kB/s)(3074MiB/1674605msec)
   bw (  KiB/s): min=  600, max= 5608, per=12.52%, avg=1880.19, stdev=423.17, samples=3347
   iops        : min=  150, max= 1402, avg=469.99, stdev=105.81, samples=3347
  write: IOPS=156, BW=625KiB/s (640kB/s)(1022MiB/1674605msec); 0 zone resets
   bw (  KiB/s): min=  168, max= 2088, per=12.48%, avg=625.04, stdev=159.39, samples=3347
   iops        : min=   42, max=  522, avg=156.23, stdev=39.84, samples=3347
  cpu          : usr=0.14%, sys=0.44%, ctx=287417, majf=0, minf=8
  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 rwts: total=786981,261595,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=14.7MiB/s (15.4MB/s), 1874KiB/s-1909KiB/s (1919kB/s-1954kB/s), io=24.0GiB (25.8GB), run=1648859-1676092msec
  WRITE: bw=5009KiB/s (5129kB/s), 625KiB/s-635KiB/s (640kB/s-650kB/s), io=8199MiB (8597MB), run=1648859-1676092msec

Disk stats (read/write):
  sda: ios=6279077/2104043, merge=11772/10995, ticks=397920368/24398012, in_queue=422384834, util=100.00%
```

{% hint style="info" %}
**Conclude:**

* When increasing the number of jobs ( `numjob=8`), **the total IOPS** (IOPS aggregated from all jobs) is guaranteed to reach **IOPS = 5000** .
* With `numjob=1`, **Read IOPS: 3748** and **Write IOPS: 1252.** This result ensures that **IOPS = 5000** is reached .
  {% endhint %}

### **Random read performance test** <a href="#kiemtrahieusuatiops-kiemtrahieusuatrandomread" id="kiemtrahieusuatiops-kiemtrahieusuatrandomread"></a>

1. Perform steps 1,2,3 similar to the case of Testing performance simultaneously random read and random write.
2. Create a 4GB file, then run the command below to only read **4KB** blocksize at 100% (ie all read only) and perform 64 tasks at once:

* With only 1 job running, you can use the command:

```bash
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=TGS --filename=TGS --bs=4k --iodepth=64 --size=4G --readwrite=randread --numjobs=1
```

* With 8 jobs running concurrently, you can use:

```bash
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=TGS --filename=TGS --bs=4k --iodepth=64 --size=4G --readwrite=randread --numjobs=8
```

3. Below are the results recorded:

* When you set **numjob = 1** :

```bash
TGS: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [r(1)][100.0%][r=19.5MiB/s][r=5003 IOPS][eta 00m:00s]
TGS: (groupid=0, jobs=1): err= 0: pid=66992: Fri Dec 27 08:55:43 2024
  read: IOPS=5002, BW=19.5MiB/s (20.5MB/s)(4096MiB/209618msec)
   bw (  KiB/s): min=19864, max=23992, per=100.00%, avg=20025.43, stdev=195.36, samples=418
   iops        : min= 4966, max= 5998, avg=5006.36, stdev=48.84, samples=418
  cpu          : usr=1.01%, sys=6.15%, ctx=915643, majf=0, minf=71
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=19.5MiB/s (20.5MB/s), 19.5MiB/s-19.5MiB/s (20.5MB/s-20.5MB/s), io=4096MiB (4295MB), run=209618-209618msec

Disk stats (read/write):
  sda: ios=1047448/18, merge=0/5, ticks=13385109/25, in_queue=13385134, util=100.00%
```

* When you set **numjob = 8:**

```bash
TGS: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
...
fio-3.28
Starting 8 processes
Jobs: 1 (f=1): [_(6),r(1),_(1)][100%][r=19.5MiB/s][r=5004 IOPS][eta 00m:00s]
TGS: (groupid=0, jobs=1): err= 0: pid=67019: Fri Dec 27 09:34:16 2024
  read: IOPS=626, BW=2508KiB/s (2568kB/s)(4096MiB/1672501msec)
   bw (  KiB/s): min=  633, max=10028, per=12.51%, avg=2508.96, stdev=569.55, samples=3344
   iops        : min=  158, max= 2507, avg=627.18, stdev=142.40, samples=3344
  cpu          : usr=0.13%, sys=0.41%, ctx=297140, majf=0, minf=70
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67020: Fri Dec 27 09:34:16 2024
  read: IOPS=629, BW=2517KiB/s (2578kB/s)(4096MiB/1666112msec)
   bw (  KiB/s): min=  768, max= 4936, per=12.56%, avg=2518.86, stdev=475.31, samples=3331
   iops        : min=  192, max= 1234, avg=629.66, stdev=118.83, samples=3331
  cpu          : usr=0.13%, sys=0.40%, ctx=286577, majf=0, minf=73
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67021: Fri Dec 27 09:34:16 2024
  read: IOPS=628, BW=2512KiB/s (2572kB/s)(4096MiB/1669595msec)
   bw (  KiB/s): min=  704, max= 4904, per=12.54%, avg=2513.51, stdev=484.30, samples=3338
   iops        : min=  176, max= 1226, avg=628.32, stdev=121.08, samples=3338
  cpu          : usr=0.14%, sys=0.40%, ctx=286580, majf=0, minf=71
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67022: Fri Dec 27 09:34:16 2024
  read: IOPS=628, BW=2513KiB/s (2573kB/s)(4096MiB/1668976msec)
   bw (  KiB/s): min=  632, max= 5048, per=12.54%, avg=2514.58, stdev=507.70, samples=3337
   iops        : min=  158, max= 1262, avg=628.59, stdev=126.93, samples=3337
  cpu          : usr=0.13%, sys=0.40%, ctx=294892, majf=0, minf=71
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67023: Fri Dec 27 09:34:16 2024
  read: IOPS=627, BW=2511KiB/s (2571kB/s)(4096MiB/1670313msec)
   bw (  KiB/s): min=  808, max= 5979, per=12.53%, avg=2511.70, stdev=508.10, samples=3339
   iops        : min=  202, max= 1494, avg=627.87, stdev=127.02, samples=3339
  cpu          : usr=0.12%, sys=0.41%, ctx=291621, majf=0, minf=71
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67024: Fri Dec 27 09:34:16 2024
  read: IOPS=627, BW=2510KiB/s (2570kB/s)(4096MiB/1670929msec)
   bw (  KiB/s): min=  832, max= 7880, per=12.53%, avg=2511.61, stdev=528.38, samples=3341
   iops        : min=  208, max= 1970, avg=627.84, stdev=132.09, samples=3341
  cpu          : usr=0.13%, sys=0.40%, ctx=291707, majf=0, minf=70
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67025: Fri Dec 27 09:34:16 2024
  read: IOPS=626, BW=2505KiB/s (2565kB/s)(4096MiB/1674276msec)
   bw (  KiB/s): min=  721, max=20024, per=12.48%, avg=2502.90, stdev=763.78, samples=3347
   iops        : min=  180, max= 5006, avg=625.67, stdev=190.95, samples=3347
  cpu          : usr=0.14%, sys=0.41%, ctx=303280, majf=0, minf=72
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67026: Fri Dec 27 09:34:16 2024
  read: IOPS=628, BW=2513KiB/s (2573kB/s)(4096MiB/1669191msec)
   bw (  KiB/s): min=  848, max= 4928, per=12.54%, avg=2514.00, stdev=513.98, samples=3337
   iops        : min=  212, max= 1232, avg=628.44, stdev=128.50, samples=3337
  cpu          : usr=0.14%, sys=0.39%, ctx=292611, majf=0, minf=72
  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 rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=19.6MiB/s (20.5MB/s), 2505KiB/s-2517KiB/s (2565kB/s-2578kB/s), io=32.0GiB (34.4GB), run=1666112-1674276msec

Disk stats (read/write):
  sda: ios=8371218/25, merge=16847/6, ticks=422350060/186, in_queue=422350252, util=100.00%
```

{% hint style="info" %}
**Conclude:**

* When increasing the number of jobs ( `numjob=8`), **the total Read IOPS** (IOPS aggregated from all jobs) is guaranteed to reach **IOPS = 5000** .
* With `numjob=1`, **Read IOPS: 5002 .** This result ensures that **IOPS = 5000** has been reached .
  {% endhint %}

### **Random write performance test** <a href="#kiemtrahieusuatiops-kiemtrahieusuatrandomwrite" id="kiemtrahieusuatiops-kiemtrahieusuatrandomwrite"></a>

1. Perform steps 1,2,3 similar to the case of Testing performance at the same time random read and random write. (To increase diversity, in this example, I will increase the IOPS of this Volume to **10000** instead of **5000,** I keep the remaining configurations the same).
2. Create a 4GB file, then run the command below to only write **with** 4KB blocksize at 100% (ie all write only) and perform 64 tasks at the same time:

* With only 1 job running, you can use the command:

```bash
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=TGS --filename=TGS --bs=4k --iodepth=64 --size=4G --readwrite=randwrite --numjobs=1
```

* With 8 jobs running concurrently, you can use:

```bash
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=TGS --filename=TGS --bs=4k --iodepth=64 --size=4G --readwrite=randwrite --numjobs=8
```

3. Below are the results recorded:

* When you set **numjob = 1** :

```bash
TGS: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [w(1)][100.0%][w=39.1MiB/s][w=10.0k IOPS][eta 00m:00s]
TGS: (groupid=0, jobs=1): err= 0: pid=67053: Fri Dec 27 09:47:50 2024
  write: IOPS=10.0k, BW=39.1MiB/s (41.0MB/s)(4096MiB/104775msec); 0 zone resets
   bw (  KiB/s): min=39824, max=47872, per=100.00%, avg=40067.29, stdev=545.02, samples=209
   iops        : min= 9956, max=11968, avg=10016.82, stdev=136.26, samples=209
  cpu          : usr=1.59%, sys=8.58%, ctx=891397, majf=0, minf=7
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
  WRITE: bw=39.1MiB/s (41.0MB/s), 39.1MiB/s-39.1MiB/s (41.0MB/s-41.0MB/s), io=4096MiB (4295MB), run=104775-104775msec

Disk stats (read/write):
  sda: ios=0/1047478, merge=0/24, ticks=0/6680115, in_queue=6680435, util=99.99%
```

* When you set **numjob = 8:**

```bash
TGS: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
...
fio-3.28
Starting 8 processes
Jobs: 1 (f=0): [_(6),f(1),_(1)][100.0%][w=44.1MiB/s][w=11.3k IOPS][eta 00m:00s]
TGS: (groupid=0, jobs=1): err= 0: pid=67058: Fri Dec 27 10:02:37 2024
  write: IOPS=1254, BW=5018KiB/s (5139kB/s)(4096MiB/835782msec); 0 zone resets
   bw (  KiB/s): min= 2669, max=12456, per=12.52%, avg=5019.11, stdev=781.23, samples=1670
   iops        : min=  667, max= 3114, avg=1254.74, stdev=195.31, samples=1670
  cpu          : usr=0.27%, sys=0.79%, ctx=269253, majf=0, minf=6
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67059: Fri Dec 27 10:02:37 2024
  write: IOPS=1261, BW=5045KiB/s (5166kB/s)(4096MiB/831365msec); 0 zone resets
   bw (  KiB/s): min= 2944, max= 7504, per=12.59%, avg=5047.65, stdev=647.34, samples=1661
   iops        : min=  736, max= 1876, avg=1261.88, stdev=161.84, samples=1661
  cpu          : usr=0.27%, sys=0.79%, ctx=262815, majf=0, minf=8
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67060: Fri Dec 27 10:02:37 2024
  write: IOPS=1259, BW=5038KiB/s (5159kB/s)(4096MiB/832552msec); 0 zone resets
   bw (  KiB/s): min= 2816, max= 8808, per=12.57%, avg=5041.52, stdev=675.10, samples=1664
   iops        : min=  704, max= 2202, avg=1260.35, stdev=168.77, samples=1664
  cpu          : usr=0.27%, sys=0.79%, ctx=263818, majf=0, minf=8
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67061: Fri Dec 27 10:02:37 2024
  write: IOPS=1264, BW=5057KiB/s (5178kB/s)(4096MiB/829428msec); 0 zone resets
   bw (  KiB/s): min= 2808, max= 7400, per=12.62%, avg=5059.43, stdev=659.53, samples=1657
   iops        : min=  702, max= 1850, avg=1264.82, stdev=164.88, samples=1657
  cpu          : usr=0.27%, sys=0.78%, ctx=263498, majf=0, minf=7
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67062: Fri Dec 27 10:02:37 2024
  write: IOPS=1253, BW=5014KiB/s (5134kB/s)(4096MiB/836601msec); 0 zone resets
   bw (  KiB/s): min= 2672, max=16752, per=12.51%, avg=5015.98, stdev=856.28, samples=1672
   iops        : min=  668, max= 4188, avg=1253.96, stdev=214.06, samples=1672
  cpu          : usr=0.29%, sys=0.78%, ctx=273352, majf=0, minf=7
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67063: Fri Dec 27 10:02:37 2024
  write: IOPS=1258, BW=5035KiB/s (5156kB/s)(4096MiB/832948msec); 0 zone resets
   bw (  KiB/s): min= 3136, max= 7400, per=12.56%, avg=5037.31, stdev=664.81, samples=1664
   iops        : min=  784, max= 1850, avg=1259.29, stdev=166.20, samples=1664
  cpu          : usr=0.26%, sys=0.80%, ctx=264159, majf=0, minf=6
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67064: Fri Dec 27 10:02:37 2024
  write: IOPS=1252, BW=5012KiB/s (5132kB/s)(4096MiB/836927msec); 0 zone resets
   bw (  KiB/s): min= 2800, max=16440, per=12.47%, avg=5000.63, stdev=849.81, samples=1672
   iops        : min=  700, max= 4110, avg=1250.12, stdev=212.45, samples=1672
  cpu          : usr=0.25%, sys=0.79%, ctx=276394, majf=0, minf=7
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64
TGS: (groupid=0, jobs=1): err= 0: pid=67065: Fri Dec 27 10:02:37 2024
  write: IOPS=1253, BW=5014KiB/s (5134kB/s)(4096MiB/836501msec); 0 zone resets
   bw (  KiB/s): min= 2680, max=13896, per=12.50%, avg=5011.05, stdev=786.42, samples=1671
   iops        : min=  670, max= 3474, avg=1252.73, stdev=196.60, samples=1671
  cpu          : usr=0.29%, sys=0.78%, ctx=272760, majf=0, minf=7
  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 rwts: total=0,1048576,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
  WRITE: bw=39.2MiB/s (41.1MB/s), 5012KiB/s-5057KiB/s (5132kB/s-5178kB/s), io=32.0GiB (34.4GB), run=829428-836927msec

Disk stats (read/write):
  sda: ios=0/8367804, merge=0/18890, ticks=0/211109530, in_queue=211112656, util=100.00%
```

{% hint style="info" %}
**Conclude:**

* When increasing the number of jobs ( `numjob=8`), **the total Write IOPS** (IOPS aggregated from all jobs) is guaranteed to reach **IOPS = 10000** .
* With `numjob=1`, **Read IOPS: 10k.** This result ensures that **IOPS = 10000** has been reached .
  {% endhint %}

***

## **Monitor disk performance with vMonitor Platform** <a href="#kiemtrahieusuatiops-giamsathieusuatodiabangvmonitor" id="kiemtrahieusuatiops-giamsathieusuatodiabangvmonitor"></a>

Currently, the vServer and vMonitor Platform systems have integrated Dashboards to help you manage your server parameters (including IOPS parameters). Specifically, you can follow these steps:

1. Access [**vMonitor Platform**](https://docs-vngcloud-vn.translate.goog/vng-cloud-document/vn/vmonitor/vmonitor-platform-la-gi/vmonitor-platform-metric-la-gi) at the link: <https://vmonitor.console.vngcloud.vn/>
2. Select **Dashboard** , then select **All GreenNode**
3. Continue to find and select **the Dashboard** containing your server name, this **Dashboard** name will have the format:`vServer-server-name-xxxx`

<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>

4. **On the Dashboard** detail screen , you can see the chart showing IOPS parameters in the chart below:

<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>

***

## **GreenNode performance test results** <a href="#kiemtrahieusuatiops-ketquathunghiemkiemtrahieusuatodiavngcloud" id="kiemtrahieusuatiops-ketquathunghiemkiemtrahieusuatodiavngcloud"></a>

<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>
