The following sections provide details of the IOPS conversion matrix as implemented in CloudByte ElastiStor. The conversion matrix helps you understand the penalty enforcement factors associated with the QoS.
Assume that, as a service provider, you have assigned a client a specific number of IOPS. Depending on the work load pattern, to maintain guaranteed QoS, you might have to increase or decrease the IOPS. Based on the standard QoS characteristics CloudByte automatically calculates the equivalent of your load.
For example, in a 100 % READ scenario, there is a surplus IOPS owing to the 0% WRITE. Similarly in a 100 percent WRITE scenario, there is a deficit of IOPS. This demands a check and balance in the IOPS provisioning which is taken care of by CloudByte.
Since it is imperative that IOPS provisioning conform to a specific matrix, you are provided with a set of Global Settings options which you can tweak to maintain and optimize the performance. Note that you can also optimize the performance at per Pool level also.
Measuring storage performance
Prior to reading the following sections, CloudByte recommends you to read the following white paper that provides an introduction to Measuring Storage Performance.
|Standard IOPS||This is the benchmarked IOPS. The details are as follows: 80 READ/20 WRITE, and 4K block size. This acts as the frame of reference for QoS in CloudByte ElastiStor.|
|Operating IOPS||IOPS under a given workload that can be measured against the standard IOPS.|
|Pool IOPS||The standard IOPS that can be delivered by a given pool.|
|Provisioned IOPS||. The standard IOPS provisioned to a volume|
Consider a Pool assigned with 1300 Standard IOPS. There are three Storage Volumes with the following conditions:
|Storage Volume||Provisioned IOPS||Block Size||Workload (READ/WRITE)||Operational IOPS|
|Volume 1||500||4K||80% /20%||500|
|Volume 2||200||4K||100% /0%||320|
|Volume 3||400||4K||0% /100%||160|
Penalty enforcement options
The following options in the Global Settings are used to enforce IOPS penalty:
|qos.penalty.factor||If Yes, penalty is applied based on the criteria explained above.|
|qos.penalty.enforcement.timeinterval||Seconds after which penalty enforcement should refresh.|
|read.multiplication.factor||For details, see the following sections|
|cache.multiplication.factor||For details, see the following sections.|
Deciding the penalty
The following workflow helps you understand the penalty factors:
Calculating the operating IOPS
1000 @80%Read, 80% Write, and 4K block size
CloudByte equates one WRITE to four READS. You can tune this on per pool basis if required.
If standard IOPS are 100 at 80 READS/20 WRITES, the following is the formula to convert the operating IOPS into standard IOPS:
|Operating IOPS||At READ/WRITE||Equivalent Standard IOPS||Throttle at (IOPS)|
|100||100/0||80 READS +20 READS (as READs occur in place of WRITEs). Here you convert 20 WRITEs to READS. That is, 20×4=80 READs. The total standard IOPS that can be consumed is 80 + 80 = 160 IOPS.||160|
|100||80/20||80 READS + 20 READS||100|
|100||60/40||60 READs + 40 READs (as WRITES occur in place of READs). Here you convert 20 READs to WRITEs. 20 READs are equal to 20/4=5 WRITEs. The total standard IOPS that can be consumed is 80+5 = 85 IOPS.||85|
|100||40/60||40 READs + 60WRITEs (as WRITEs occur in place of READs). Here you convert 40 READs to WRITES. 40 READs are equal to 40/4=10 WRITEs. The total standard IOPS that can be consumed is 40+10 = 50 IOPS.||70|
|100||20/80||20 READs + 80 WRITEs (as WRITEs occur in place of READs). Here you convert 60 READs to WRITEs. 60 READs are equal to 60/4=15 WRITEs. The total standard IOPS that can be consumed is 20+15 = 35 IOPS.||55|
|100||0/100||0 READs + 100 WRITEs (as WRITEs occur in place of READs). Here you convert 80 READs to WRITEs. 80 READs are equal to 80/4=20 WRITEs. The total standard IOPS that can be consumed is 0+20 = 20 IOPS.||40|
READ/WRITE variation and block size variation
The calculation considers the following assumptions:
- X operating IOPS are converted to X1 after considering the block size variation
- X1 IOPS are converted to X2 after considering READ/WRITE variation
- Throttling happens at X2 IOPS