SolidFire QOS Part 2

In the previous post we saw two images one showing the QOS curve as advertised by the python API (image 1) and the other generated by a standalone python script (image 2)

Image 1
qos_curve
Image 2
1st 32kb

In this post I will cover how we worked out the cost for each I/O size and the associated QOS values.

Working out the cost of an I/O

As we can see from the first image the SolidFire presents us with some guidance on the QOS curve and the documentation states that IOPS are normalised to a 4Kb I/O size. To work out the max IOPS and BW for a volume given a specific I/O size we need to look at the QOS curve. This is defined as follows: I/O size in kb:cost

costs = {4:100,8:160,16:270,32:500,64:1000,128:1950,256:3900,512:7600,1024:15000}

This shows that 4Kb would have a cost of 100, now to get a cost for an I/O size for say 17Kb we need to know where the I/O size falls between the lower and upper I/O size buckets.

As such we have upper bucket = 500(32kb) and lower = 270(16kb) as we fall into this range. So to get the cost for the values in between we do the following:

               upper bucket cost - lower bucket cost

costep =       -------------------------------------

                      (upper bucket I/O size /2)

This gives:

                 500 - 270 = 230 / 16 = 14.375

So we have a cost step value of 14.375, now we need to work out the current i/o sizes cost with the following formula.

