To check the IOPS (Input/Output Operations Per Second) performance on a Volume, you can use the toolfio.
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 section .
Steps to follow
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
Random read & write performance test
Create a server with NVME Volume drive with IOPS 5000 at the vServer home page:
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:
With 8 jobs running concurrently, you can use:
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.
Below are the recorded results (with 4 core 8 GB configuration)
When you set numjob = 1 :
When you set numjob = 8:
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 .
Random read performance test
Perform steps 1,2,3 similar to the case of Testing performance simultaneously random read and random write.
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:
With 8 jobs running concurrently, you can use:
Below are the results recorded:
When you set numjob = 1 :
When you set numjob = 8:
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 .
Random write performance test
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).
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:
With 8 jobs running concurrently, you can use:
Below are the results recorded:
When you set numjob = 1 :
When you set numjob = 8:
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 .
Monitor disk performance with vMonitor Platform
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: