IOPS conversion matrix

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.

Concepts

IOPS Description
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

Illustration

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:

Settings Description
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:

iops_matrix

Calculating the operating IOPS

Standard IOPS

1000 @80%Read, 80% Write, and 4K block size

Read/write variation

CloudByte equates one WRITE to four READS. You can tune this on per pool basis if required.

Calculation

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