curcost = (( current I/O size - lower bucket I/O size ) * costep ) + lower bucket cost
          (( 17 - 16 = 1 ) * 14.375 + 270 = 284.375

Now we need to normalize this against the 4Kb cost to get the

curlimit = max_iops_limit * ( 4kb cost )
                             -----------
                               curcost
15000 *  100
        -------
        284.375   = 5274.72 IOPS - rounded to 5275

Below we can see the min/max/burst for a qos rule of 3000/15000/20000

IOSIZE   COST     MINIOPS  MAXIOPS  BIOPS    MINMB    MAXMB    BURSTMB
  17     284      1055     5275     7033       18       88      117

We can then use this to build a table of all I/O sizes and associated QOS values.

BIOPS = Burst IOPS **

IOSIZE   COST     MINIOPS  MAXIOPS  BIOPS    MINMB    MAXMB    BURSTMB
1        100      3000     15000    20000    3        15       20
2        100      3000     15000    20000    6        29       39
3        100      3000     15000    20000    9        44       59
4        100      3000     15000    20000    12       59       78
5        115      2609     13043    17391    13       64       85
6        130      2308     11538    15385    14       68       90
7        145      2069     10345    13793    14       71       94
8        160      1875     9375     12500    15       73       98
9        173      1727     8633     11511    15       76       101
10       187      1600     8000     10667    16       78       104
11       201      1491     7453     9938     16       80       107
12       215      1395     6977     9302     16       82       109
13       228      1311     6557     8743     17       83       111
14       242      1237     6186     8247     17       85       113
15       256      1171     5854     7805     17       86       114
16       270      1111     5556     7407     17       87       116
17       284      1055     5275     7033     18       88       117
18       298      1004     5021     6695     18       88       118
19       313      958      4790     6387     18       89       119
20       327      916      4580     6107     18       89       119
21       341      878      4388     5850     18       90       120
22       356      842      4211     5614     18       90       121
23       370      809      4047     5396     18       91       121
24       385      779      3896     5195     18       91       122
25       399      751      3756     5008     18       92       122
26       413      725      3625     4834     18       92       123
27       428      701      3504     4672     18       92       123
28       442      678      3390     4520     19       93       124
29       456      657      3283     4378     19       93       124
30       471      637      3183     4244     19       93       124
31       485      618      3089     4118     19       94       125
32       500      600      3000     4000     19       94       125
33       515      582      2909     3879     19       94       125
34       531      565      2824     3765     19       94       125
35       546      549      2743     3657     19       94       125
36       562      533      2667     3556     19       94       125
37       578      519      2595     3459     19       94       125
38       593      505      2526     3368     19       94       125
39       609      492      2462     3282     19       94       125
40       625      480      2400     3200     19       94       125
41       640      468      2341     3122     19       94       125
42       656      457      2286     3048     19       94       125
43       671      447      2233     2977     19       94       125
44       687      436      2182     2909     19       94       125
45       703      427      2133     2844     19       94       125
46       718      417      2087     2783     19       94       125
47       734      409      2043     2723     19       94       125
48       750      400      2000     2667     19       94       125
49       765      392      1959     2612     19       94       125
50       781      384      1920     2560     19       94       125
51       796      376      1882     2510     19       94       125
52       812      369      1846     2462     19       94       125
53       828      362      1811     2415     19       94       125
54       843      356      1778     2370     19       94       125
55       859      349      1745     2327     19       94       125
56       875      343      1714     2286     19       94       125
57       890      337      1684     2246     19       94       125
58       906      331      1655     2207     19       94       125
59       921      325      1627     2169     19       94       125
60       937      320      1600     2133     19       94       125
61       953      315      1574     2098     19       94       125
62       968      310      1548     2065     19       94       125
63       984      305      1524     2032     19       94       125
64       1000     300      1500     2000     19       94       125
65       1014     296      1478     1971     19       94       125
66       1029     291      1457     1942     19       94       125
67       1044     287      1436     1915     19       94       125
68       1059     283      1416     1888     19       94       125
69       1074     279      1396     1862     19       94       125
70       1089     275      1377     1836     19       94       126
71       1103     272      1359     1812     19       94       126
72       1118     268      1341     1788     19       94       126
73       1133     265      1323     1764     19       94       126
74       1148     261      1306     1741     19       94       126
75       1163     258      1289     1719     19       94       126
76       1178     255      1273     1698     19       94       126
77       1192     251      1257     1676     19       95       126
78       1207     248      1242     1656     19       95       126
79       1222     245      1227     1636     19       95       126
80       1237     242      1212     1616     19       95       126
81       1252     240      1198     1597     19       95       126
82       1267     237      1184     1578     19       95       126
83       1282     234      1170     1560     19       95       126
84       1296     231      1157     1542     19       95       127
85       1311     229      1144     1525     19       95       127
86       1326     226      1131     1508     19       95       127
87       1341     224      1118     1491     19       95       127
88       1356     221      1106     1475     19       95       127
89       1371     219      1094     1459     19       95       127
90       1385     216      1082     1443     19       95       127
91       1400     214      1071     1428     19       95       127
92       1415     212      1060     1413     19       95       127
93       1430     210      1049     1398     19       95       127
94       1445     208      1038     1384     19       95       127
95       1460     205      1027     1370     19       95       127
96       1475     203      1017     1356     19       95       127
97       1489     201      1007     1342     19       95       127
98       1504     199      997      1329     19       95       127
99       1519     197      987      1316     19       95       127
100      1534     196      978      1303     19       95       127
101      1549     194      968      1291     19       95       127
102      1564     192      959      1279     19       96       127
103      1578     190      950      1267     19       96       127
104      1593     188      941      1255     19       96       127
105      1608     186      932      1243     19       96       127
106      1623     185      924      1232     19       96       128
107      1638     183      916      1221     19       96       128
108      1653     181      907      1210     19       96       128
109      1667     180      899      1199     19       96       128
110      1682     178      891      1188     19       96       128
111      1697     177      884      1178     19       96       128
112      1712     175      876      1168     19       96       128
113      1727     174      868      1158     19       96       128
114      1742     172      861      1148     19       96       128
115      1757     171      854      1138     19       96       128
116      1771     169      847      1129     19       96       128
117      1786     168      840      1119     19       96       128
118      1801     167      833      1110     19       96       128
119      1816     165      826      1101     19       96       128
120      1831     164      819      1092     19       96       128
121      1846     163      813      1083     19       96       128
122      1860     161      806      1075     19       96       128
123      1875     160      800      1066     19       96       128
124      1890     159      793      1058     19       96       128
125      1905     157      787      1050     19       96       128
126      1920     156      781      1041     19       96       128
127      1935     155      775      1034     19       96       128
128      1950     154      769      1026     19       96       128
129      1965     153      763      1018     19       96       128
130      1980     151      757      1010     19       96       128
131      1995     150      752      1002     19       96       128
132      2010     149      746      995      19       96       128
133      2026     148      740      987      19       96       128
134      2041     147      735      980      19       96       128
135      2056     146      729      972      19       96       128
136      2071     145      724      965      19       96       128
137      2087     144      719      958      19       96       128
138      2102     143      713      951      19       96       128
139      2117     142      708      944      19       96       128
140      2132     141      703      938      19       96       128
141      2148     140      698      931      19       96       128
142      2163     139      693      925      19       96       128
143      2178     138      689      918      19       96       128
144      2193     137      684      912      19       96       128
145      2208     136      679      905      19       96       128
146      2224     135      674      899      19       96       128
147      2239     134      670      893      19       96       128
148      2254     133      665      887      19       96       128
149      2269     132      661      881      19       96       128
150      2285     131      656      875      19       96       128
151      2300     130      652      869      19       96       128
152      2315     130      648      864      19       96       128
153      2330     129      644      858      19       96       128
154      2346     128      639      852      19       96       128
155      2361     127      635      847      19       96       128
156      2376     126      631      842      19       96       128
157      2391     125      627      836      19       96       128
158      2407     125      623      831      19       96       128
159      2422     124      619      826      19       96       128
160      2437     123      615      821      19       96       128
161      2452     122      612      815      19       96       128
162      2467     122      608      810      19       96       128
163      2483     121      604      805      19       96       128
164      2498     120      600      801      19       96       128
165      2513     119      597      796      19       96       128
166      2528     119      593      791      19       96       128
167      2544     118      590      786      19       96       128
168      2559     117      586      781      19       96       128
169      2574     117      583      777      19       96       128
170      2589     116      579      772      19       96       128
171      2605     115      576      768      19       96       128
172      2620     114      572      763      19       96       128
173      2635     114      569      759      19       96       128
174      2650     113      566      754      19       96       128
175      2666     113      563      750      19       96       128
176      2681     112      559      746      19       96       128
177      2696     111      556      742      19       96       128
178      2711     111      553      738      19       96       128
179      2726     110      550      733      19       96       128
180      2742     109      547      729      19       96       128
181      2757     109      544      725      19       96       128
182      2772     108      541      721      19       96       128
183      2787     108      538      717      19       96       128
184      2803     107      535      713      19       96       128
185      2818     106      532      710      19       96       128
186      2833     106      529      706      19       96       128
187      2848     105      527      702      19       96       128
188      2864     105      524      698      19       96       128
189      2879     104      521      695      19       96       128
190      2894     104      518      691      19       96       128
191      2909     103      516      687      19       96       128
192      2925     103      513      684      19       96       128
193      2940     102      510      680      19       96       128
194      2955     102      508      677      19       96       128
195      2970     101      505      673      19       96       128
196      2985     100      502      670      19       96       128
197      3001     100      500      666      19       96       128
198      3016     99       497      663      19       96       128
199      3031     99       495      660      19       96       128
200      3046     98       492      656      19       96       128
201      3062     98       490      653      19       96       128
202      3077     97       487      650      19       96       128
203      3092     97       485      647      19       96       128
204      3107     97       483      644      19       96       128
205      3123     96       480      640      19       96       128
206      3138     96       478      637      19       96       128
207      3153     95       476      634      19       96       128
208      3168     95       473      631      19       96       128
209      3183     94       471      628      19       96       128
210      3199     94       469      625      19       96       128
211      3214     93       467      622      19       96       128
212      3229     93       464      619      19       96       128
213      3244     92       462      616      19       96       128
214      3260     92       460      613      19       96       128
215      3275     92       458      611      19       96       128
216      3290     91       456      608      19       96       128
217      3305     91       454      605      19       96       128
218      3321     90       452      602      19       96       128
219      3336     90       450      599      19       96       128
220      3351     90       448      597      19       96       128
221      3366     89       446      594      19       96       128
222      3382     89       444      591      19       96       128
223      3397     88       442      589      19       96       128
224      3412     88       440      586      19       96       128
225      3427     88       438      583      19       96       128
226      3442     87       436      581      19       96       128
227      3458     87       434      578      19       96       128
228      3473     86       432      576      19       96       128
229      3488     86       430      573      19       96       128
230      3503     86       428      571      19       96       128
231      3519     85       426      568      19       96       128
232      3534     85       424      566      19       96       128
233      3549     85       423      563      19       96       128
234      3564     84       421      561      19       96       128
235      3580     84       419      559      19       96       128
236      3595     83       417      556      19       96       128
237      3610     83       415      554      19       96       128
238      3625     83       414      552      19       96       128
239      3641     82       412      549      19       96       128
240      3656     82       410      547      19       96       128
241      3671     82       409      545      19       96       128
242      3686     81       407      542      19       96       128
243      3701     81       405      540      19       96       128
244      3717     81       404      538      19       96       128
245      3732     80       402      536      19       96       128
246      3747     80       400      534      19       96       128
247      3762     80       399      532      19       96       128
248      3778     79       397      529      19       96       128
249      3793     79       395      527      19       96       128
250      3808     79       394      525      19       96       128
251      3823     78       392      523      19       96       128
252      3839     78       391      521      19       96       128
253      3854     78       389      519      19       96       128
254      3869     78       388      517      19       96       128
255      3884     77       386      515      19       96       128
256      3900     77       385      513      19       96       128
.
.
.
.
1000     14653    20       102      136      20       100      133
1001     14667    20       102      136      20       100      133
1002     14682    20       102      136      20       100      133
1003     14696    20       102      136      20       100      133
1004     14710    20       102      136      20       100      133
1005     14725    20       102      136      20       100      133
1006     14739    20       102      136      20       100      133
1007     14754    20       102      136      20       100      133
1008     14768    20       102      135      20       100      133
1009     14783    20       101      135      20       100      133
1010     14797    20       101      135      20       100      133
1011     14812    20       101      135      20       100      133
1012     14826    20       101      135      20       100      133
1013     14841    20       101      135      20       100      133
1014     14855    20       101      135      20       100      133
1015     14869    20       101      134      20       100      133
1016     14884    20       101      134      20       100      133
1017     14898    20       101      134      20       100      133
1018     14913    20       101      134      20       100      133
1019     14927    20       100      134      20       100      133
1020     14942    20       100      134      20       100      133
1021     14956    20       100      134      20       100      133
1022     14971    20       100      134      20       100      133
1023     14985    20       100      133      20       100      133
1024     15000    20       100      133      20       100      133

You can use the following python script to generate this data

 
#!/bin/python
# Allan McAleavy Created This.
# Copyright (c) 2018 Allan McAleavy
# Licensed under the Apache License, Version 2.0 (the "License")
# Get QOS details for SolidFire I/O Sizes.
import collections
import math
import argparse

examples = """examples:
    ./table.py min_iops max_iops burst_iops
"""
# arguments
parser = argparse.ArgumentParser(
    description="Gather performance data from SolidFire Arrays",
    formatter_class=argparse.RawDescriptionHelpFormatter,
    epilog=examples)
parser.add_argument("min", default=1500, help="Min IOPS")
parser.add_argument("max", default=3000, help="Max IOPS")
parser.add_argument("burst",default=200000, help="Burst IOPS")
args = parser.parse_args()

min_iops=int(args.min)
max_iops=int(args.max)
burst_iops=int(args.burst)

costs = {4:100,8:160,16:270,32:500,64:1000,128:1950,256:3900,512:7600,1024:15000}
od = collections.OrderedDict(sorted(costs.items()))

print("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s " % ("IOSIZE","COST","MINIOPS","MAXIOPS","BIOPS","MINMB","MAXMB","BURSTMB"))
for average_iopsize in range(1,1025):
    hbsize=0
    if average_iopsize >=1:
       hbsize = int(pow(2, math.ceil(math.log(average_iopsize, 2))))
    if hbsize < 4:
       hbsize = 4

    lbsize = (hbsize /2)
    if lbsize < 4:
       lbsize = 4

    lbcost = od[lbsize]
    hbcost = od[hbsize]
    costep = float(hbcost - lbcost ) / float(lbsize)
    curcost = ((average_iopsize - lbsize) * costep) + lbcost
    print ("%-8d %-8d %-8.0f %-8.0f %-8.0f %-8.0f %-8.0f %-8.0f" % (average_iopsize,curcost,(float(100)/float(curcost) * min_iops),(float(100)/float(curcost)) * max_iops,(float(100)/float(curcost) * burst_iops),
                                             (average_iopsize * (float(100)/float(curcost) * min_iops))/1024,
                                             (average_iopsize * (float(100)/float(curcost) * max_iops))/1024,
                                             (average_iopsize * (float(100)/float(curcost) * burst_iops))/1024
                                               ))

And to run the script we input the min/max & burst IOPS figures.

$ ./table.py 3000 15000 20000 |more
IOSIZE   COST     MINIOPS  MAXIOPS  BIOPS    MINMB    MAXMB    BURSTMB
1        100      3000     15000    20000    3        15       20
2        100      3000     15000    20000    6        29       39
3        100      3000     15000    20000    9        44       59
4        100      3000     15000    20000    12       59       78
5        115      2609     13043    17391    13       64       85
6        130      2308     11538    15385    14       68       90
7        145      2069     10345    13793    14       71       94
8        160      1875     9375     12500    15       73       98

In the next post we will show how we connect to the SolidFire using the python API and monitor QOS values for a specific volume in realtime and what to look out for.

One thought on “SolidFire QOS Part 2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s