Compare commits

..

8 commits
main ... minio

Author SHA1 Message Date
Quentin ea0f725315
Update R code 2021-12-08 14:41:12 +01:00
Quentin 9df55cd46b Some fixes 2021-12-07 18:25:54 +01:00
Quentin c016ccdffa
WIP runner 2021-12-07 17:29:16 +01:00
Quentin eacb73340c
Reworked minio deployment script 2021-12-06 11:53:22 +01:00
Quentin cc2b090149
WIP 2021-11-29 23:51:09 +01:00
Quentin c8acb37b14
Fix a bug in deploy_garage 2021-11-25 11:16:13 +01:00
Quentin 226fc57c30
Add doc for garage, rename example as instrumented 2021-11-25 10:22:50 +01:00
Quentin 37044415c1
Add a README.md 2021-11-25 10:13:22 +01:00
102 changed files with 728 additions and 8861 deletions

3
.gitignore vendored
View file

@ -1,6 +1,3 @@
.current_state.yml
__pycache__
*.swp
build
mknet.egg-info
.venv

6
.gitmodules vendored
View file

@ -1,6 +0,0 @@
[submodule "benchmarks/warp"]
path = benchmarks/warp
url = https://github.com/minio/warp
[submodule "analysis/quentin"]
path = analysis/quentin
url = https://git.deuxfleurs.fr/quentin/benchmarks

501
50ms.garage.csv Normal file
View file

@ -0,0 +1,501 @@
op,time
listbuckets,202.111138
listbuckets,43.940584
listbuckets,181.316207
listbuckets,19.614464
listbuckets,202.478714
listbuckets,136.910843
listbuckets,163.83813
listbuckets,6.058236
listbuckets,85.429565
listbuckets,114.172791
listbuckets,74.642451
listbuckets,185.718226
listbuckets,167.826023
listbuckets,149.187267
listbuckets,133.087361
listbuckets,84.117499
listbuckets,144.38981
listbuckets,23.85664
listbuckets,87.296531
listbuckets,67.410471
listbuckets,84.965746
listbuckets,49.504764
listbuckets,137.740524
listbuckets,170.798293
listbuckets,95.475103
listbuckets,137.597302
listbuckets,63.782028
listbuckets,29.721971
listbuckets,28.081703
listbuckets,69.563921
listbuckets,5.206663
listbuckets,18.225493
listbuckets,45.392384
listbuckets,162.435983
listbuckets,50.777425
listbuckets,37.839457
listbuckets,79.086669
listbuckets,87.751924
listbuckets,134.904993
listbuckets,42.232689
listbuckets,192.142975
listbuckets,140.725668
listbuckets,95.926909
listbuckets,51.227748
listbuckets,177.170003
listbuckets,144.06313
listbuckets,102.662758
listbuckets,32.749906
listbuckets,122.617287
listbuckets,169.247085
listbuckets,12.547939
listbuckets,140.197528
listbuckets,7.936283
listbuckets,46.104653
listbuckets,17.26822
listbuckets,103.748224
listbuckets,178.618347
listbuckets,21.52861
listbuckets,45.549531
listbuckets,183.945418
listbuckets,115.780897
listbuckets,174.858715
listbuckets,86.042806
listbuckets,31.345205
listbuckets,12.83907
listbuckets,198.613903
listbuckets,188.966298
listbuckets,45.879156
listbuckets,145.656468
listbuckets,178.692096
listbuckets,139.07375
listbuckets,201.000343
listbuckets,52.520817
listbuckets,31.036891
listbuckets,39.697006
listbuckets,141.790216
listbuckets,165.41757
listbuckets,202.853394
listbuckets,194.009791
listbuckets,51.369246
listbuckets,173.986272
listbuckets,11.476469
listbuckets,17.626068
listbuckets,47.418342
listbuckets,157.026306
listbuckets,50.140819
listbuckets,104.12086
listbuckets,92.402613
listbuckets,75.890084
listbuckets,132.398325
listbuckets,44.180258
listbuckets,93.321994
listbuckets,71.967464
listbuckets,64.616629
listbuckets,84.258466
listbuckets,195.606576
listbuckets,118.320338
listbuckets,104.692974
listbuckets,74.44628
listbuckets,28.309184
putobject,165.46463
putobject,222.517763
putobject,111.937486
putobject,184.887542
putobject,126.217546
putobject,237.106337
putobject,116.128475
putobject,189.31095
putobject,113.380511
putobject,103.315545
putobject,247.080631
putobject,186.276523
putobject,99.660792
putobject,117.760306
putobject,109.472237
putobject,264.241006
putobject,121.447772
putobject,117.987948
putobject,111.855782
putobject,115.530352
putobject,326.730637
putobject,120.42312
putobject,221.54514
putobject,110.206819
putobject,123.908553
putobject,117.173665
putobject,115.430233
putobject,110.628507
putobject,237.560348
putobject,115.31804
putobject,308.395616
putobject,107.843702
putobject,111.375833
putobject,96.310716
putobject,112.016026
putobject,239.727462
putobject,112.919547
putobject,111.346417
putobject,329.578191
putobject,106.91322
putobject,95.694077
putobject,278.426107
putobject,105.462491
putobject,181.24935
putobject,107.048446
putobject,218.381427
putobject,170.658909
putobject,222.801469
putobject,120.682382
putobject,165.640233
putobject,189.454552
putobject,152.842501
putobject,106.93962
putobject,255.688236
putobject,111.958125
putobject,130.607382
putobject,202.151204
putobject,114.005915
putobject,215.592064
putobject,339.66065
putobject,116.144346
putobject,211.735699
putobject,127.648517
putobject,105.163645
putobject,205.664038
putobject,117.612316
putobject,95.377638
putobject,103.966738
putobject,117.708519
putobject,198.141979
putobject,114.142965
putobject,236.392525
putobject,179.734151
putobject,116.104981
putobject,176.715002
putobject,116.993234
putobject,194.191116
putobject,103.240473
putobject,149.059204
putobject,111.387445
putobject,206.070688
putobject,116.469762
putobject,348.528368
putobject,112.547413
putobject,217.546766
putobject,112.896413
putobject,215.344494
putobject,115.486139
putobject,118.703142
putobject,213.602786
putobject,109.749772
putobject,112.005876
putobject,112.576999
putobject,115.241835
putobject,216.114253
putobject,122.455961
putobject,107.242653
putobject,152.564715
putobject,122.086712
putobject,199.452321
listobjects,300.581365
listobjects,277.790833
listobjects,300.438323
listobjects,306.401268
listobjects,247.070642
listobjects,265.460266
listobjects,307.833962
listobjects,278.348249
listobjects,289.753623
listobjects,428.597858
listobjects,291.670485
listobjects,291.750707
listobjects,337.027161
listobjects,246.554724
listobjects,257.611418
listobjects,320.019725
listobjects,257.59075
listobjects,295.037894
listobjects,283.894836
listobjects,247.228281
listobjects,253.136202
listobjects,337.787051
listobjects,258.82629
listobjects,268.927815
listobjects,321.913973
listobjects,281.985389
listobjects,260.410992
listobjects,287.980444
listobjects,275.53983
listobjects,269.558019
listobjects,287.118302
listobjects,290.645774
listobjects,285.738097
listobjects,392.130411
listobjects,289.995953
listobjects,262.023637
listobjects,325.831103
listobjects,278.981469
listobjects,284.476107
listobjects,314.008409
listobjects,247.46578
listobjects,241.607423
listobjects,280.720744
listobjects,251.493039
listobjects,251.274956
listobjects,308.848053
listobjects,247.605826
listobjects,254.399835
listobjects,272.523456
listobjects,295.263441
listobjects,287.200498
listobjects,321.094731
listobjects,298.581687
listobjects,267.287678
listobjects,334.118082
listobjects,294.63522
listobjects,396.182216
listobjects,324.845486
listobjects,277.918475
listobjects,276.752988
listobjects,286.609247
listobjects,237.788439
listobjects,291.572429
listobjects,289.931931
listobjects,292.7288
listobjects,278.329784
listobjects,312.4204
listobjects,250.387574
listobjects,266.618319
listobjects,294.083115
listobjects,282.236044
listobjects,246.433896
listobjects,259.166735
listobjects,283.552347
listobjects,262.037944
listobjects,438.74009
listobjects,261.966819
listobjects,272.358954
listobjects,328.634834
listobjects,249.669345
listobjects,271.167948
listobjects,314.412415
listobjects,247.691167
listobjects,283.680419
listobjects,343.269156
listobjects,251.896493
listobjects,252.494486
listobjects,422.943899
listobjects,249.298261
listobjects,261.622207
listobjects,297.580581
listobjects,283.851304
listobjects,271.55979
listobjects,285.568215
listobjects,230.497899
listobjects,263.590013
listobjects,328.976692
listobjects,263.056663
listobjects,290.204427
listobjects,313.846942
getobject,182.785981
getobject,109.499628
getobject,106.650121
getobject,121.295002
getobject,117.047546
getobject,121.821129
getobject,99.500457
getobject,110.204614
getobject,90.665673
getobject,103.448016
getobject,109.513215
getobject,109.836517
getobject,108.865037
getobject,109.142191
getobject,115.979895
getobject,114.514819
getobject,261.303813
getobject,97.933911
getobject,105.707616
getobject,95.21515
getobject,114.97932
getobject,97.167349
getobject,109.995088
getobject,116.094451
getobject,92.307803
getobject,98.966066
getobject,92.048943
getobject,108.609352
getobject,108.804713
getobject,98.891615
getobject,115.83029
getobject,243.530767
getobject,210.53295
getobject,112.15031
getobject,111.292435
getobject,114.00824
getobject,104.009179
getobject,95.101244
getobject,107.050751
getobject,120.16432
getobject,194.587857
getobject,241.974629
getobject,106.301621
getobject,108.892679
getobject,108.393894
getobject,246.919505
getobject,107.829215
getobject,102.11495
getobject,103.701736
getobject,101.141817
getobject,95.347592
getobject,103.559998
getobject,88.331191
getobject,98.132176
getobject,108.62405
getobject,105.357643
getobject,113.917848
getobject,97.43226
getobject,93.802174
getobject,98.555798
getobject,255.646637
getobject,106.634181
getobject,106.455823
getobject,111.535305
getobject,96.665838
getobject,109.615498
getobject,105.223109
getobject,109.366968
getobject,103.517893
getobject,102.918258
getobject,100.815486
getobject,108.270276
getobject,96.698476
getobject,109.806247
getobject,115.544536
getobject,112.49002
getobject,259.839035
getobject,111.031397
getobject,106.06039
getobject,112.722872
getobject,113.953012
getobject,103.298047
getobject,99.28177
getobject,112.432912
getobject,96.173452
getobject,99.882016
getobject,111.264639
getobject,108.417085
getobject,117.353102
getobject,95.225466
getobject,111.075511
getobject,264.20257
getobject,117.333244
getobject,120.125003
getobject,108.663392
getobject,119.961413
getobject,95.005941
getobject,95.4336
getobject,115.280757
getobject,97.201088
removeobject,222.573682
removeobject,231.761917
removeobject,442.585842
removeobject,234.382532
removeobject,387.512105
removeobject,305.628182
removeobject,289.502486
removeobject,231.169395
removeobject,316.098005
removeobject,209.524123
removeobject,424.370175
removeobject,216.714103
removeobject,375.594149
removeobject,223.780047
removeobject,350.67269
removeobject,336.975443
removeobject,323.65556
removeobject,292.523519
removeobject,231.739565
removeobject,472.605248
removeobject,205.028165
removeobject,297.558856
removeobject,354.25723
removeobject,358.617621
removeobject,231.66819
removeobject,218.014656
removeobject,293.081194
removeobject,220.378333
removeobject,461.275468
removeobject,294.197941
removeobject,199.614791
removeobject,294.474434
removeobject,418.385018
removeobject,230.544922
removeobject,327.569235
removeobject,218.21218
removeobject,307.861353
removeobject,328.311953
removeobject,216.075602
removeobject,210.143125
removeobject,208.936679
removeobject,190.425894
removeobject,224.586404
removeobject,337.963656
removeobject,444.272797
removeobject,301.920388
removeobject,340.421272
removeobject,338.346501
removeobject,296.788527
removeobject,207.559962
removeobject,457.649247
removeobject,300.037582
removeobject,321.593867
removeobject,292.55592
removeobject,309.367726
removeobject,255.574575
removeobject,426.947087
removeobject,265.768115
removeobject,329.29239
removeobject,308.343145
removeobject,359.263264
removeobject,203.957307
removeobject,365.564661
removeobject,237.358118
removeobject,317.935617
removeobject,313.741912
removeobject,312.306754
removeobject,323.298865
removeobject,309.122932
removeobject,202.639531
removeobject,195.346255
removeobject,218.604323
removeobject,240.143875
removeobject,341.057908
removeobject,307.301071
removeobject,326.504098
removeobject,309.864819
removeobject,300.616459
removeobject,232.943336
removeobject,220.08092
removeobject,237.389609
removeobject,334.716365
removeobject,291.190192
removeobject,206.634058
removeobject,291.836125
removeobject,307.390831
removeobject,197.95132
removeobject,379.646215
removeobject,211.924509
removeobject,244.664849
removeobject,348.966198
removeobject,316.319435
removeobject,291.416401
removeobject,215.855116
removeobject,329.053698
removeobject,322.553745
removeobject,316.627999
removeobject,311.277814
removeobject,330.250545
removeobject,221.223845
1 op time
2 listbuckets 202.111138
3 listbuckets 43.940584
4 listbuckets 181.316207
5 listbuckets 19.614464
6 listbuckets 202.478714
7 listbuckets 136.910843
8 listbuckets 163.83813
9 listbuckets 6.058236
10 listbuckets 85.429565
11 listbuckets 114.172791
12 listbuckets 74.642451
13 listbuckets 185.718226
14 listbuckets 167.826023
15 listbuckets 149.187267
16 listbuckets 133.087361
17 listbuckets 84.117499
18 listbuckets 144.38981
19 listbuckets 23.85664
20 listbuckets 87.296531
21 listbuckets 67.410471
22 listbuckets 84.965746
23 listbuckets 49.504764
24 listbuckets 137.740524
25 listbuckets 170.798293
26 listbuckets 95.475103
27 listbuckets 137.597302
28 listbuckets 63.782028
29 listbuckets 29.721971
30 listbuckets 28.081703
31 listbuckets 69.563921
32 listbuckets 5.206663
33 listbuckets 18.225493
34 listbuckets 45.392384
35 listbuckets 162.435983
36 listbuckets 50.777425
37 listbuckets 37.839457
38 listbuckets 79.086669
39 listbuckets 87.751924
40 listbuckets 134.904993
41 listbuckets 42.232689
42 listbuckets 192.142975
43 listbuckets 140.725668
44 listbuckets 95.926909
45 listbuckets 51.227748
46 listbuckets 177.170003
47 listbuckets 144.06313
48 listbuckets 102.662758
49 listbuckets 32.749906
50 listbuckets 122.617287
51 listbuckets 169.247085
52 listbuckets 12.547939
53 listbuckets 140.197528
54 listbuckets 7.936283
55 listbuckets 46.104653
56 listbuckets 17.26822
57 listbuckets 103.748224
58 listbuckets 178.618347
59 listbuckets 21.52861
60 listbuckets 45.549531
61 listbuckets 183.945418
62 listbuckets 115.780897
63 listbuckets 174.858715
64 listbuckets 86.042806
65 listbuckets 31.345205
66 listbuckets 12.83907
67 listbuckets 198.613903
68 listbuckets 188.966298
69 listbuckets 45.879156
70 listbuckets 145.656468
71 listbuckets 178.692096
72 listbuckets 139.07375
73 listbuckets 201.000343
74 listbuckets 52.520817
75 listbuckets 31.036891
76 listbuckets 39.697006
77 listbuckets 141.790216
78 listbuckets 165.41757
79 listbuckets 202.853394
80 listbuckets 194.009791
81 listbuckets 51.369246
82 listbuckets 173.986272
83 listbuckets 11.476469
84 listbuckets 17.626068
85 listbuckets 47.418342
86 listbuckets 157.026306
87 listbuckets 50.140819
88 listbuckets 104.12086
89 listbuckets 92.402613
90 listbuckets 75.890084
91 listbuckets 132.398325
92 listbuckets 44.180258
93 listbuckets 93.321994
94 listbuckets 71.967464
95 listbuckets 64.616629
96 listbuckets 84.258466
97 listbuckets 195.606576
98 listbuckets 118.320338
99 listbuckets 104.692974
100 listbuckets 74.44628
101 listbuckets 28.309184
102 putobject 165.46463
103 putobject 222.517763
104 putobject 111.937486
105 putobject 184.887542
106 putobject 126.217546
107 putobject 237.106337
108 putobject 116.128475
109 putobject 189.31095
110 putobject 113.380511
111 putobject 103.315545
112 putobject 247.080631
113 putobject 186.276523
114 putobject 99.660792
115 putobject 117.760306
116 putobject 109.472237
117 putobject 264.241006
118 putobject 121.447772
119 putobject 117.987948
120 putobject 111.855782
121 putobject 115.530352
122 putobject 326.730637
123 putobject 120.42312
124 putobject 221.54514
125 putobject 110.206819
126 putobject 123.908553
127 putobject 117.173665
128 putobject 115.430233
129 putobject 110.628507
130 putobject 237.560348
131 putobject 115.31804
132 putobject 308.395616
133 putobject 107.843702
134 putobject 111.375833
135 putobject 96.310716
136 putobject 112.016026
137 putobject 239.727462
138 putobject 112.919547
139 putobject 111.346417
140 putobject 329.578191
141 putobject 106.91322
142 putobject 95.694077
143 putobject 278.426107
144 putobject 105.462491
145 putobject 181.24935
146 putobject 107.048446
147 putobject 218.381427
148 putobject 170.658909
149 putobject 222.801469
150 putobject 120.682382
151 putobject 165.640233
152 putobject 189.454552
153 putobject 152.842501
154 putobject 106.93962
155 putobject 255.688236
156 putobject 111.958125
157 putobject 130.607382
158 putobject 202.151204
159 putobject 114.005915
160 putobject 215.592064
161 putobject 339.66065
162 putobject 116.144346
163 putobject 211.735699
164 putobject 127.648517
165 putobject 105.163645
166 putobject 205.664038
167 putobject 117.612316
168 putobject 95.377638
169 putobject 103.966738
170 putobject 117.708519
171 putobject 198.141979
172 putobject 114.142965
173 putobject 236.392525
174 putobject 179.734151
175 putobject 116.104981
176 putobject 176.715002
177 putobject 116.993234
178 putobject 194.191116
179 putobject 103.240473
180 putobject 149.059204
181 putobject 111.387445
182 putobject 206.070688
183 putobject 116.469762
184 putobject 348.528368
185 putobject 112.547413
186 putobject 217.546766
187 putobject 112.896413
188 putobject 215.344494
189 putobject 115.486139
190 putobject 118.703142
191 putobject 213.602786
192 putobject 109.749772
193 putobject 112.005876
194 putobject 112.576999
195 putobject 115.241835
196 putobject 216.114253
197 putobject 122.455961
198 putobject 107.242653
199 putobject 152.564715
200 putobject 122.086712
201 putobject 199.452321
202 listobjects 300.581365
203 listobjects 277.790833
204 listobjects 300.438323
205 listobjects 306.401268
206 listobjects 247.070642
207 listobjects 265.460266
208 listobjects 307.833962
209 listobjects 278.348249
210 listobjects 289.753623
211 listobjects 428.597858
212 listobjects 291.670485
213 listobjects 291.750707
214 listobjects 337.027161
215 listobjects 246.554724
216 listobjects 257.611418
217 listobjects 320.019725
218 listobjects 257.59075
219 listobjects 295.037894
220 listobjects 283.894836
221 listobjects 247.228281
222 listobjects 253.136202
223 listobjects 337.787051
224 listobjects 258.82629
225 listobjects 268.927815
226 listobjects 321.913973
227 listobjects 281.985389
228 listobjects 260.410992
229 listobjects 287.980444
230 listobjects 275.53983
231 listobjects 269.558019
232 listobjects 287.118302
233 listobjects 290.645774
234 listobjects 285.738097
235 listobjects 392.130411
236 listobjects 289.995953
237 listobjects 262.023637
238 listobjects 325.831103
239 listobjects 278.981469
240 listobjects 284.476107
241 listobjects 314.008409
242 listobjects 247.46578
243 listobjects 241.607423
244 listobjects 280.720744
245 listobjects 251.493039
246 listobjects 251.274956
247 listobjects 308.848053
248 listobjects 247.605826
249 listobjects 254.399835
250 listobjects 272.523456
251 listobjects 295.263441
252 listobjects 287.200498
253 listobjects 321.094731
254 listobjects 298.581687
255 listobjects 267.287678
256 listobjects 334.118082
257 listobjects 294.63522
258 listobjects 396.182216
259 listobjects 324.845486
260 listobjects 277.918475
261 listobjects 276.752988
262 listobjects 286.609247
263 listobjects 237.788439
264 listobjects 291.572429
265 listobjects 289.931931
266 listobjects 292.7288
267 listobjects 278.329784
268 listobjects 312.4204
269 listobjects 250.387574
270 listobjects 266.618319
271 listobjects 294.083115
272 listobjects 282.236044
273 listobjects 246.433896
274 listobjects 259.166735
275 listobjects 283.552347
276 listobjects 262.037944
277 listobjects 438.74009
278 listobjects 261.966819
279 listobjects 272.358954
280 listobjects 328.634834
281 listobjects 249.669345
282 listobjects 271.167948
283 listobjects 314.412415
284 listobjects 247.691167
285 listobjects 283.680419
286 listobjects 343.269156
287 listobjects 251.896493
288 listobjects 252.494486
289 listobjects 422.943899
290 listobjects 249.298261
291 listobjects 261.622207
292 listobjects 297.580581
293 listobjects 283.851304
294 listobjects 271.55979
295 listobjects 285.568215
296 listobjects 230.497899
297 listobjects 263.590013
298 listobjects 328.976692
299 listobjects 263.056663
300 listobjects 290.204427
301 listobjects 313.846942
302 getobject 182.785981
303 getobject 109.499628
304 getobject 106.650121
305 getobject 121.295002
306 getobject 117.047546
307 getobject 121.821129
308 getobject 99.500457
309 getobject 110.204614
310 getobject 90.665673
311 getobject 103.448016
312 getobject 109.513215
313 getobject 109.836517
314 getobject 108.865037
315 getobject 109.142191
316 getobject 115.979895
317 getobject 114.514819
318 getobject 261.303813
319 getobject 97.933911
320 getobject 105.707616
321 getobject 95.21515
322 getobject 114.97932
323 getobject 97.167349
324 getobject 109.995088
325 getobject 116.094451
326 getobject 92.307803
327 getobject 98.966066
328 getobject 92.048943
329 getobject 108.609352
330 getobject 108.804713
331 getobject 98.891615
332 getobject 115.83029
333 getobject 243.530767
334 getobject 210.53295
335 getobject 112.15031
336 getobject 111.292435
337 getobject 114.00824
338 getobject 104.009179
339 getobject 95.101244
340 getobject 107.050751
341 getobject 120.16432
342 getobject 194.587857
343 getobject 241.974629
344 getobject 106.301621
345 getobject 108.892679
346 getobject 108.393894
347 getobject 246.919505
348 getobject 107.829215
349 getobject 102.11495
350 getobject 103.701736
351 getobject 101.141817
352 getobject 95.347592
353 getobject 103.559998
354 getobject 88.331191
355 getobject 98.132176
356 getobject 108.62405
357 getobject 105.357643
358 getobject 113.917848
359 getobject 97.43226
360 getobject 93.802174
361 getobject 98.555798
362 getobject 255.646637
363 getobject 106.634181
364 getobject 106.455823
365 getobject 111.535305
366 getobject 96.665838
367 getobject 109.615498
368 getobject 105.223109
369 getobject 109.366968
370 getobject 103.517893
371 getobject 102.918258
372 getobject 100.815486
373 getobject 108.270276
374 getobject 96.698476
375 getobject 109.806247
376 getobject 115.544536
377 getobject 112.49002
378 getobject 259.839035
379 getobject 111.031397
380 getobject 106.06039
381 getobject 112.722872
382 getobject 113.953012
383 getobject 103.298047
384 getobject 99.28177
385 getobject 112.432912
386 getobject 96.173452
387 getobject 99.882016
388 getobject 111.264639
389 getobject 108.417085
390 getobject 117.353102
391 getobject 95.225466
392 getobject 111.075511
393 getobject 264.20257
394 getobject 117.333244
395 getobject 120.125003
396 getobject 108.663392
397 getobject 119.961413
398 getobject 95.005941
399 getobject 95.4336
400 getobject 115.280757
401 getobject 97.201088
402 removeobject 222.573682
403 removeobject 231.761917
404 removeobject 442.585842
405 removeobject 234.382532
406 removeobject 387.512105
407 removeobject 305.628182
408 removeobject 289.502486
409 removeobject 231.169395
410 removeobject 316.098005
411 removeobject 209.524123
412 removeobject 424.370175
413 removeobject 216.714103
414 removeobject 375.594149
415 removeobject 223.780047
416 removeobject 350.67269
417 removeobject 336.975443
418 removeobject 323.65556
419 removeobject 292.523519
420 removeobject 231.739565
421 removeobject 472.605248
422 removeobject 205.028165
423 removeobject 297.558856
424 removeobject 354.25723
425 removeobject 358.617621
426 removeobject 231.66819
427 removeobject 218.014656
428 removeobject 293.081194
429 removeobject 220.378333
430 removeobject 461.275468
431 removeobject 294.197941
432 removeobject 199.614791
433 removeobject 294.474434
434 removeobject 418.385018
435 removeobject 230.544922
436 removeobject 327.569235
437 removeobject 218.21218
438 removeobject 307.861353
439 removeobject 328.311953
440 removeobject 216.075602
441 removeobject 210.143125
442 removeobject 208.936679
443 removeobject 190.425894
444 removeobject 224.586404
445 removeobject 337.963656
446 removeobject 444.272797
447 removeobject 301.920388
448 removeobject 340.421272
449 removeobject 338.346501
450 removeobject 296.788527
451 removeobject 207.559962
452 removeobject 457.649247
453 removeobject 300.037582
454 removeobject 321.593867
455 removeobject 292.55592
456 removeobject 309.367726
457 removeobject 255.574575
458 removeobject 426.947087
459 removeobject 265.768115
460 removeobject 329.29239
461 removeobject 308.343145
462 removeobject 359.263264
463 removeobject 203.957307
464 removeobject 365.564661
465 removeobject 237.358118
466 removeobject 317.935617
467 removeobject 313.741912
468 removeobject 312.306754
469 removeobject 323.298865
470 removeobject 309.122932
471 removeobject 202.639531
472 removeobject 195.346255
473 removeobject 218.604323
474 removeobject 240.143875
475 removeobject 341.057908
476 removeobject 307.301071
477 removeobject 326.504098
478 removeobject 309.864819
479 removeobject 300.616459
480 removeobject 232.943336
481 removeobject 220.08092
482 removeobject 237.389609
483 removeobject 334.716365
484 removeobject 291.190192
485 removeobject 206.634058
486 removeobject 291.836125
487 removeobject 307.390831
488 removeobject 197.95132
489 removeobject 379.646215
490 removeobject 211.924509
491 removeobject 244.664849
492 removeobject 348.966198
493 removeobject 316.319435
494 removeobject 291.416401
495 removeobject 215.855116
496 removeobject 329.053698
497 removeobject 322.553745
498 removeobject 316.627999
499 removeobject 311.277814
500 removeobject 330.250545
501 removeobject 221.223845

505
LICENSE
View file

@ -1,505 +0,0 @@
COOPERATIVE NON-VIOLENT PUBLIC LICENSE v4
Preamble
The Cooperative Non-Violent Public license is a freedom-respecting sharealike
license for both the author of a work as well as those subject to a work.
It aims to protect the basic rights of human beings from exploitation,
the earth from plunder, and the equal treatment of the workers involved in the
creation of the work. It aims to ensure a copyrighted work is forever
available for public use, modification, and redistribution under the same
terms so long as the work is not used for harm. For more information about
the CNPL refer to the official webpage
Official Webpage: https://thufie.lain.haus/NPL.html
Terms and Conditions
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
COOPERATIVE NON-VIOLENT PUBLIC LICENSE v4 ("LICENSE"). THE WORK IS
PROTECTED BY COPYRIGHT AND ALL OTHER APPLICABLE LAWS. ANY USE OF THE
WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED IN THIS
LICENSE, YOU AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE.
TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT,
THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN AS CONSIDERATION
FOR ACCEPTING THE TERMS AND CONDITIONS OF THIS LICENSE AND FOR AGREEING
TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS LICENSE.
1. DEFINITIONS
a. "Act of War" means any action of one country against any group
either with an intention to provoke a conflict or an action that
occurs during a declared war or during armed conflict between
military forces of any origin. This includes but is not limited
to enforcing sanctions or sieges, supplying armed forces,
or profiting from the manufacture of tools or weaponry used in
military conflict.
b. "Adaptation" means a work based upon the Work, or upon the
Work and other pre-existing works, such as a translation,
adaptation, derivative work, arrangement of music or other
alterations of a literary or artistic work, or phonogram or
performance and includes cinematographic adaptations or any
other form in which the Work may be recast, transformed, or
adapted including in any form recognizably derived from the
original, except that a work that constitutes a Collection will
not be considered an Adaptation for the purpose of this License.
For the avoidance of doubt, where the Work is a musical work,
performance or phonogram, the synchronization of the Work in
timed-relation with a moving image ("synching") will be
considered an Adaptation for the purpose of this License.
c. "Bodily Harm" means any physical hurt or injury to a person that
interferes with the health or comfort of the person and that is more
more than merely transient or trifling in nature.
d. "Collection" means a collection of literary or artistic
works, such as encyclopedias and anthologies, or performances,
phonograms or broadcasts, or other works or subject matter other
than works listed in Section 1(i) below, which, by reason of the
selection and arrangement of their contents, constitute
intellectual creations, in which the Work is included in its
entirety in unmodified form along with one or more other
contributions, each constituting separate and independent works
in themselves, which together are assembled into a collective
whole. A work that constitutes a Collection will not be
considered an Adaptation (as defined above) for the purposes of
this License.
e. "Distribute" means to make available to the public the
original and copies of the Work or Adaptation, as appropriate,
through sale, gift or any other transfer of possession or
ownership.
f. "Incarceration" means confinement in a jail, prison, or any
other place where individuals of any kind are held against
either their will or the will of their legal guardians.
g. "Licensor" means the individual, individuals, entity or
entities that offer(s) the Work under the terms of this License.
h. "Original Author" means, in the case of a literary or
artistic work, the individual, individuals, entity or entities
who created the Work or if no individual or entity can be
identified, the publisher; and in addition (i) in the case of a
performance the actors, singers, musicians, dancers, and other
persons who act, sing, deliver, declaim, play in, interpret or
otherwise perform literary or artistic works or expressions of
folklore; (ii) in the case of a phonogram the producer being the
person or legal entity who first fixes the sounds of a
performance or other sounds; and, (iii) in the case of
broadcasts, the organization that transmits the broadcast.
i. "Work" means the literary and/or artistic work offered under
the terms of this License including without limitation any
production in the literary, scientific and artistic domain,
whatever may be the mode or form of its expression including
digital form, such as a book, pamphlet and other writing; a
lecture, address, sermon or other work of the same nature; a
dramatic or dramatico-musical work; a choreographic work or
entertainment in dumb show; a musical composition with or
without words; a cinematographic work to which are assimilated
works expressed by a process analogous to cinematography; a work
of drawing, painting, architecture, sculpture, engraving or
lithography; a photographic work to which are assimilated works
expressed by a process analogous to photography; a work of
applied art; an illustration, map, plan, sketch or
three-dimensional work relative to geography, topography,
architecture or science; a performance; a broadcast; a
phonogram; a compilation of data to the extent it is protected
as a copyrightable work; or a work performed by a variety or
circus performer to the extent it is not otherwise considered a
literary or artistic work.
j. "You" means an individual or entity exercising rights under
this License who has not previously violated the terms of this
License with respect to the Work, or who has received express
permission from the Licensor to exercise rights under this
License despite a previous violation.
k. "Publicly Perform" means to perform public recitations of the
Work and to communicate to the public those public recitations,
by any means or process, including by wire or wireless means or
public digital performances; to make available to the public
Works in such a way that members of the public may access these
Works from a place and at a place individually chosen by them;
to perform the Work to the public by any means or process and
the communication to the public of the performances of the Work,
including by public digital performance; to broadcast and
rebroadcast the Work by any means including signs, sounds or
images.
l. "Reproduce" means to make copies of the Work by any means
including without limitation by sound or visual recordings and
the right of fixation and reproducing fixations of the Work,
including storage of a protected performance or phonogram in
digital form or other electronic medium.
m. "Software" means any digital Work which, through use of a
third-party piece of Software or through the direct usage of
itself on a computer system, the memory of the computer is
modified dynamically or semi-dynamically. "Software",
secondly, processes or interprets information.
n. "Source Code" means the human-readable form of Software
through which the Original Author and/or Distributor originally
created, derived, and/or modified it.
o. "Surveilling" means the use of the Work to either
overtly or covertly observe and record persons and or their
activities.
p. "Web Service" means the use of a piece of Software to
interpret or modify information that is subsequently and directly
served to users over the Internet.
q. "Discriminate" means the use of a work to differentiate between
humans in a such a way which prioritizes some above others on the
basis of percieved membership within certain groups.
r. "Hate Speech" means communication or any form
of expression which is solely for the purpose of expressing hatred
for some group or advocating a form of Discrimination
(to Discriminate per definition in (q)) between humans.
2. FAIR DEALING RIGHTS
Nothing in this License is intended to reduce, limit, or restrict any
uses free from copyright or rights arising from limitations or
exceptions that are provided for in connection with the copyright
protection under copyright law or other applicable laws.
3. LICENSE GRANT
Subject to the terms and conditions of this License, Licensor hereby
grants You a worldwide, royalty-free, non-exclusive, perpetual (for the
duration of the applicable copyright) license to exercise the rights in
the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or
more Collections, and to Reproduce the Work as incorporated in
the Collections;
b. to create and Reproduce Adaptations provided that any such
Adaptation, including any translation in any medium, takes
reasonable steps to clearly label, demarcate or otherwise
identify that changes were made to the original Work. For
example, a translation could be marked "The original work was
translated from English to Spanish," or a modification could
indicate "The original work has been modified.";
c. to Distribute and Publicly Perform the Work including as
incorporated in Collections; and,
d. to Distribute and Publicly Perform Adaptations. The above
rights may be exercised in all media and formats whether now
known or hereafter devised. The above rights include the right
to make such modifications as are technically necessary to
exercise the rights in other media and formats. Subject to
Section 8(g), all rights not expressly granted by Licensor are
hereby reserved, including but not limited to the rights set
forth in Section 4(i).
4. RESTRICTIONS
The license granted in Section 3 above is expressly made subject to and
limited by the following restrictions:
a. You may Distribute or Publicly Perform the Work only under
the terms of this License. You must include a copy of, or the
Uniform Resource Identifier (URI) for, this License with every
copy of the Work You Distribute or Publicly Perform. You may not
offer or impose any terms on the Work that restrict the terms of
this License or the ability of the recipient of the Work to
exercise the rights granted to that recipient under the terms of
the License. You may not sublicense the Work. You must keep
intact all notices that refer to this License and to the
disclaimer of warranties with every copy of the Work You
Distribute or Publicly Perform. When You Distribute or Publicly
Perform the Work, You may not impose any effective technological
measures on the Work that restrict the ability of a recipient of
the Work from You to exercise the rights granted to that
recipient under the terms of the License. This Section 4(a)
applies to the Work as incorporated in a Collection, but this
does not require the Collection apart from the Work itself to be
made subject to the terms of this License. If You create a
Collection, upon notice from any Licensor You must, to the
extent practicable, remove from the Collection any credit as
required by Section 4(h), as requested. If You create an
Adaptation, upon notice from any Licensor You must, to the
extent practicable, remove from the Adaptation any credit as
required by Section 4(h), as requested.
b. Subject to the exception in Section 4(e), you may not
exercise any of the rights granted to You in Section 3 above in
any manner that is primarily intended for or directed toward
commercial advantage or private monetary compensation. The
exchange of the Work for other copyrighted works by means of
digital file-sharing or otherwise shall not be considered to be
intended for or directed toward commercial advantage or private
monetary compensation, provided there is no payment of any
monetary compensation in connection with the exchange of
copyrighted works.
c. If the Work meets the definition of Software, You may exercise
the rights granted in Section 3 only if You provide a copy of the
corresponding Source Code from which the Work was derived in digital
form, or You provide a URI for the corresponding Source Code of
the Work, to any recipients upon request.
d. If the Work is used as or for a Web Service, You may exercise
the rights granted in Section 3 only if You provide a copy of the
corresponding Source Code from which the Work was derived in digital
form, or You provide a URI for the corresponding Source Code to the
Work, to any recipients of the data served or modified by the Web
Service.
e. You may exercise the rights granted in Section 3 for
commercial purposes only if you satisfy any of the following:
i. You are a worker-owned business or worker-owned
collective; and
ii. after tax, all financial gain, surplus, profits and
benefits produced by the business or collective are
distributed among the worker-owners unless a set amount
is to be allocated towards community projects as decided
by a previously-established consensus agreement between the
worker-owners where all worker-owners agreed
iii. You are not using such rights on behalf of a business
other than those specified in 4(e.i) and elaborated upon in
4(e.ii), nor are using such rights as a proxy on behalf of a
business with the intent to circumvent the aforementioned
restrictions on such a business.
f. Any use by a business that is privately owned and managed,
and that seeks to generate profit from the labor of employees
paid by salary or other wages, is not permitted under this
license.
g. You may exercise the rights granted in Section 3 for
any purposes only if:
i. You do not use the Work for the purpose of inflicting
Bodily Harm on human beings (subject to criminal
prosecution or otherwise) outside of providing medical aid.
ii.You do not use the Work for the purpose of Surveilling
or tracking individuals for financial gain.
iii. You do not use the Work in an Act of War.
iv. You do not use the Work for the purpose of supporting
or profiting from an Act of War.
v. You do not use the Work for the purpose of Incarceration.
vi. You do not use the Work for the purpose of extracting
oil, gas, or coal.
vii. You do not use the Work for the purpose of
expediting, coordinating, or facilitating paid work
undertaken by individuals under the age of 12 years.
viii. You do not use the Work to either Discriminate or
spread Hate Speech on the basis of sex, sexual orientation,
gender identity, race, age, disability, color, national origin,
religion, or lower economic status.
h. If You Distribute, or Publicly Perform the Work or any
Adaptations or Collections, You must, unless a request has been
made pursuant to Section 4(a), keep intact all copyright notices
for the Work and provide, reasonable to the medium or means You
are utilizing: (i) the name of the Original Author (or
pseudonym, if applicable) if supplied, and/or if the Original
Author and/or Licensor designate another party or parties (e.g.,
a sponsor institute, publishing entity, journal) for attribution
("Attribution Parties") in Licensor!s copyright notice, terms of
service or by other reasonable means, the name of such party or
parties; (ii) the title of the Work if supplied; (iii) to the
extent reasonably practicable, the URI, if any, that Licensor
specifies to be associated with the Work, unless such URI does
not refer to the copyright notice or licensing information for
the Work; and, (iv) consistent with Section 3(b), in the case of
an Adaptation, a credit identifying the use of the Work in the
Adaptation (e.g., "French translation of the Work by Original
Author," or "Screenplay based on original Work by Original
Author"). The credit required by this Section 4(h) may be
implemented in any reasonable manner; provided, however, that in
the case of an Adaptation or Collection, at a minimum such credit
will appear, if a credit for all contributing authors of the
Adaptation or Collection appears, then as part of these credits
and in a manner at least as prominent as the credits for the
other contributing authors. For the avoidance of doubt, You may
only use the credit required by this Section for the purpose of
attribution in the manner set out above and, by exercising Your
rights under this License, You may not implicitly or explicitly
assert or imply any connection with, sponsorship or endorsement
by the Original Author, Licensor and/or Attribution Parties, as
appropriate, of You or Your use of the Work, without the
separate, express prior written permission of the Original
Author, Licensor and/or Attribution Parties.
i. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those
jurisdictions in which the right to collect royalties
through any statutory or compulsory licensing scheme
cannot be waived, the Licensor reserves the exclusive
right to collect such royalties for any exercise by You of
the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those
jurisdictions in which the right to collect royalties
through any statutory or compulsory licensing scheme can
be waived, the Licensor reserves the exclusive right to
collect such royalties for any exercise by You of the
rights granted under this License if Your exercise of such
rights is for a purpose or use which is otherwise than
noncommercial as permitted under Section 4(b) and
otherwise waives the right to collect royalties through
any statutory or compulsory licensing scheme; and,
iii.Voluntary License Schemes. The Licensor reserves the
right to collect royalties, whether individually or, in
the event that the Licensor is a member of a collecting
society that administers voluntary licensing schemes, via
that society, from any exercise by You of the rights
granted under this License that is for a purpose or use
which is otherwise than noncommercial as permitted under
Section 4(b).
j. Except as otherwise agreed in writing by the Licensor or as
may be otherwise permitted by applicable law, if You Reproduce,
Distribute or Publicly Perform the Work either by itself or as
part of any Adaptations or Collections, You must not distort,
mutilate, modify or take other derogatory action in relation to
the Work which would be prejudicial to the Original Author's
honor or reputation. Licensor agrees that in those jurisdictions
(e.g. Japan), in which any exercise of the right granted in
Section 3(b) of this License (the right to make Adaptations)
would be deemed to be a distortion, mutilation, modification or
other derogatory action prejudicial to the Original Author's
honor and reputation, the Licensor will waive or not assert, as
appropriate, this Section, to the fullest extent permitted by
the applicable national law, to enable You to reasonably
exercise Your right under Section 3(b) of this License (right to
make Adaptations) but not otherwise.
k. Do not make any legal claim against anyone accusing the
Work, with or without changes, alone or with other works,
of infringing any patent claim.
5. REPRESENTATIONS, WARRANTIES AND DISCLAIMER
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO
YOU.
6. LIMITATION ON LIABILITY
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL
LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF
THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES.
7. TERMINATION
a. This License and the rights granted hereunder will terminate
automatically upon any breach by You of the terms of this
License. Individuals or entities who have received Adaptations
or Collections from You under this License, however, will not
have their licenses terminated provided such individuals or
entities remain in full compliance with those licenses. Sections
1, 2, 5, 6, 7, and 8 will survive any termination of this
License.
b. Subject to the above terms and conditions, the license
granted here is perpetual (for the duration of the applicable
copyright in the Work). Notwithstanding the above, Licensor
reserves the right to release the Work under different license
terms or to stop distributing the Work at any time; provided,
however that any such election will not serve to withdraw this
License (or any other license that has been, or is required to
be, granted under the terms of this License), and this License
will continue in full force and effect unless terminated as
stated above.
8. REVISED LICENSE VERSIONS
a. This License may receive future revisions in the original
spirit of the license intended to strengthen This License.
Each version of This License has an incrementing version number.
b. Unless otherwise specified like in Section 8(c) The Licensor
has only granted this current version of This License for The Work.
In this case future revisions do not apply.
c. The Licensor may specify that the latest available
revision of This License be used for The Work by either explicitly
writing so or by suffixing the License URI with a "+" symbol.
d. The Licensor may specify that The Work is also available
under the terms of This License's current revision as well
as specific future revisions. The Licensor may do this by
writing it explicitly or suffixing the License URI with any
additional version numbers each separated by a comma.
9. MISCELLANEOUS
a. Each time You Distribute or Publicly Perform the Work or a
Collection, the Licensor offers to the recipient a license to
the Work on the same terms and conditions as the license granted
to You under this License.
b. Each time You Distribute or Publicly Perform an Adaptation,
Licensor offers to the recipient a license to the original Work
on the same terms and conditions as the license granted to You
under this License.
c. If the Work is classified as Software, each time You Distribute
or Publicly Perform an Adaptation, Licensor offers to the recipient
a copy and/or URI of the corresponding Source Code on the same
terms and conditions as the license granted to You under this License.
d. If the Work is used as a Web Service, each time You Distribute
or Publicly Perform an Adaptation, or serve data derived from the
Software, the Licensor offers to any recipients of the data a copy
and/or URI of the corresponding Source Code on the same terms and
conditions as the license granted to You under this License.
e. If any provision of this License is invalid or unenforceable
under applicable law, it shall not affect the validity or
enforceability of the remainder of the terms of this License,
and without further action by the parties to this agreement,
such provision shall be reformed to the minimum extent necessary
to make such provision valid and enforceable.
f. No term or provision of this License shall be deemed waived
and no breach consented to unless such waiver or consent shall
be in writing and signed by the party to be charged with such
waiver or consent.
g. This License constitutes the entire agreement between the
parties with respect to the Work licensed here. There are no
understandings, agreements or representations with respect to
the Work not specified here. Licensor shall not be bound by any
additional provisions that may appear in any communication from
You. This License may not be modified without the mutual written
agreement of the Licensor and You.
h. The rights granted under, and the subject matter referenced,
in this License were drafted utilizing the terminology of the
Berne Convention for the Protection of Literary and Artistic
Works (as amended on September 28, 1979), the Rome Convention of
1961, the WIPO Copyright Treaty of 1996, the WIPO Performances
and Phonograms Treaty of 1996 and the Universal Copyright
Convention (as revised on July 24, 1971). These rights and
subject matter take effect in the relevant jurisdiction in which
the License terms are sought to be enforced according to the
corresponding provisions of the implementation of those treaty
provisions in the applicable national law. If the standard suite
of rights granted under applicable copyright law includes
additional rights not granted under this License, such
additional rights are deemed to be included in the License; this
License is not intended to restrict the license of any rights
under applicable law.

View file

@ -1,77 +1,42 @@
# mknet
# mk-testnet
mknet is a tool to simulate various network topologies
locally thanks to network namespaces and traffic control (tc).
Show usage:
## Prepare your environment
```help
python3 main.py
```
Get the repository:
## Example
```bash
git clone https://git.deuxfleurs.fr/Deuxfleurs/mknet.git
cd mknet
sudo rm -rf /tmp/garage-testnet/ # always start by deleting previous run
sudo python3 main.py create ./config.yml
sudo python3 main.py run-all example/deploy_garage.sh
sudo python3 main.py run dc1:dc1s1 garage -c /tmp/garage-testnet/dc1/dc1s1/garage.toml status
sudo python3 main.py destroy
```
Run our configuration script:
## Instrumented daemons
If you want to use the scripts provided in the `instrumented` folder,
you must add to your path some tools
### Garage (`deploy_garage.sh`)
```bash
./prepare.py
# see versions on https://garagehq.deuxfleurs.fr/_releases.html
export GRG_ARCH=x86_64-unknown-linux-musl
export GRG_VERSION=v0.5.0
sudo wget https://garagehq.deuxfleurs.fr/_releases/${GRG_VERSION}/${GRG_ARCH}/garage -O /usr/local/bin/garage
sudo chmod +x /usr/local/bin/garage
garage help
```
Now, you are ready to launch an experiment:
```bash
sudo -i
source .venv/bin/activate
./mknet scenario ./topo/50ms.yml ./scenarios/garage-s3lat garage-v0.8
```
If a script crash, you must manually destroy the topology:
### Minio
```
./mknet destroy
sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
sudo chmod +x /usr/local/bin/minio
```
## Topologies
All topologies:
- `./topo/dc.yml` - A 3 node topology connected with a 1Gbit/s link and a 1ms latency
- `./topo/with-vdsl.yml` - A topology mixing datacenters with fast internal connectivity and an isolated VDSL node
- `./topo/50ms.yml` - An artifical topology simulating nodes with high bandwidth but with a fixed 50ms latency, useful to quantify the impact of latency on a distributed software
- `./topo/multi-dc.yml` - Simulate 3 DC interconnected with 50ms latency WAN network and close to zero latency inside the DC
- `./topo/{1,5,10,50,100}mbps.yml` - Simulate 3 nodes interconnected with a bandwidth bottleneck.
Feel free to write new topologies!
## Scenarios
All scenarios:
- `./scenarios/garage-s3lat [garage-v0.7|garage-v0.8]` - Run s3lat on Garage
- `./scenarios/garage-concurrent [garage-v0.7|garage-v0.8]` - Run s3concurrent on Garage
- `./scenarios/garage-warp [garage-v0.7|garage-v0.8] [default|fast]` - Run warp on Garage. 2 flavors are available: fast and default.
- `./scenarios/garage-s3billion [garage-v0.7|garage-v0.8]` - Run s3billion on Garage
*Scenarios take optional flavors as input that modulate their behavioir. Passing them is not mandatory,
a default one will be selected for you.*
How to run them:
```bash
./mknet scenario <topology> <scenario> [flavors...]
./mknet scenario ./topo/50ms.yml ./scenarios/garage-s3lat garage-v0.8
```
How to write good scenarios:
- If a scenario can be run with multiple different parameters, write one scenario with multiple flavors
- If the logic ran is different, write a new scenario
- A scenario code must remain short and looks like a DSL, abstract the logic in the `fragments/` module
## Manual usage
```bash
./mknet create ./topo/with-vdsl.yml
./mknet run-all ./scenarios/garage-manual
./mknet run dc1:dc1s1 /tmp/mknet-bin/garage* -c /tmp/mknet-store/garage/dc1/dc1s1/garage.toml status
./mknet run-all ./scenarios/clean
./mknet destroy

28
analyse.R Normal file
View file

@ -0,0 +1,28 @@
install.packages("tidyverse")
install.packages("svglite")
library(tidyverse)
library(svglite)
read_csv("50ms.garage.csv") %>% add_column(daemon="garage 0.5.0") -> a
read_csv("50ms.minio.csv") %>% add_column(daemon="minio RELEASE.2021-11-24T23-19-33Z") -> b
bind_rows(a,b) %>% group_by(daemon,op) %>% summarise(
time_mean = mean(time),
time_max = max(time),
time_min = min(time)
) -> c
ggplot(c, aes(x=op,y=time_mean,fill=daemon,ymin=time_min,ymax=time_max)) +
geom_bar(stat="identity", position=position_dodge(),color="black") +
geom_errorbar(position=position_dodge(.9),width=.2) +
scale_y_continuous(expand=c(0,0))+
coord_flip() +
labs(
x="S3 Endpoint",
y="Latency (ms)",
fill="Daemon",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/quentin/benchmarks",
title="S3 endpoint latency in a simulated geo-distributed cluster",
subtitle="100 measurements, 5 nodes, 100ms RTT + 20ms jitter between nodes\nno contention: latency is due to intra-cluster communications\ncolored bar = mean latency, error bar = min and max") +
theme_classic() +
ggsave("endpoint-latency.png", width=200, height=110, units="mm")

@ -1 +0,0 @@
Subproject commit 902555b9d5db594fdad927f51c2d8984d6e9f6a5

View file

@ -1,17 +0,0 @@
sent,success,elapsed,elapsed_per_req
1,1,1733568406,1733568406
2,2,3717781951,1858890975
3,3,5554603016,1851534338
4,4,7243764558,1810941139
5,5,9088779023,1817755804
6,6,10853379229,1808896538
7,7,12687932044,1812561720
8,8,14457291732,1807161466
9,9,16271996844,1807999649
10,10,18066058997,1806605899
11,11,20370606012,1851873273
12,12,11605742376,967145198
13,13,13622546503,1047888192
14,14,16059774589,1147126756
15,15,20283463752,1352230916
16,16,23829428368,1489339273
1 sent success elapsed elapsed_per_req
2 1 1 1733568406 1733568406
3 2 2 3717781951 1858890975
4 3 3 5554603016 1851534338
5 4 4 7243764558 1810941139
6 5 5 9088779023 1817755804
7 6 6 10853379229 1808896538
8 7 7 12687932044 1812561720
9 8 8 14457291732 1807161466
10 9 9 16271996844 1807999649
11 10 10 18066058997 1806605899
12 11 11 20370606012 1851873273
13 12 12 11605742376 967145198
14 13 13 13622546503 1047888192
15 14 14 16059774589 1147126756
16 15 15 20283463752 1352230916
17 16 16 23829428368 1489339273

View file

@ -1,17 +0,0 @@
sent,success,elapsed,elapsed_per_req
1,1,3646698401,3646698401
2,2,7245492636,3622746318
3,3,10896710797,3632236932
4,4,14469160703,3617290175
5,4,18066381776,3613276355
6,3,19209830571,3201638428
7,0,186084824,26583546
8,0,183207903,22900987
9,0,199743038,22193670
10,0,195703069,19570306
11,0,198204447,18018586
12,0,187247329,15603944
13,0,193441556,14880119
14,0,192003016,13714501
15,0,140156357,9343757
16,0,186228134,11639258
1 sent success elapsed elapsed_per_req
2 1 1 3646698401 3646698401
3 2 2 7245492636 3622746318
4 3 3 10896710797 3632236932
5 4 4 14469160703 3617290175
6 5 4 18066381776 3613276355
7 6 3 19209830571 3201638428
8 7 0 186084824 26583546
9 8 0 183207903 22900987
10 9 0 199743038 22193670
11 10 0 195703069 19570306
12 11 0 198204447 18018586
13 12 0 187247329 15603944
14 13 0 193441556 14880119
15 14 0 192003016 13714501
16 15 0 140156357 9343757
17 16 0 186228134 11639258

View file

@ -1,17 +0,0 @@
sent,success,elapsed,elapsed_per_req
1,1,1634632370,1634632370
2,2,3799299300,1899649650
3,3,5436258664,1812086221
4,4,7242028242,1810507060
5,5,9041569964,1808313992
6,6,10852330277,1808721712
7,7,12646683069,1806669009
8,8,14468867472,1808608434
9,9,16251724200,1805747133
10,10,18190271787,1819027178
11,11,19877017065,1807001551
12,12,20526867033,1710572252
13,13,24558838287,1889141406
14,14,25274586429,1805327602
15,15,27180202376,1812013491
16,16,29437555977,1839847248
1 sent success elapsed elapsed_per_req
2 1 1 1634632370 1634632370
3 2 2 3799299300 1899649650
4 3 3 5436258664 1812086221
5 4 4 7242028242 1810507060
6 5 5 9041569964 1808313992
7 6 6 10852330277 1808721712
8 7 7 12646683069 1806669009
9 8 8 14468867472 1808608434
10 9 9 16251724200 1805747133
11 10 10 18190271787 1819027178
12 11 11 19877017065 1807001551
13 12 12 20526867033 1710572252
14 13 13 24558838287 1889141406
15 14 14 25274586429 1805327602
16 15 15 27180202376 1812013491
17 16 16 29437555977 1839847248

View file

@ -1,17 +0,0 @@
sent,success,elapsed,elapsed_per_req
1,1,3638584739,3638584739
2,2,7246358601,3623179300
3,3,11160920229,3720306743
4,4,14454330626,3613582656
5,5,18052975913,3610595182
6,6,21690341725,3615056954
7,7,25268069065,3609724152
8,8,29007558135,3625944766
9,9,32688763527,3632084836
10,10,36101205725,3610120572
11,11,28245933586,2567812144
12,12,43983751108,3665312592
13,13,53456719112,4112055316
14,14,54398690114,3885620722
15,15,54153860198,3610257346
16,16,57732527899,3608282993
1 sent success elapsed elapsed_per_req
2 1 1 3638584739 3638584739
3 2 2 7246358601 3623179300
4 3 3 11160920229 3720306743
5 4 4 14454330626 3613582656
6 5 5 18052975913 3610595182
7 6 6 21690341725 3615056954
8 7 7 25268069065 3609724152
9 8 8 29007558135 3625944766
10 9 9 32688763527 3632084836
11 10 10 36101205725 3610120572
12 11 11 28245933586 2567812144
13 12 12 43983751108 3665312592
14 13 13 53456719112 4112055316
15 14 14 54398690114 3885620722
16 15 15 54153860198 3610257346
17 16 16 57732527899 3608282993

View file

@ -1,501 +0,0 @@
endpoint,nanoseconds
listbuckets,123446207
listbuckets,131497917
listbuckets,39054735
listbuckets,105410142
listbuckets,134197174
listbuckets,92373770
listbuckets,113362017
listbuckets,109195200
listbuckets,176558852
listbuckets,27177881
listbuckets,36252695
listbuckets,106228157
listbuckets,167364021
listbuckets,6904816
listbuckets,34264521
listbuckets,83810002
listbuckets,156429277
listbuckets,200458223
listbuckets,112529004
listbuckets,35129564
listbuckets,79573343
listbuckets,140150702
listbuckets,120555536
listbuckets,29181815
listbuckets,51198242
listbuckets,56133478
listbuckets,47130673
listbuckets,4870606
listbuckets,115299404
listbuckets,199760726
listbuckets,104304255
listbuckets,165317856
listbuckets,174747530
listbuckets,69139944
listbuckets,170345599
listbuckets,133286913
listbuckets,133428040
listbuckets,152317101
listbuckets,163419603
listbuckets,11954339
listbuckets,49001694
listbuckets,1909515
listbuckets,85317086
listbuckets,193461440
listbuckets,37110905
listbuckets,170866722
listbuckets,2820145
listbuckets,136496793
listbuckets,64132721
listbuckets,125251903
listbuckets,87449583
listbuckets,156290592
listbuckets,160402726
listbuckets,200273480
listbuckets,93021081
listbuckets,68304026
listbuckets,46970448
listbuckets,165308307
listbuckets,41980457
listbuckets,166480048
listbuckets,136400950
listbuckets,111337721
listbuckets,180455774
listbuckets,119142367
listbuckets,117091664
listbuckets,126145949
listbuckets,119181500
listbuckets,55147467
listbuckets,178508747
listbuckets,101172269
listbuckets,116156709
listbuckets,53168650
listbuckets,29044786
listbuckets,47899914
listbuckets,139056994
listbuckets,26962604
listbuckets,50780131
listbuckets,36960440
listbuckets,161531494
listbuckets,9947611
listbuckets,33134947
listbuckets,81109551
listbuckets,153415682
listbuckets,199163150
listbuckets,183053868
listbuckets,148142646
listbuckets,17965198
listbuckets,161258658
listbuckets,175383896
listbuckets,42076378
listbuckets,34970593
listbuckets,14042201
listbuckets,66182118
listbuckets,42936091
listbuckets,200730649
listbuckets,75462399
listbuckets,34967326
listbuckets,99414279
listbuckets,83041589
listbuckets,9915941
putobject,102659465
putobject,92835679
putobject,108731599
putobject,201811799
putobject,106443490
putobject,92567983
putobject,238871966
putobject,104158815
putobject,106243742
putobject,116316799
putobject,108757989
putobject,97366623
putobject,97898375
putobject,96967168
putobject,100256148
putobject,107432215
putobject,102248459
putobject,251441345
putobject,104946713
putobject,110238211
putobject,108091689
putobject,113202108
putobject,98765973
putobject,104565383
putobject,111568023
putobject,112197090
putobject,105911994
putobject,95484988
putobject,104482906
putobject,234879244
putobject,113432122
putobject,100713850
putobject,108868215
putobject,103499519
putobject,104655812
putobject,115506648
putobject,101683821
putobject,108092129
putobject,101964070
putobject,106886313
putobject,112577538
putobject,261098453
putobject,113249625
putobject,108966089
putobject,109411069
putobject,104522489
putobject,110678803
putobject,105536735
putobject,110833494
putobject,112977212
putobject,98197749
putobject,110378043
putobject,375687474
putobject,203462479
putobject,115639116
putobject,118053054
putobject,110270019
putobject,109764686
putobject,90674345
putobject,98625115
putobject,103500960
putobject,102995627
putobject,236288420
putobject,107760181
putobject,112772765
putobject,99998427
putobject,117912217
putobject,105863219
putobject,113652925
putobject,100828684
putobject,95361573
putobject,95500334
putobject,106068286
putobject,99928444
putobject,261266283
putobject,106924492
putobject,110718855
putobject,87597876
putobject,108996183
putobject,99171595
putobject,115447052
putobject,103467696
putobject,104448307
putobject,97229488
putobject,106477027
putobject,105427947
putobject,233050123
putobject,115135303
putobject,113237921
putobject,110612835
putobject,102891788
putobject,112480159
putobject,117117775
putobject,196493186
putobject,104291470
putobject,118422258
putobject,104951716
putobject,244946550
putobject,98641292
putobject,119142327
listobjects,227618086
listobjects,218373723
listobjects,220425637
listobjects,212659074
listobjects,194860492
listobjects,221131339
listobjects,227735226
listobjects,212887826
listobjects,202906841
listobjects,221091271
listobjects,216883738
listobjects,213001179
listobjects,217273734
listobjects,211956305
listobjects,213529174
listobjects,375065283
listobjects,218843356
listobjects,217068015
listobjects,223369781
listobjects,219801804
listobjects,225260921
listobjects,207088252
listobjects,229780152
listobjects,227569658
listobjects,211492577
listobjects,200421226
listobjects,224666076
listobjects,217078671
listobjects,220658029
listobjects,220137146
listobjects,205746397
listobjects,222356274
listobjects,210329960
listobjects,219004606
listobjects,226442588
listobjects,374038605
listobjects,221425877
listobjects,226949625
listobjects,198272437
listobjects,215884986
listobjects,210904573
listobjects,231082876
listobjects,220581992
listobjects,215368028
listobjects,204236634
listobjects,230323641
listobjects,221006783
listobjects,197521967
listobjects,217673459
listobjects,210402664
listobjects,222289473
listobjects,216105460
listobjects,233017185
listobjects,217884686
listobjects,216886613
listobjects,215456984
listobjects,342657645
listobjects,218310540
listobjects,346101165
listobjects,227114600
listobjects,207167945
listobjects,217958955
listobjects,256687056
listobjects,216946794
listobjects,211024233
listobjects,221148255
listobjects,214229333
listobjects,224119805
listobjects,217875907
listobjects,216024912
listobjects,220679148
listobjects,218154613
listobjects,222423060
listobjects,212511440
listobjects,215068766
listobjects,207965636
listobjects,374287848
listobjects,231411797
listobjects,344053841
listobjects,218949902
listobjects,208085171
listobjects,202097107
listobjects,220625984
listobjects,232280185
listobjects,214265437
listobjects,216862289
listobjects,219434755
listobjects,217021028
listobjects,214401512
listobjects,207317610
listobjects,215392944
listobjects,217703786
listobjects,215988628
listobjects,198853351
listobjects,222486834
listobjects,213094404
listobjects,211948650
listobjects,215660888
listobjects,222729552
listobjects,357486752
getobject,120789563
getobject,257364122
getobject,193090188
getobject,105639883
getobject,110039709
getobject,106107405
getobject,113226765
getobject,228216027
getobject,204992307
getobject,115070175
getobject,118444544
getobject,116666047
getobject,114052724
getobject,109807911
getobject,108123550
getobject,245998795
getobject,103858529
getobject,104810357
getobject,101301352
getobject,104881290
getobject,101871689
getobject,245400756
getobject,99811659
getobject,107963659
getobject,108133779
getobject,109433413
getobject,112918863
getobject,99263685
getobject,109925392
getobject,404106741
getobject,111264038
getobject,107867546
getobject,232065851
getobject,104837346
getobject,249346993
getobject,107660264
getobject,98665144
getobject,93135947
getobject,93305867
getobject,103816208
getobject,101191343
getobject,104046332
getobject,234664977
getobject,109126683
getobject,109256458
getobject,111475958
getobject,106229192
getobject,111367102
getobject,247160403
getobject,114725281
getobject,115208863
getobject,115752038
getobject,99434436
getobject,114499775
getobject,114262136
getobject,237897437
getobject,109039858
getobject,116366349
getobject,109513421
getobject,119350461
getobject,103568549
getobject,268923073
getobject,103935562
getobject,114438288
getobject,250696155
getobject,100985713
getobject,108943735
getobject,107398809
getobject,201770787
getobject,258949074
getobject,108722357
getobject,106948669
getobject,105753903
getobject,106842969
getobject,254243109
getobject,109977076
getobject,101122461
getobject,106152776
getobject,105146877
getobject,115352192
getobject,114154611
getobject,106352783
getobject,316675402
getobject,109678912
getobject,105611654
getobject,111231964
getobject,110622814
getobject,103520055
getobject,264080226
getobject,115777874
getobject,117219506
getobject,237658128
getobject,105861315
getobject,118189958
getobject,250123569
getobject,210303951
getobject,114146153
getobject,114062677
getobject,116419134
getobject,110233217
removeobject,230846328
removeobject,352354358
removeobject,213513979
removeobject,213021069
removeobject,201490202
removeobject,212111001
removeobject,215118297
removeobject,206781539
removeobject,490175308
removeobject,207408693
removeobject,201921334
removeobject,214565432
removeobject,223499977
removeobject,219187737
removeobject,353799701
removeobject,226319108
removeobject,204468762
removeobject,206638858
removeobject,227752042
removeobject,227770838
removeobject,368061761
removeobject,304793510
removeobject,231980092
removeobject,227557765
removeobject,216285686
removeobject,204581431
removeobject,332004595
removeobject,209905432
removeobject,208660772
removeobject,298520566
removeobject,221629301
removeobject,216850310
removeobject,346809979
removeobject,225626686
removeobject,335040322
removeobject,217416498
removeobject,221590626
removeobject,211254506
removeobject,218186009
removeobject,333605972
removeobject,214970419
removeobject,400660245
removeobject,226176422
removeobject,210009344
removeobject,214122397
removeobject,217046195
removeobject,348420624
removeobject,222496374
removeobject,200770472
removeobject,206765238
removeobject,212797886
removeobject,221853199
removeobject,366803902
removeobject,369766134
removeobject,254126638
removeobject,206946940
removeobject,214755369
removeobject,222743167
removeobject,214028196
removeobject,365328074
removeobject,222478296
removeobject,200478669
removeobject,228313711
removeobject,351395352
removeobject,347788382
removeobject,370554938
removeobject,220125163
removeobject,211178604
removeobject,478779432
removeobject,226303414
removeobject,212846913
removeobject,232756403
removeobject,352451452
removeobject,204864755
removeobject,386939750
removeobject,236333214
removeobject,213864532
removeobject,337968992
removeobject,208224425
removeobject,215012709
removeobject,220231159
removeobject,200163319
removeobject,201449085
removeobject,203033356
removeobject,362988387
removeobject,352665831
removeobject,255105686
removeobject,209154819
removeobject,218832617
removeobject,220790763
removeobject,345915165
removeobject,213304301
removeobject,218302224
removeobject,218254023
removeobject,204621450
removeobject,213964266
removeobject,383714183
removeobject,312511671
removeobject,207629778
removeobject,203927189
1 endpoint nanoseconds
2 listbuckets 123446207
3 listbuckets 131497917
4 listbuckets 39054735
5 listbuckets 105410142
6 listbuckets 134197174
7 listbuckets 92373770
8 listbuckets 113362017
9 listbuckets 109195200
10 listbuckets 176558852
11 listbuckets 27177881
12 listbuckets 36252695
13 listbuckets 106228157
14 listbuckets 167364021
15 listbuckets 6904816
16 listbuckets 34264521
17 listbuckets 83810002
18 listbuckets 156429277
19 listbuckets 200458223
20 listbuckets 112529004
21 listbuckets 35129564
22 listbuckets 79573343
23 listbuckets 140150702
24 listbuckets 120555536
25 listbuckets 29181815
26 listbuckets 51198242
27 listbuckets 56133478
28 listbuckets 47130673
29 listbuckets 4870606
30 listbuckets 115299404
31 listbuckets 199760726
32 listbuckets 104304255
33 listbuckets 165317856
34 listbuckets 174747530
35 listbuckets 69139944
36 listbuckets 170345599
37 listbuckets 133286913
38 listbuckets 133428040
39 listbuckets 152317101
40 listbuckets 163419603
41 listbuckets 11954339
42 listbuckets 49001694
43 listbuckets 1909515
44 listbuckets 85317086
45 listbuckets 193461440
46 listbuckets 37110905
47 listbuckets 170866722
48 listbuckets 2820145
49 listbuckets 136496793
50 listbuckets 64132721
51 listbuckets 125251903
52 listbuckets 87449583
53 listbuckets 156290592
54 listbuckets 160402726
55 listbuckets 200273480
56 listbuckets 93021081
57 listbuckets 68304026
58 listbuckets 46970448
59 listbuckets 165308307
60 listbuckets 41980457
61 listbuckets 166480048
62 listbuckets 136400950
63 listbuckets 111337721
64 listbuckets 180455774
65 listbuckets 119142367
66 listbuckets 117091664
67 listbuckets 126145949
68 listbuckets 119181500
69 listbuckets 55147467
70 listbuckets 178508747
71 listbuckets 101172269
72 listbuckets 116156709
73 listbuckets 53168650
74 listbuckets 29044786
75 listbuckets 47899914
76 listbuckets 139056994
77 listbuckets 26962604
78 listbuckets 50780131
79 listbuckets 36960440
80 listbuckets 161531494
81 listbuckets 9947611
82 listbuckets 33134947
83 listbuckets 81109551
84 listbuckets 153415682
85 listbuckets 199163150
86 listbuckets 183053868
87 listbuckets 148142646
88 listbuckets 17965198
89 listbuckets 161258658
90 listbuckets 175383896
91 listbuckets 42076378
92 listbuckets 34970593
93 listbuckets 14042201
94 listbuckets 66182118
95 listbuckets 42936091
96 listbuckets 200730649
97 listbuckets 75462399
98 listbuckets 34967326
99 listbuckets 99414279
100 listbuckets 83041589
101 listbuckets 9915941
102 putobject 102659465
103 putobject 92835679
104 putobject 108731599
105 putobject 201811799
106 putobject 106443490
107 putobject 92567983
108 putobject 238871966
109 putobject 104158815
110 putobject 106243742
111 putobject 116316799
112 putobject 108757989
113 putobject 97366623
114 putobject 97898375
115 putobject 96967168
116 putobject 100256148
117 putobject 107432215
118 putobject 102248459
119 putobject 251441345
120 putobject 104946713
121 putobject 110238211
122 putobject 108091689
123 putobject 113202108
124 putobject 98765973
125 putobject 104565383
126 putobject 111568023
127 putobject 112197090
128 putobject 105911994
129 putobject 95484988
130 putobject 104482906
131 putobject 234879244
132 putobject 113432122
133 putobject 100713850
134 putobject 108868215
135 putobject 103499519
136 putobject 104655812
137 putobject 115506648
138 putobject 101683821
139 putobject 108092129
140 putobject 101964070
141 putobject 106886313
142 putobject 112577538
143 putobject 261098453
144 putobject 113249625
145 putobject 108966089
146 putobject 109411069
147 putobject 104522489
148 putobject 110678803
149 putobject 105536735
150 putobject 110833494
151 putobject 112977212
152 putobject 98197749
153 putobject 110378043
154 putobject 375687474
155 putobject 203462479
156 putobject 115639116
157 putobject 118053054
158 putobject 110270019
159 putobject 109764686
160 putobject 90674345
161 putobject 98625115
162 putobject 103500960
163 putobject 102995627
164 putobject 236288420
165 putobject 107760181
166 putobject 112772765
167 putobject 99998427
168 putobject 117912217
169 putobject 105863219
170 putobject 113652925
171 putobject 100828684
172 putobject 95361573
173 putobject 95500334
174 putobject 106068286
175 putobject 99928444
176 putobject 261266283
177 putobject 106924492
178 putobject 110718855
179 putobject 87597876
180 putobject 108996183
181 putobject 99171595
182 putobject 115447052
183 putobject 103467696
184 putobject 104448307
185 putobject 97229488
186 putobject 106477027
187 putobject 105427947
188 putobject 233050123
189 putobject 115135303
190 putobject 113237921
191 putobject 110612835
192 putobject 102891788
193 putobject 112480159
194 putobject 117117775
195 putobject 196493186
196 putobject 104291470
197 putobject 118422258
198 putobject 104951716
199 putobject 244946550
200 putobject 98641292
201 putobject 119142327
202 listobjects 227618086
203 listobjects 218373723
204 listobjects 220425637
205 listobjects 212659074
206 listobjects 194860492
207 listobjects 221131339
208 listobjects 227735226
209 listobjects 212887826
210 listobjects 202906841
211 listobjects 221091271
212 listobjects 216883738
213 listobjects 213001179
214 listobjects 217273734
215 listobjects 211956305
216 listobjects 213529174
217 listobjects 375065283
218 listobjects 218843356
219 listobjects 217068015
220 listobjects 223369781
221 listobjects 219801804
222 listobjects 225260921
223 listobjects 207088252
224 listobjects 229780152
225 listobjects 227569658
226 listobjects 211492577
227 listobjects 200421226
228 listobjects 224666076
229 listobjects 217078671
230 listobjects 220658029
231 listobjects 220137146
232 listobjects 205746397
233 listobjects 222356274
234 listobjects 210329960
235 listobjects 219004606
236 listobjects 226442588
237 listobjects 374038605
238 listobjects 221425877
239 listobjects 226949625
240 listobjects 198272437
241 listobjects 215884986
242 listobjects 210904573
243 listobjects 231082876
244 listobjects 220581992
245 listobjects 215368028
246 listobjects 204236634
247 listobjects 230323641
248 listobjects 221006783
249 listobjects 197521967
250 listobjects 217673459
251 listobjects 210402664
252 listobjects 222289473
253 listobjects 216105460
254 listobjects 233017185
255 listobjects 217884686
256 listobjects 216886613
257 listobjects 215456984
258 listobjects 342657645
259 listobjects 218310540
260 listobjects 346101165
261 listobjects 227114600
262 listobjects 207167945
263 listobjects 217958955
264 listobjects 256687056
265 listobjects 216946794
266 listobjects 211024233
267 listobjects 221148255
268 listobjects 214229333
269 listobjects 224119805
270 listobjects 217875907
271 listobjects 216024912
272 listobjects 220679148
273 listobjects 218154613
274 listobjects 222423060
275 listobjects 212511440
276 listobjects 215068766
277 listobjects 207965636
278 listobjects 374287848
279 listobjects 231411797
280 listobjects 344053841
281 listobjects 218949902
282 listobjects 208085171
283 listobjects 202097107
284 listobjects 220625984
285 listobjects 232280185
286 listobjects 214265437
287 listobjects 216862289
288 listobjects 219434755
289 listobjects 217021028
290 listobjects 214401512
291 listobjects 207317610
292 listobjects 215392944
293 listobjects 217703786
294 listobjects 215988628
295 listobjects 198853351
296 listobjects 222486834
297 listobjects 213094404
298 listobjects 211948650
299 listobjects 215660888
300 listobjects 222729552
301 listobjects 357486752
302 getobject 120789563
303 getobject 257364122
304 getobject 193090188
305 getobject 105639883
306 getobject 110039709
307 getobject 106107405
308 getobject 113226765
309 getobject 228216027
310 getobject 204992307
311 getobject 115070175
312 getobject 118444544
313 getobject 116666047
314 getobject 114052724
315 getobject 109807911
316 getobject 108123550
317 getobject 245998795
318 getobject 103858529
319 getobject 104810357
320 getobject 101301352
321 getobject 104881290
322 getobject 101871689
323 getobject 245400756
324 getobject 99811659
325 getobject 107963659
326 getobject 108133779
327 getobject 109433413
328 getobject 112918863
329 getobject 99263685
330 getobject 109925392
331 getobject 404106741
332 getobject 111264038
333 getobject 107867546
334 getobject 232065851
335 getobject 104837346
336 getobject 249346993
337 getobject 107660264
338 getobject 98665144
339 getobject 93135947
340 getobject 93305867
341 getobject 103816208
342 getobject 101191343
343 getobject 104046332
344 getobject 234664977
345 getobject 109126683
346 getobject 109256458
347 getobject 111475958
348 getobject 106229192
349 getobject 111367102
350 getobject 247160403
351 getobject 114725281
352 getobject 115208863
353 getobject 115752038
354 getobject 99434436
355 getobject 114499775
356 getobject 114262136
357 getobject 237897437
358 getobject 109039858
359 getobject 116366349
360 getobject 109513421
361 getobject 119350461
362 getobject 103568549
363 getobject 268923073
364 getobject 103935562
365 getobject 114438288
366 getobject 250696155
367 getobject 100985713
368 getobject 108943735
369 getobject 107398809
370 getobject 201770787
371 getobject 258949074
372 getobject 108722357
373 getobject 106948669
374 getobject 105753903
375 getobject 106842969
376 getobject 254243109
377 getobject 109977076
378 getobject 101122461
379 getobject 106152776
380 getobject 105146877
381 getobject 115352192
382 getobject 114154611
383 getobject 106352783
384 getobject 316675402
385 getobject 109678912
386 getobject 105611654
387 getobject 111231964
388 getobject 110622814
389 getobject 103520055
390 getobject 264080226
391 getobject 115777874
392 getobject 117219506
393 getobject 237658128
394 getobject 105861315
395 getobject 118189958
396 getobject 250123569
397 getobject 210303951
398 getobject 114146153
399 getobject 114062677
400 getobject 116419134
401 getobject 110233217
402 removeobject 230846328
403 removeobject 352354358
404 removeobject 213513979
405 removeobject 213021069
406 removeobject 201490202
407 removeobject 212111001
408 removeobject 215118297
409 removeobject 206781539
410 removeobject 490175308
411 removeobject 207408693
412 removeobject 201921334
413 removeobject 214565432
414 removeobject 223499977
415 removeobject 219187737
416 removeobject 353799701
417 removeobject 226319108
418 removeobject 204468762
419 removeobject 206638858
420 removeobject 227752042
421 removeobject 227770838
422 removeobject 368061761
423 removeobject 304793510
424 removeobject 231980092
425 removeobject 227557765
426 removeobject 216285686
427 removeobject 204581431
428 removeobject 332004595
429 removeobject 209905432
430 removeobject 208660772
431 removeobject 298520566
432 removeobject 221629301
433 removeobject 216850310
434 removeobject 346809979
435 removeobject 225626686
436 removeobject 335040322
437 removeobject 217416498
438 removeobject 221590626
439 removeobject 211254506
440 removeobject 218186009
441 removeobject 333605972
442 removeobject 214970419
443 removeobject 400660245
444 removeobject 226176422
445 removeobject 210009344
446 removeobject 214122397
447 removeobject 217046195
448 removeobject 348420624
449 removeobject 222496374
450 removeobject 200770472
451 removeobject 206765238
452 removeobject 212797886
453 removeobject 221853199
454 removeobject 366803902
455 removeobject 369766134
456 removeobject 254126638
457 removeobject 206946940
458 removeobject 214755369
459 removeobject 222743167
460 removeobject 214028196
461 removeobject 365328074
462 removeobject 222478296
463 removeobject 200478669
464 removeobject 228313711
465 removeobject 351395352
466 removeobject 347788382
467 removeobject 370554938
468 removeobject 220125163
469 removeobject 211178604
470 removeobject 478779432
471 removeobject 226303414
472 removeobject 212846913
473 removeobject 232756403
474 removeobject 352451452
475 removeobject 204864755
476 removeobject 386939750
477 removeobject 236333214
478 removeobject 213864532
479 removeobject 337968992
480 removeobject 208224425
481 removeobject 215012709
482 removeobject 220231159
483 removeobject 200163319
484 removeobject 201449085
485 removeobject 203033356
486 removeobject 362988387
487 removeobject 352665831
488 removeobject 255105686
489 removeobject 209154819
490 removeobject 218832617
491 removeobject 220790763
492 removeobject 345915165
493 removeobject 213304301
494 removeobject 218302224
495 removeobject 218254023
496 removeobject 204621450
497 removeobject 213964266
498 removeobject 383714183
499 removeobject 312511671
500 removeobject 207629778
501 removeobject 203927189

View file

@ -1,501 +0,0 @@
endpoint,nanoseconds
listbuckets,142443772
listbuckets,78416939
listbuckets,58182021
listbuckets,131770558
listbuckets,23167382
listbuckets,100239233
listbuckets,115131496
listbuckets,104406526
listbuckets,12172321
listbuckets,196757641
listbuckets,154690693
listbuckets,200549327
listbuckets,97233951
listbuckets,157416927
listbuckets,91145569
listbuckets,19144199
listbuckets,64085612
listbuckets,113225008
listbuckets,166909251
listbuckets,34198118
listbuckets,174705394
listbuckets,87295494
listbuckets,57706664
listbuckets,140442963
listbuckets,14837772
listbuckets,135331146
listbuckets,111062526
listbuckets,192533228
listbuckets,78240866
listbuckets,49209288
listbuckets,139333059
listbuckets,159433712
listbuckets,168386408
listbuckets,54060994
listbuckets,182381749
listbuckets,107235324
listbuckets,19175648
listbuckets,79408539
listbuckets,102182087
listbuckets,138252068
listbuckets,200286419
listbuckets,171574163
listbuckets,139244520
listbuckets,162405069
listbuckets,191507551
listbuckets,156309385
listbuckets,45147822
listbuckets,123534893
listbuckets,114180389
listbuckets,200631309
listbuckets,183352440
listbuckets,42285029
listbuckets,185592518
listbuckets,166551994
listbuckets,63313864
listbuckets,51172191
listbuckets,162406210
listbuckets,51252382
listbuckets,5096417
listbuckets,177549418
listbuckets,21073149
listbuckets,98302685
listbuckets,173578013
listbuckets,91105261
listbuckets,105040220
listbuckets,112304298
listbuckets,65084455
listbuckets,181875861
listbuckets,142442935
listbuckets,131125617
listbuckets,76286586
listbuckets,24552325
listbuckets,121486988
listbuckets,186709964
listbuckets,5948226
listbuckets,161299340
listbuckets,40993441
listbuckets,66113978
listbuckets,42309585
listbuckets,124003416
listbuckets,97993931
listbuckets,31175113
listbuckets,98603492
listbuckets,21409874
listbuckets,194297813
listbuckets,50059832
listbuckets,148399545
listbuckets,48887920
listbuckets,152334411
listbuckets,57077936
listbuckets,26810977
listbuckets,194375880
listbuckets,138228951
listbuckets,188415922
listbuckets,59004763
listbuckets,28981072
listbuckets,41073893
listbuckets,29776223
listbuckets,140987798
listbuckets,96201298
putobject,96916217
putobject,204175953
putobject,116377273
putobject,200815462
putobject,189393367
putobject,201157286
putobject,209378110
putobject,200861878
putobject,127598269
putobject,198228669
putobject,206087830
putobject,190252106
putobject,213164125
putobject,113273726
putobject,184844831
putobject,217834778
putobject,213577904
putobject,187314812
putobject,197335012
putobject,191781450
putobject,245923315
putobject,249794209
putobject,154268417
putobject,204865983
putobject,200616863
putobject,218347254
putobject,225218951
putobject,204122038
putobject,187483799
putobject,224081164
putobject,313480753
putobject,207639555
putobject,231879901
putobject,213694483
putobject,221029143
putobject,210575405
putobject,203991790
putobject,97757552
putobject,202949604
putobject,187003632
putobject,192703458
putobject,198853855
putobject,187677763
putobject,217450238
putobject,201097498
putobject,204520778
putobject,209010932
putobject,103217905
putobject,208237561
putobject,212482783
putobject,223855484
putobject,215215920
putobject,196011159
putobject,207887130
putobject,203901248
putobject,195527114
putobject,194314145
putobject,118554688
putobject,174577871
putobject,182678497
putobject,214551635
putobject,193939918
putobject,210241591
putobject,218407872
putobject,212235655
putobject,191045716
putobject,199345769
putobject,212445320
putobject,213398017
putobject,196443131
putobject,111006983
putobject,206131544
putobject,227743928
putobject,205929843
putobject,210773624
putobject,201460969
putobject,178288219
putobject,194333228
putobject,200422249
putobject,211491788
putobject,277570466
putobject,194155773
putobject,202859287
putobject,210188078
putobject,200376501
putobject,222446189
putobject,216905202
putobject,203768673
putobject,211882053
putobject,199813369
putobject,202275734
putobject,225392157
putobject,108514537
putobject,183571858
putobject,220178028
putobject,244245555
putobject,246644462
putobject,202754498
putobject,125491965
putobject,198043126
listobjects,247336346
listobjects,222421821
listobjects,217409432
listobjects,213489945
listobjects,197741076
listobjects,204144700
listobjects,194520187
listobjects,207039462
listobjects,214175739
listobjects,222630443
listobjects,207519367
listobjects,204852995
listobjects,200389171
listobjects,223342436
listobjects,375412313
listobjects,197168061
listobjects,209902283
listobjects,208728457
listobjects,223192111
listobjects,197001637
listobjects,210692202
listobjects,210082361
listobjects,193242654
listobjects,190713450
listobjects,210137746
listobjects,210096607
listobjects,214155697
listobjects,203814873
listobjects,200252782
listobjects,198504662
listobjects,225529670
listobjects,219412867
listobjects,200873322
listobjects,366185537
listobjects,220358802
listobjects,203736154
listobjects,195030295
listobjects,206763616
listobjects,215264828
listobjects,196677593
listobjects,206296625
listobjects,203169834
listobjects,228228451
listobjects,201871694
listobjects,214160805
listobjects,221120508
listobjects,204784600
listobjects,215667356
listobjects,203478756
listobjects,193957098
listobjects,204028493
listobjects,200296721
listobjects,201366590
listobjects,217724938
listobjects,335372225
listobjects,212399058
listobjects,206802897
listobjects,203512327
listobjects,201467970
listobjects,207952516
listobjects,200169128
listobjects,193368365
listobjects,208873233
listobjects,206348419
listobjects,202684585
listobjects,255082511
listobjects,225277839
listobjects,216147871
listobjects,203396588
listobjects,215594185
listobjects,211893541
listobjects,202693570
listobjects,213428668
listobjects,345450849
listobjects,210503146
listobjects,206714788
listobjects,221670971
listobjects,209193505
listobjects,207268362
listobjects,217422133
listobjects,194262801
listobjects,214257460
listobjects,209999916
listobjects,200992698
listobjects,233030646
listobjects,197622419
listobjects,214531387
listobjects,207687472
listobjects,193650794
listobjects,216352563
listobjects,204419966
listobjects,220824902
listobjects,203824031
listobjects,345556923
listobjects,211586088
listobjects,221054525
listobjects,216966641
listobjects,212481105
listobjects,225077725
listobjects,206661945
getobject,106148474
getobject,103474999
getobject,110847021
getobject,89406401
getobject,107194067
getobject,103967969
getobject,99809582
getobject,218870171
getobject,116458559
getobject,116438822
getobject,114486708
getobject,98523284
getobject,107932449
getobject,96947000
getobject,111244400
getobject,107520933
getobject,96707408
getobject,98561777
getobject,100203555
getobject,102302806
getobject,238528526
getobject,271793475
getobject,103513430
getobject,110508380
getobject,88297618
getobject,93017464
getobject,92182439
getobject,100926740
getobject,90912953
getobject,89262659
getobject,106320567
getobject,114727932
getobject,93467784
getobject,233897134
getobject,99598463
getobject,100682658
getobject,196532397
getobject,114136005
getobject,107149842
getobject,102095284
getobject,101561076
getobject,110858641
getobject,112464019
getobject,89475711
getobject,104275969
getobject,98529866
getobject,241428685
getobject,101153106
getobject,119006084
getobject,89105802
getobject,95722098
getobject,267246924
getobject,106170312
getobject,106624860
getobject,101451128
getobject,114344067
getobject,98506251
getobject,85363560
getobject,109668504
getobject,97277512
getobject,217166462
getobject,95365244
getobject,105298136
getobject,107433406
getobject,91927105
getobject,103556189
getobject,101882261
getobject,97490353
getobject,109313364
getobject,107477889
getobject,105115091
getobject,100009677
getobject,96802735
getobject,243376778
getobject,116897654
getobject,246725949
getobject,104940522
getobject,104899223
getobject,99914467
getobject,101929660
getobject,96935645
getobject,107399321
getobject,94553040
getobject,110316235
getobject,112920198
getobject,100314041
getobject,239311246
getobject,114578006
getobject,106688650
getobject,89102575
getobject,82537327
getobject,102124717
getobject,107306736
getobject,113530840
getobject,102225458
getobject,105090914
getobject,109987193
getobject,107637409
getobject,99663933
getobject,252948739
removeobject,218637514
removeobject,459986423
removeobject,307487771
removeobject,425595066
removeobject,325293018
removeobject,326633357
removeobject,490052955
removeobject,252844239
removeobject,313024066
removeobject,301593436
removeobject,299154213
removeobject,396128610
removeobject,227674663
removeobject,439796598
removeobject,464313791
removeobject,433487342
removeobject,316319351
removeobject,324010444
removeobject,224091911
removeobject,259658834
removeobject,268735522
removeobject,466588289
removeobject,328431494
removeobject,456136096
removeobject,214305954
removeobject,349200623
removeobject,310132173
removeobject,433264807
removeobject,438724929
removeobject,333912094
removeobject,443030552
removeobject,338569189
removeobject,452852014
removeobject,450187315
removeobject,407122424
removeobject,371514674
removeobject,371585948
removeobject,327859889
removeobject,287348277
removeobject,319214105
removeobject,408538253
removeobject,315233492
removeobject,321187307
removeobject,308503342
removeobject,481438858
removeobject,464326677
removeobject,458208213
removeobject,334169040
removeobject,380953007
removeobject,306156310
removeobject,311735117
removeobject,304652713
removeobject,447482399
removeobject,464054872
removeobject,308287070
removeobject,366031357
removeobject,223529039
removeobject,305332454
removeobject,440680123
removeobject,283803681
removeobject,410491748
removeobject,223265289
removeobject,306268419
removeobject,347366809
removeobject,314563701
removeobject,302068212
removeobject,283520375
removeobject,377963268
removeobject,454052170
removeobject,298085627
removeobject,457265001
removeobject,233934260
removeobject,432713854
removeobject,315891533
removeobject,445005587
removeobject,321635590
removeobject,390314770
removeobject,230655210
removeobject,340190850
removeobject,305314423
removeobject,444872212
removeobject,223437549
removeobject,385529268
removeobject,280271669
removeobject,323868430
removeobject,307544418
removeobject,238040604
removeobject,310293395
removeobject,412163151
removeobject,367516076
removeobject,288358726
removeobject,303789421
removeobject,435084818
removeobject,411008890
removeobject,467616201
removeobject,219465170
removeobject,327976568
removeobject,332048651
removeobject,353130028
removeobject,329197320
1 endpoint nanoseconds
2 listbuckets 142443772
3 listbuckets 78416939
4 listbuckets 58182021
5 listbuckets 131770558
6 listbuckets 23167382
7 listbuckets 100239233
8 listbuckets 115131496
9 listbuckets 104406526
10 listbuckets 12172321
11 listbuckets 196757641
12 listbuckets 154690693
13 listbuckets 200549327
14 listbuckets 97233951
15 listbuckets 157416927
16 listbuckets 91145569
17 listbuckets 19144199
18 listbuckets 64085612
19 listbuckets 113225008
20 listbuckets 166909251
21 listbuckets 34198118
22 listbuckets 174705394
23 listbuckets 87295494
24 listbuckets 57706664
25 listbuckets 140442963
26 listbuckets 14837772
27 listbuckets 135331146
28 listbuckets 111062526
29 listbuckets 192533228
30 listbuckets 78240866
31 listbuckets 49209288
32 listbuckets 139333059
33 listbuckets 159433712
34 listbuckets 168386408
35 listbuckets 54060994
36 listbuckets 182381749
37 listbuckets 107235324
38 listbuckets 19175648
39 listbuckets 79408539
40 listbuckets 102182087
41 listbuckets 138252068
42 listbuckets 200286419
43 listbuckets 171574163
44 listbuckets 139244520
45 listbuckets 162405069
46 listbuckets 191507551
47 listbuckets 156309385
48 listbuckets 45147822
49 listbuckets 123534893
50 listbuckets 114180389
51 listbuckets 200631309
52 listbuckets 183352440
53 listbuckets 42285029
54 listbuckets 185592518
55 listbuckets 166551994
56 listbuckets 63313864
57 listbuckets 51172191
58 listbuckets 162406210
59 listbuckets 51252382
60 listbuckets 5096417
61 listbuckets 177549418
62 listbuckets 21073149
63 listbuckets 98302685
64 listbuckets 173578013
65 listbuckets 91105261
66 listbuckets 105040220
67 listbuckets 112304298
68 listbuckets 65084455
69 listbuckets 181875861
70 listbuckets 142442935
71 listbuckets 131125617
72 listbuckets 76286586
73 listbuckets 24552325
74 listbuckets 121486988
75 listbuckets 186709964
76 listbuckets 5948226
77 listbuckets 161299340
78 listbuckets 40993441
79 listbuckets 66113978
80 listbuckets 42309585
81 listbuckets 124003416
82 listbuckets 97993931
83 listbuckets 31175113
84 listbuckets 98603492
85 listbuckets 21409874
86 listbuckets 194297813
87 listbuckets 50059832
88 listbuckets 148399545
89 listbuckets 48887920
90 listbuckets 152334411
91 listbuckets 57077936
92 listbuckets 26810977
93 listbuckets 194375880
94 listbuckets 138228951
95 listbuckets 188415922
96 listbuckets 59004763
97 listbuckets 28981072
98 listbuckets 41073893
99 listbuckets 29776223
100 listbuckets 140987798
101 listbuckets 96201298
102 putobject 96916217
103 putobject 204175953
104 putobject 116377273
105 putobject 200815462
106 putobject 189393367
107 putobject 201157286
108 putobject 209378110
109 putobject 200861878
110 putobject 127598269
111 putobject 198228669
112 putobject 206087830
113 putobject 190252106
114 putobject 213164125
115 putobject 113273726
116 putobject 184844831
117 putobject 217834778
118 putobject 213577904
119 putobject 187314812
120 putobject 197335012
121 putobject 191781450
122 putobject 245923315
123 putobject 249794209
124 putobject 154268417
125 putobject 204865983
126 putobject 200616863
127 putobject 218347254
128 putobject 225218951
129 putobject 204122038
130 putobject 187483799
131 putobject 224081164
132 putobject 313480753
133 putobject 207639555
134 putobject 231879901
135 putobject 213694483
136 putobject 221029143
137 putobject 210575405
138 putobject 203991790
139 putobject 97757552
140 putobject 202949604
141 putobject 187003632
142 putobject 192703458
143 putobject 198853855
144 putobject 187677763
145 putobject 217450238
146 putobject 201097498
147 putobject 204520778
148 putobject 209010932
149 putobject 103217905
150 putobject 208237561
151 putobject 212482783
152 putobject 223855484
153 putobject 215215920
154 putobject 196011159
155 putobject 207887130
156 putobject 203901248
157 putobject 195527114
158 putobject 194314145
159 putobject 118554688
160 putobject 174577871
161 putobject 182678497
162 putobject 214551635
163 putobject 193939918
164 putobject 210241591
165 putobject 218407872
166 putobject 212235655
167 putobject 191045716
168 putobject 199345769
169 putobject 212445320
170 putobject 213398017
171 putobject 196443131
172 putobject 111006983
173 putobject 206131544
174 putobject 227743928
175 putobject 205929843
176 putobject 210773624
177 putobject 201460969
178 putobject 178288219
179 putobject 194333228
180 putobject 200422249
181 putobject 211491788
182 putobject 277570466
183 putobject 194155773
184 putobject 202859287
185 putobject 210188078
186 putobject 200376501
187 putobject 222446189
188 putobject 216905202
189 putobject 203768673
190 putobject 211882053
191 putobject 199813369
192 putobject 202275734
193 putobject 225392157
194 putobject 108514537
195 putobject 183571858
196 putobject 220178028
197 putobject 244245555
198 putobject 246644462
199 putobject 202754498
200 putobject 125491965
201 putobject 198043126
202 listobjects 247336346
203 listobjects 222421821
204 listobjects 217409432
205 listobjects 213489945
206 listobjects 197741076
207 listobjects 204144700
208 listobjects 194520187
209 listobjects 207039462
210 listobjects 214175739
211 listobjects 222630443
212 listobjects 207519367
213 listobjects 204852995
214 listobjects 200389171
215 listobjects 223342436
216 listobjects 375412313
217 listobjects 197168061
218 listobjects 209902283
219 listobjects 208728457
220 listobjects 223192111
221 listobjects 197001637
222 listobjects 210692202
223 listobjects 210082361
224 listobjects 193242654
225 listobjects 190713450
226 listobjects 210137746
227 listobjects 210096607
228 listobjects 214155697
229 listobjects 203814873
230 listobjects 200252782
231 listobjects 198504662
232 listobjects 225529670
233 listobjects 219412867
234 listobjects 200873322
235 listobjects 366185537
236 listobjects 220358802
237 listobjects 203736154
238 listobjects 195030295
239 listobjects 206763616
240 listobjects 215264828
241 listobjects 196677593
242 listobjects 206296625
243 listobjects 203169834
244 listobjects 228228451
245 listobjects 201871694
246 listobjects 214160805
247 listobjects 221120508
248 listobjects 204784600
249 listobjects 215667356
250 listobjects 203478756
251 listobjects 193957098
252 listobjects 204028493
253 listobjects 200296721
254 listobjects 201366590
255 listobjects 217724938
256 listobjects 335372225
257 listobjects 212399058
258 listobjects 206802897
259 listobjects 203512327
260 listobjects 201467970
261 listobjects 207952516
262 listobjects 200169128
263 listobjects 193368365
264 listobjects 208873233
265 listobjects 206348419
266 listobjects 202684585
267 listobjects 255082511
268 listobjects 225277839
269 listobjects 216147871
270 listobjects 203396588
271 listobjects 215594185
272 listobjects 211893541
273 listobjects 202693570
274 listobjects 213428668
275 listobjects 345450849
276 listobjects 210503146
277 listobjects 206714788
278 listobjects 221670971
279 listobjects 209193505
280 listobjects 207268362
281 listobjects 217422133
282 listobjects 194262801
283 listobjects 214257460
284 listobjects 209999916
285 listobjects 200992698
286 listobjects 233030646
287 listobjects 197622419
288 listobjects 214531387
289 listobjects 207687472
290 listobjects 193650794
291 listobjects 216352563
292 listobjects 204419966
293 listobjects 220824902
294 listobjects 203824031
295 listobjects 345556923
296 listobjects 211586088
297 listobjects 221054525
298 listobjects 216966641
299 listobjects 212481105
300 listobjects 225077725
301 listobjects 206661945
302 getobject 106148474
303 getobject 103474999
304 getobject 110847021
305 getobject 89406401
306 getobject 107194067
307 getobject 103967969
308 getobject 99809582
309 getobject 218870171
310 getobject 116458559
311 getobject 116438822
312 getobject 114486708
313 getobject 98523284
314 getobject 107932449
315 getobject 96947000
316 getobject 111244400
317 getobject 107520933
318 getobject 96707408
319 getobject 98561777
320 getobject 100203555
321 getobject 102302806
322 getobject 238528526
323 getobject 271793475
324 getobject 103513430
325 getobject 110508380
326 getobject 88297618
327 getobject 93017464
328 getobject 92182439
329 getobject 100926740
330 getobject 90912953
331 getobject 89262659
332 getobject 106320567
333 getobject 114727932
334 getobject 93467784
335 getobject 233897134
336 getobject 99598463
337 getobject 100682658
338 getobject 196532397
339 getobject 114136005
340 getobject 107149842
341 getobject 102095284
342 getobject 101561076
343 getobject 110858641
344 getobject 112464019
345 getobject 89475711
346 getobject 104275969
347 getobject 98529866
348 getobject 241428685
349 getobject 101153106
350 getobject 119006084
351 getobject 89105802
352 getobject 95722098
353 getobject 267246924
354 getobject 106170312
355 getobject 106624860
356 getobject 101451128
357 getobject 114344067
358 getobject 98506251
359 getobject 85363560
360 getobject 109668504
361 getobject 97277512
362 getobject 217166462
363 getobject 95365244
364 getobject 105298136
365 getobject 107433406
366 getobject 91927105
367 getobject 103556189
368 getobject 101882261
369 getobject 97490353
370 getobject 109313364
371 getobject 107477889
372 getobject 105115091
373 getobject 100009677
374 getobject 96802735
375 getobject 243376778
376 getobject 116897654
377 getobject 246725949
378 getobject 104940522
379 getobject 104899223
380 getobject 99914467
381 getobject 101929660
382 getobject 96935645
383 getobject 107399321
384 getobject 94553040
385 getobject 110316235
386 getobject 112920198
387 getobject 100314041
388 getobject 239311246
389 getobject 114578006
390 getobject 106688650
391 getobject 89102575
392 getobject 82537327
393 getobject 102124717
394 getobject 107306736
395 getobject 113530840
396 getobject 102225458
397 getobject 105090914
398 getobject 109987193
399 getobject 107637409
400 getobject 99663933
401 getobject 252948739
402 removeobject 218637514
403 removeobject 459986423
404 removeobject 307487771
405 removeobject 425595066
406 removeobject 325293018
407 removeobject 326633357
408 removeobject 490052955
409 removeobject 252844239
410 removeobject 313024066
411 removeobject 301593436
412 removeobject 299154213
413 removeobject 396128610
414 removeobject 227674663
415 removeobject 439796598
416 removeobject 464313791
417 removeobject 433487342
418 removeobject 316319351
419 removeobject 324010444
420 removeobject 224091911
421 removeobject 259658834
422 removeobject 268735522
423 removeobject 466588289
424 removeobject 328431494
425 removeobject 456136096
426 removeobject 214305954
427 removeobject 349200623
428 removeobject 310132173
429 removeobject 433264807
430 removeobject 438724929
431 removeobject 333912094
432 removeobject 443030552
433 removeobject 338569189
434 removeobject 452852014
435 removeobject 450187315
436 removeobject 407122424
437 removeobject 371514674
438 removeobject 371585948
439 removeobject 327859889
440 removeobject 287348277
441 removeobject 319214105
442 removeobject 408538253
443 removeobject 315233492
444 removeobject 321187307
445 removeobject 308503342
446 removeobject 481438858
447 removeobject 464326677
448 removeobject 458208213
449 removeobject 334169040
450 removeobject 380953007
451 removeobject 306156310
452 removeobject 311735117
453 removeobject 304652713
454 removeobject 447482399
455 removeobject 464054872
456 removeobject 308287070
457 removeobject 366031357
458 removeobject 223529039
459 removeobject 305332454
460 removeobject 440680123
461 removeobject 283803681
462 removeobject 410491748
463 removeobject 223265289
464 removeobject 306268419
465 removeobject 347366809
466 removeobject 314563701
467 removeobject 302068212
468 removeobject 283520375
469 removeobject 377963268
470 removeobject 454052170
471 removeobject 298085627
472 removeobject 457265001
473 removeobject 233934260
474 removeobject 432713854
475 removeobject 315891533
476 removeobject 445005587
477 removeobject 321635590
478 removeobject 390314770
479 removeobject 230655210
480 removeobject 340190850
481 removeobject 305314423
482 removeobject 444872212
483 removeobject 223437549
484 removeobject 385529268
485 removeobject 280271669
486 removeobject 323868430
487 removeobject 307544418
488 removeobject 238040604
489 removeobject 310293395
490 removeobject 412163151
491 removeobject 367516076
492 removeobject 288358726
493 removeobject 303789421
494 removeobject 435084818
495 removeobject 411008890
496 removeobject 467616201
497 removeobject 219465170
498 removeobject 327976568
499 removeobject 332048651
500 removeobject 353130028
501 removeobject 329197320

View file

@ -1,501 +0,0 @@
endpoint,nanoseconds
listbuckets,110526156
listbuckets,111223674
listbuckets,110350078
listbuckets,108763355
listbuckets,108151200
listbuckets,110049558
listbuckets,111261740
listbuckets,106870917
listbuckets,109675307
listbuckets,114928865
listbuckets,112976189
listbuckets,100144534
listbuckets,103672802
listbuckets,115743698
listbuckets,120312198
listbuckets,114315912
listbuckets,117664396
listbuckets,113756128
listbuckets,110819985
listbuckets,108017540
listbuckets,107455412
listbuckets,117667963
listbuckets,113112343
listbuckets,117163158
listbuckets,111710827
listbuckets,108587376
listbuckets,113677870
listbuckets,100432934
listbuckets,111720496
listbuckets,113415267
listbuckets,109700442
listbuckets,116870615
listbuckets,104193832
listbuckets,104911949
listbuckets,107990314
listbuckets,111855197
listbuckets,108076368
listbuckets,109569833
listbuckets,110641629
listbuckets,105085431
listbuckets,113240314
listbuckets,109189490
listbuckets,119818535
listbuckets,111259357
listbuckets,107390627
listbuckets,101319090
listbuckets,106351333
listbuckets,117073689
listbuckets,119127359
listbuckets,117266560
listbuckets,110077426
listbuckets,107452728
listbuckets,112721966
listbuckets,114883973
listbuckets,120073375
listbuckets,103458296
listbuckets,118342265
listbuckets,107996502
listbuckets,109767879
listbuckets,112580238
listbuckets,113636111
listbuckets,111267829
listbuckets,112798154
listbuckets,107265512
listbuckets,108961006
listbuckets,120928218
listbuckets,109095182
listbuckets,110399063
listbuckets,118328765
listbuckets,112884542
listbuckets,117913147
listbuckets,120238848
listbuckets,116074701
listbuckets,109990943
listbuckets,114816077
listbuckets,113207212
listbuckets,112350518
listbuckets,106189705
listbuckets,106836706
listbuckets,114519552
listbuckets,112357584
listbuckets,113073218
listbuckets,108251780
listbuckets,115340245
listbuckets,109100358
listbuckets,116337818
listbuckets,110881217
listbuckets,109903972
listbuckets,113243376
listbuckets,111667494
listbuckets,102401925
listbuckets,109793240
listbuckets,118365209
listbuckets,117380902
listbuckets,116149538
listbuckets,109060437
listbuckets,106900385
listbuckets,101213710
listbuckets,103102282
listbuckets,115980177
putobject,1181582068
putobject,1208319832
putobject,1139007207
putobject,1172748692
putobject,1213269319
putobject,1222148262
putobject,1160354410
putobject,1186840670
putobject,1178184375
putobject,1199772934
putobject,1243156199
putobject,1162462450
putobject,1160912226
putobject,1181903350
putobject,1178461918
putobject,1155923039
putobject,1198486430
putobject,1128172593
putobject,1161827240
putobject,1191934325
putobject,1241903028
putobject,1154793146
putobject,1182964786
putobject,1192949284
putobject,1211748830
putobject,1153969786
putobject,1173133011
putobject,1159925140
putobject,1151781019
putobject,1212786711
putobject,1136411443
putobject,1161607447
putobject,1194069897
putobject,1181340894
putobject,1154251172
putobject,1142482758
putobject,1184635609
putobject,1401096568
putobject,1193309386
putobject,1155633130
putobject,1185629277
putobject,1150317409
putobject,1189977499
putobject,1172978955
putobject,1167393215
putobject,1176612406
putobject,1220478477
putobject,1214146462
putobject,1201982436
putobject,1187568105
putobject,1233590518
putobject,1254380879
putobject,1195264797
putobject,1212347722
putobject,1265459581
putobject,1199507629
putobject,1213030838
putobject,1261491944
putobject,1175783260
putobject,1171776028
putobject,1175985781
putobject,1204880209
putobject,1185762634
putobject,1205618309
putobject,1156324684
putobject,1212986779
putobject,1153785732
putobject,1186241798
putobject,1169988181
putobject,1169236282
putobject,1159114879
putobject,1169866154
putobject,1185878817
putobject,1303357322
putobject,1198903604
putobject,1180614532
putobject,1198891504
putobject,1186606007
putobject,1178912791
putobject,1181214681
putobject,1148254776
putobject,1193521548
putobject,1172732700
putobject,1224354922
putobject,1189768028
putobject,1187610090
putobject,1158181354
putobject,1168240861
putobject,1184266557
putobject,1211834285
putobject,1133902391
putobject,1169623406
putobject,1153648781
putobject,1260717643
putobject,1213147555
putobject,1196178431
putobject,1193078015
putobject,1192743109
putobject,1231998132
putobject,1169290675
listobjects,445829270
listobjects,448358224
listobjects,234487499
listobjects,331279803
listobjects,239147274
listobjects,356161983
listobjects,231056963
listobjects,428733347
listobjects,234973895
listobjects,349647146
listobjects,238785967
listobjects,430581787
listobjects,325690302
listobjects,337483670
listobjects,335639646
listobjects,327396437
listobjects,230177176
listobjects,347284630
listobjects,230553012
listobjects,338821210
listobjects,343466400
listobjects,346533869
listobjects,311374291
listobjects,341162492
listobjects,235683323
listobjects,356305631
listobjects,234888137
listobjects,335916950
listobjects,312208053
listobjects,345090441
listobjects,449596366
listobjects,347544888
listobjects,361989101
listobjects,235502161
listobjects,232949965
listobjects,337218790
listobjects,447643000
listobjects,238259618
listobjects,235023776
listobjects,420231514
listobjects,341833697
listobjects,235388450
listobjects,232164722
listobjects,422949063
listobjects,501989025
listobjects,240957275
listobjects,337846216
listobjects,231434805
listobjects,430682948
listobjects,231812947
listobjects,465260992
listobjects,433379275
listobjects,236331095
listobjects,332051421
listobjects,237905130
listobjects,343574528
listobjects,242371130
listobjects,311241850
listobjects,239692903
listobjects,360069478
listobjects,317977063
listobjects,324532475
listobjects,246746304
listobjects,339939390
listobjects,238956624
listobjects,338334961
listobjects,236968116
listobjects,338529503
listobjects,235480073
listobjects,334150022
listobjects,234014534
listobjects,336955875
listobjects,245541026
listobjects,321342105
listobjects,241862995
listobjects,342284075
listobjects,223874385
listobjects,330173393
listobjects,230710360
listobjects,338012760
listobjects,243166839
listobjects,326244217
listobjects,217795705
listobjects,343998726
listobjects,234484396
listobjects,326419671
listobjects,228413611
listobjects,345526317
listobjects,242498473
listobjects,322335836
listobjects,325652509
listobjects,353395591
listobjects,241202612
listobjects,316928525
listobjects,415736209
listobjects,336640460
listobjects,235664816
listobjects,318470444
listobjects,233137178
listobjects,338995281
getobject,548766727
getobject,544293094
getobject,553996833
getobject,524118176
getobject,540256688
getobject,521985460
getobject,550010163
getobject,522839295
getobject,550206788
getobject,556115384
getobject,561480120
getobject,529867231
getobject,554654221
getobject,522713545
getobject,533201280
getobject,559755253
getobject,562719587
getobject,530367590
getobject,534634166
getobject,528476593
getobject,561330984
getobject,548154277
getobject,551287855
getobject,543519973
getobject,537798946
getobject,543821201
getobject,556706828
getobject,562779335
getobject,533088136
getobject,543496053
getobject,530090638
getobject,557966646
getobject,546652328
getobject,556049330
getobject,553087013
getobject,552319581
getobject,538039579
getobject,524047395
getobject,529321927
getobject,561628538
getobject,538975026
getobject,537678052
getobject,552261757
getobject,553552417
getobject,546538519
getobject,539953289
getobject,533392613
getobject,543443065
getobject,539024543
getobject,537067523
getobject,555793303
getobject,610983302
getobject,535123120
getobject,528049669
getobject,541554744
getobject,564902500
getobject,564639999
getobject,534295582
getobject,544951246
getobject,540628827
getobject,552900208
getobject,541614941
getobject,536825865
getobject,535642848
getobject,544302224
getobject,549999591
getobject,542030234
getobject,545602568
getobject,543278126
getobject,524720136
getobject,552230698
getobject,539300237
getobject,549856120
getobject,540587629
getobject,557880339
getobject,555153802
getobject,561113528
getobject,556108255
getobject,508374452
getobject,560044395
getobject,585922680
getobject,548465899
getobject,573308704
getobject,554195559
getobject,562441181
getobject,550048971
getobject,542032477
getobject,587508303
getobject,548308208
getobject,529401594
getobject,535337894
getobject,566348968
getobject,545058294
getobject,560623443
getobject,532580429
getobject,555774911
getobject,546448443
getobject,526984769
getobject,528538465
getobject,551758307
removeobject,1305475677
removeobject,1328695106
removeobject,1304086325
removeobject,1314629714
removeobject,1286472737
removeobject,1323794460
removeobject,1287026749
removeobject,1308989986
removeobject,1319191249
removeobject,1302459188
removeobject,1358027169
removeobject,1298833331
removeobject,1288044760
removeobject,1309860548
removeobject,1294431451
removeobject,1323518263
removeobject,1274537859
removeobject,1306292281
removeobject,1300283360
removeobject,1236080169
removeobject,1304088805
removeobject,1319360876
removeobject,1310348416
removeobject,1306714462
removeobject,1280353702
removeobject,1313350545
removeobject,1321192365
removeobject,1304475647
removeobject,1306586102
removeobject,1294987618
removeobject,1304176193
removeobject,1296005363
removeobject,1284994372
removeobject,1317600899
removeobject,1332743805
removeobject,1352245087
removeobject,1309279342
removeobject,1307620458
removeobject,1342551633
removeobject,1321581956
removeobject,1315162697
removeobject,1336302765
removeobject,1290969146
removeobject,1320968235
removeobject,1299056796
removeobject,1288002161
removeobject,1328125560
removeobject,1316703843
removeobject,1291268641
removeobject,1327821693
removeobject,1299867445
removeobject,1296882414
removeobject,1313288813
removeobject,1298520791
removeobject,1298185028
removeobject,1274221533
removeobject,1314194728
removeobject,1336907835
removeobject,1297413534
removeobject,1283613694
removeobject,1265657961
removeobject,1329591094
removeobject,1320682432
removeobject,1317595366
removeobject,1323562128
removeobject,1298197589
removeobject,1321950097
removeobject,1281669970
removeobject,1306586515
removeobject,1296748831
removeobject,1300070529
removeobject,1282255502
removeobject,1284141215
removeobject,1297879969
removeobject,1292837351
removeobject,1317095287
removeobject,1323647829
removeobject,1283782591
removeobject,1292866116
removeobject,1283574839
removeobject,1331580518
removeobject,1355362975
removeobject,1326405684
removeobject,1297225883
removeobject,1318610920
removeobject,1298833112
removeobject,1360833965
removeobject,1311610613
removeobject,1304567017
removeobject,1325168434
removeobject,1293403789
removeobject,1293213442
removeobject,1298548367
removeobject,1303459493
removeobject,1302979008
removeobject,1336663252
removeobject,1277657362
removeobject,1308832733
removeobject,1342049822
removeobject,1307255424
1 endpoint nanoseconds
2 listbuckets 110526156
3 listbuckets 111223674
4 listbuckets 110350078
5 listbuckets 108763355
6 listbuckets 108151200
7 listbuckets 110049558
8 listbuckets 111261740
9 listbuckets 106870917
10 listbuckets 109675307
11 listbuckets 114928865
12 listbuckets 112976189
13 listbuckets 100144534
14 listbuckets 103672802
15 listbuckets 115743698
16 listbuckets 120312198
17 listbuckets 114315912
18 listbuckets 117664396
19 listbuckets 113756128
20 listbuckets 110819985
21 listbuckets 108017540
22 listbuckets 107455412
23 listbuckets 117667963
24 listbuckets 113112343
25 listbuckets 117163158
26 listbuckets 111710827
27 listbuckets 108587376
28 listbuckets 113677870
29 listbuckets 100432934
30 listbuckets 111720496
31 listbuckets 113415267
32 listbuckets 109700442
33 listbuckets 116870615
34 listbuckets 104193832
35 listbuckets 104911949
36 listbuckets 107990314
37 listbuckets 111855197
38 listbuckets 108076368
39 listbuckets 109569833
40 listbuckets 110641629
41 listbuckets 105085431
42 listbuckets 113240314
43 listbuckets 109189490
44 listbuckets 119818535
45 listbuckets 111259357
46 listbuckets 107390627
47 listbuckets 101319090
48 listbuckets 106351333
49 listbuckets 117073689
50 listbuckets 119127359
51 listbuckets 117266560
52 listbuckets 110077426
53 listbuckets 107452728
54 listbuckets 112721966
55 listbuckets 114883973
56 listbuckets 120073375
57 listbuckets 103458296
58 listbuckets 118342265
59 listbuckets 107996502
60 listbuckets 109767879
61 listbuckets 112580238
62 listbuckets 113636111
63 listbuckets 111267829
64 listbuckets 112798154
65 listbuckets 107265512
66 listbuckets 108961006
67 listbuckets 120928218
68 listbuckets 109095182
69 listbuckets 110399063
70 listbuckets 118328765
71 listbuckets 112884542
72 listbuckets 117913147
73 listbuckets 120238848
74 listbuckets 116074701
75 listbuckets 109990943
76 listbuckets 114816077
77 listbuckets 113207212
78 listbuckets 112350518
79 listbuckets 106189705
80 listbuckets 106836706
81 listbuckets 114519552
82 listbuckets 112357584
83 listbuckets 113073218
84 listbuckets 108251780
85 listbuckets 115340245
86 listbuckets 109100358
87 listbuckets 116337818
88 listbuckets 110881217
89 listbuckets 109903972
90 listbuckets 113243376
91 listbuckets 111667494
92 listbuckets 102401925
93 listbuckets 109793240
94 listbuckets 118365209
95 listbuckets 117380902
96 listbuckets 116149538
97 listbuckets 109060437
98 listbuckets 106900385
99 listbuckets 101213710
100 listbuckets 103102282
101 listbuckets 115980177
102 putobject 1181582068
103 putobject 1208319832
104 putobject 1139007207
105 putobject 1172748692
106 putobject 1213269319
107 putobject 1222148262
108 putobject 1160354410
109 putobject 1186840670
110 putobject 1178184375
111 putobject 1199772934
112 putobject 1243156199
113 putobject 1162462450
114 putobject 1160912226
115 putobject 1181903350
116 putobject 1178461918
117 putobject 1155923039
118 putobject 1198486430
119 putobject 1128172593
120 putobject 1161827240
121 putobject 1191934325
122 putobject 1241903028
123 putobject 1154793146
124 putobject 1182964786
125 putobject 1192949284
126 putobject 1211748830
127 putobject 1153969786
128 putobject 1173133011
129 putobject 1159925140
130 putobject 1151781019
131 putobject 1212786711
132 putobject 1136411443
133 putobject 1161607447
134 putobject 1194069897
135 putobject 1181340894
136 putobject 1154251172
137 putobject 1142482758
138 putobject 1184635609
139 putobject 1401096568
140 putobject 1193309386
141 putobject 1155633130
142 putobject 1185629277
143 putobject 1150317409
144 putobject 1189977499
145 putobject 1172978955
146 putobject 1167393215
147 putobject 1176612406
148 putobject 1220478477
149 putobject 1214146462
150 putobject 1201982436
151 putobject 1187568105
152 putobject 1233590518
153 putobject 1254380879
154 putobject 1195264797
155 putobject 1212347722
156 putobject 1265459581
157 putobject 1199507629
158 putobject 1213030838
159 putobject 1261491944
160 putobject 1175783260
161 putobject 1171776028
162 putobject 1175985781
163 putobject 1204880209
164 putobject 1185762634
165 putobject 1205618309
166 putobject 1156324684
167 putobject 1212986779
168 putobject 1153785732
169 putobject 1186241798
170 putobject 1169988181
171 putobject 1169236282
172 putobject 1159114879
173 putobject 1169866154
174 putobject 1185878817
175 putobject 1303357322
176 putobject 1198903604
177 putobject 1180614532
178 putobject 1198891504
179 putobject 1186606007
180 putobject 1178912791
181 putobject 1181214681
182 putobject 1148254776
183 putobject 1193521548
184 putobject 1172732700
185 putobject 1224354922
186 putobject 1189768028
187 putobject 1187610090
188 putobject 1158181354
189 putobject 1168240861
190 putobject 1184266557
191 putobject 1211834285
192 putobject 1133902391
193 putobject 1169623406
194 putobject 1153648781
195 putobject 1260717643
196 putobject 1213147555
197 putobject 1196178431
198 putobject 1193078015
199 putobject 1192743109
200 putobject 1231998132
201 putobject 1169290675
202 listobjects 445829270
203 listobjects 448358224
204 listobjects 234487499
205 listobjects 331279803
206 listobjects 239147274
207 listobjects 356161983
208 listobjects 231056963
209 listobjects 428733347
210 listobjects 234973895
211 listobjects 349647146
212 listobjects 238785967
213 listobjects 430581787
214 listobjects 325690302
215 listobjects 337483670
216 listobjects 335639646
217 listobjects 327396437
218 listobjects 230177176
219 listobjects 347284630
220 listobjects 230553012
221 listobjects 338821210
222 listobjects 343466400
223 listobjects 346533869
224 listobjects 311374291
225 listobjects 341162492
226 listobjects 235683323
227 listobjects 356305631
228 listobjects 234888137
229 listobjects 335916950
230 listobjects 312208053
231 listobjects 345090441
232 listobjects 449596366
233 listobjects 347544888
234 listobjects 361989101
235 listobjects 235502161
236 listobjects 232949965
237 listobjects 337218790
238 listobjects 447643000
239 listobjects 238259618
240 listobjects 235023776
241 listobjects 420231514
242 listobjects 341833697
243 listobjects 235388450
244 listobjects 232164722
245 listobjects 422949063
246 listobjects 501989025
247 listobjects 240957275
248 listobjects 337846216
249 listobjects 231434805
250 listobjects 430682948
251 listobjects 231812947
252 listobjects 465260992
253 listobjects 433379275
254 listobjects 236331095
255 listobjects 332051421
256 listobjects 237905130
257 listobjects 343574528
258 listobjects 242371130
259 listobjects 311241850
260 listobjects 239692903
261 listobjects 360069478
262 listobjects 317977063
263 listobjects 324532475
264 listobjects 246746304
265 listobjects 339939390
266 listobjects 238956624
267 listobjects 338334961
268 listobjects 236968116
269 listobjects 338529503
270 listobjects 235480073
271 listobjects 334150022
272 listobjects 234014534
273 listobjects 336955875
274 listobjects 245541026
275 listobjects 321342105
276 listobjects 241862995
277 listobjects 342284075
278 listobjects 223874385
279 listobjects 330173393
280 listobjects 230710360
281 listobjects 338012760
282 listobjects 243166839
283 listobjects 326244217
284 listobjects 217795705
285 listobjects 343998726
286 listobjects 234484396
287 listobjects 326419671
288 listobjects 228413611
289 listobjects 345526317
290 listobjects 242498473
291 listobjects 322335836
292 listobjects 325652509
293 listobjects 353395591
294 listobjects 241202612
295 listobjects 316928525
296 listobjects 415736209
297 listobjects 336640460
298 listobjects 235664816
299 listobjects 318470444
300 listobjects 233137178
301 listobjects 338995281
302 getobject 548766727
303 getobject 544293094
304 getobject 553996833
305 getobject 524118176
306 getobject 540256688
307 getobject 521985460
308 getobject 550010163
309 getobject 522839295
310 getobject 550206788
311 getobject 556115384
312 getobject 561480120
313 getobject 529867231
314 getobject 554654221
315 getobject 522713545
316 getobject 533201280
317 getobject 559755253
318 getobject 562719587
319 getobject 530367590
320 getobject 534634166
321 getobject 528476593
322 getobject 561330984
323 getobject 548154277
324 getobject 551287855
325 getobject 543519973
326 getobject 537798946
327 getobject 543821201
328 getobject 556706828
329 getobject 562779335
330 getobject 533088136
331 getobject 543496053
332 getobject 530090638
333 getobject 557966646
334 getobject 546652328
335 getobject 556049330
336 getobject 553087013
337 getobject 552319581
338 getobject 538039579
339 getobject 524047395
340 getobject 529321927
341 getobject 561628538
342 getobject 538975026
343 getobject 537678052
344 getobject 552261757
345 getobject 553552417
346 getobject 546538519
347 getobject 539953289
348 getobject 533392613
349 getobject 543443065
350 getobject 539024543
351 getobject 537067523
352 getobject 555793303
353 getobject 610983302
354 getobject 535123120
355 getobject 528049669
356 getobject 541554744
357 getobject 564902500
358 getobject 564639999
359 getobject 534295582
360 getobject 544951246
361 getobject 540628827
362 getobject 552900208
363 getobject 541614941
364 getobject 536825865
365 getobject 535642848
366 getobject 544302224
367 getobject 549999591
368 getobject 542030234
369 getobject 545602568
370 getobject 543278126
371 getobject 524720136
372 getobject 552230698
373 getobject 539300237
374 getobject 549856120
375 getobject 540587629
376 getobject 557880339
377 getobject 555153802
378 getobject 561113528
379 getobject 556108255
380 getobject 508374452
381 getobject 560044395
382 getobject 585922680
383 getobject 548465899
384 getobject 573308704
385 getobject 554195559
386 getobject 562441181
387 getobject 550048971
388 getobject 542032477
389 getobject 587508303
390 getobject 548308208
391 getobject 529401594
392 getobject 535337894
393 getobject 566348968
394 getobject 545058294
395 getobject 560623443
396 getobject 532580429
397 getobject 555774911
398 getobject 546448443
399 getobject 526984769
400 getobject 528538465
401 getobject 551758307
402 removeobject 1305475677
403 removeobject 1328695106
404 removeobject 1304086325
405 removeobject 1314629714
406 removeobject 1286472737
407 removeobject 1323794460
408 removeobject 1287026749
409 removeobject 1308989986
410 removeobject 1319191249
411 removeobject 1302459188
412 removeobject 1358027169
413 removeobject 1298833331
414 removeobject 1288044760
415 removeobject 1309860548
416 removeobject 1294431451
417 removeobject 1323518263
418 removeobject 1274537859
419 removeobject 1306292281
420 removeobject 1300283360
421 removeobject 1236080169
422 removeobject 1304088805
423 removeobject 1319360876
424 removeobject 1310348416
425 removeobject 1306714462
426 removeobject 1280353702
427 removeobject 1313350545
428 removeobject 1321192365
429 removeobject 1304475647
430 removeobject 1306586102
431 removeobject 1294987618
432 removeobject 1304176193
433 removeobject 1296005363
434 removeobject 1284994372
435 removeobject 1317600899
436 removeobject 1332743805
437 removeobject 1352245087
438 removeobject 1309279342
439 removeobject 1307620458
440 removeobject 1342551633
441 removeobject 1321581956
442 removeobject 1315162697
443 removeobject 1336302765
444 removeobject 1290969146
445 removeobject 1320968235
446 removeobject 1299056796
447 removeobject 1288002161
448 removeobject 1328125560
449 removeobject 1316703843
450 removeobject 1291268641
451 removeobject 1327821693
452 removeobject 1299867445
453 removeobject 1296882414
454 removeobject 1313288813
455 removeobject 1298520791
456 removeobject 1298185028
457 removeobject 1274221533
458 removeobject 1314194728
459 removeobject 1336907835
460 removeobject 1297413534
461 removeobject 1283613694
462 removeobject 1265657961
463 removeobject 1329591094
464 removeobject 1320682432
465 removeobject 1317595366
466 removeobject 1323562128
467 removeobject 1298197589
468 removeobject 1321950097
469 removeobject 1281669970
470 removeobject 1306586515
471 removeobject 1296748831
472 removeobject 1300070529
473 removeobject 1282255502
474 removeobject 1284141215
475 removeobject 1297879969
476 removeobject 1292837351
477 removeobject 1317095287
478 removeobject 1323647829
479 removeobject 1283782591
480 removeobject 1292866116
481 removeobject 1283574839
482 removeobject 1331580518
483 removeobject 1355362975
484 removeobject 1326405684
485 removeobject 1297225883
486 removeobject 1318610920
487 removeobject 1298833112
488 removeobject 1360833965
489 removeobject 1311610613
490 removeobject 1304567017
491 removeobject 1325168434
492 removeobject 1293403789
493 removeobject 1293213442
494 removeobject 1298548367
495 removeobject 1303459493
496 removeobject 1302979008
497 removeobject 1336663252
498 removeobject 1277657362
499 removeobject 1308832733
500 removeobject 1342049822
501 removeobject 1307255424

View file

@ -1,30 +0,0 @@
library(tidyverse)
read_csv("garage-v0.7.csv") %>% add_column(daemon="garage 0.7.3") -> a
read_csv("garage-v0.8.csv") %>% add_column(daemon="garage 0.8.0 beta") -> b
read_csv("minio-20220917.csv") %>% add_column(daemon="minio RELEASE.2022-09-17") -> c
bind_rows(a,b,c) %>% group_by(daemon,endpoint) %>% summarise(
time_mean = mean(nanoseconds) / 1000 / 1000,
time_max = max(nanoseconds) / 1000 / 1000,
time_min = min(nanoseconds) / 1000 / 1000
) -> c
st <- "100 measurements, 5 nodes, 50ms RTT + 10ms jitter between nodes\nno contention: latency is due to intra-cluster communications\ncolored bar = mean latency, error bar = min and max latency"
ggplot(c, aes(x=endpoint,y=time_mean,fill=daemon,ymin=time_min,ymax=time_max)) +
geom_bar(stat="identity", position=position_dodge(),color="black") +
geom_errorbar(position=position_dodge(.9),width=.2) +
scale_y_continuous(expand=c(0,0))+
coord_flip() +
labs(
x="S3 Endpoint",
y="Request duration (ms)",
fill="Daemon",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="S3 endpoint latency in a simulated geo-distributed cluster",
subtitle=st) +
theme_classic() +
theme(legend.position = c(.8, .3))
ggsave("./plot.png", width=200, height=110, units="mm")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

View file

@ -1,61 +0,0 @@
nanoseconds
2043724295
1819672397
1856153241
1814937942
1818943177
1814245475
1828595614
1817263829
1857481054
1816538404
1816874169
1856305403
1857317361
1814517488
1817156893
1815832311
1857020274
1822556545
1816402439
1815664395
1818129711
1855229810
1817427508
1817253968
1855458740
1818412087
1816422102
1814017661
1821773596
1814924392
1819138108
1814140079
1814253338
1814717178
1823390172
1856664915
1817886566
1815441938
1815381667
1864383216
1815026715
1816346397
1814835227
1855973303
1814632968
1823675273
1817900846
1816282804
1817289580
1817288129
1860637032
1855146585
1816649086
1822524427
1814277922
1901037764
1818903030
1815404774
1815446844
1815223628
1 nanoseconds
2 2043724295
3 1819672397
4 1856153241
5 1814937942
6 1818943177
7 1814245475
8 1828595614
9 1817263829
10 1857481054
11 1816538404
12 1816874169
13 1856305403
14 1857317361
15 1814517488
16 1817156893
17 1815832311
18 1857020274
19 1822556545
20 1816402439
21 1815664395
22 1818129711
23 1855229810
24 1817427508
25 1817253968
26 1855458740
27 1818412087
28 1816422102
29 1814017661
30 1821773596
31 1814924392
32 1819138108
33 1814140079
34 1814253338
35 1814717178
36 1823390172
37 1856664915
38 1817886566
39 1815441938
40 1815381667
41 1864383216
42 1815026715
43 1816346397
44 1814835227
45 1855973303
46 1814632968
47 1823675273
48 1817900846
49 1816282804
50 1817289580
51 1817288129
52 1860637032
53 1855146585
54 1816649086
55 1822524427
56 1814277922
57 1901037764
58 1818903030
59 1815404774
60 1815446844
61 1815223628

View file

@ -1,61 +0,0 @@
nanoseconds
376764319
268350943
310303481
266580460
267172958
46771899
271623330
270463024
47401936
45384570
129505789
46244307
270594700
267908944
310163759
271096844
268930686
309894956
273312715
269766963
267947351
270443270
266292594
215426567
383550730
84593093
380970185
419898767
381574216
422289246
380535266
268204508
46449693
270408730
268572254
308981862
266303861
46092770
308073958
383696451
381725197
379008890
379902614
382568588
45370580
83526768
381230253
267980416
269187238
84449786
267524276
46169934
43509278
308776528
270626080
271203190
216167767
239794865
46230173
267821837
1 nanoseconds
2 376764319
3 268350943
4 310303481
5 266580460
6 267172958
7 46771899
8 271623330
9 270463024
10 47401936
11 45384570
12 129505789
13 46244307
14 270594700
15 267908944
16 310163759
17 271096844
18 268930686
19 309894956
20 273312715
21 269766963
22 267947351
23 270443270
24 266292594
25 215426567
26 383550730
27 84593093
28 380970185
29 419898767
30 381574216
31 422289246
32 380535266
33 268204508
34 46449693
35 270408730
36 268572254
37 308981862
38 266303861
39 46092770
40 308073958
41 383696451
42 381725197
43 379008890
44 379902614
45 382568588
46 45370580
47 83526768
48 381230253
49 267980416
50 269187238
51 84449786
52 267524276
53 46169934
54 43509278
55 308776528
56 270626080
57 271203190
58 216167767
59 239794865
60 46230173
61 267821837

View file

@ -1,61 +0,0 @@
nanoseconds
941737601
970059899
956848578
981034132
968456906
986209313
947371347
961890275
951011001
947766957
946381130
1172968280
944672409
946216350
960072933
947966145
947998544
957730811
960898554
950611253
953195848
974654976
982578891
957419979
947448876
945953214
936687543
950116533
979971727
941427574
931898843
928494073
927924296
940995728
927965457
928098595
933759012
929902652
953753466
931448442
934503899
933297864
934775226
936615695
950945991
935054323
1162136321
940502403
1158490674
945337099
948016443
939863143
938112935
933271354
946325434
954355353
948997521
1124820589
989829976
938639125
1 nanoseconds
2 941737601
3 970059899
4 956848578
5 981034132
6 968456906
7 986209313
8 947371347
9 961890275
10 951011001
11 947766957
12 946381130
13 1172968280
14 944672409
15 946216350
16 960072933
17 947966145
18 947998544
19 957730811
20 960898554
21 950611253
22 953195848
23 974654976
24 982578891
25 957419979
26 947448876
27 945953214
28 936687543
29 950116533
30 979971727
31 941427574
32 931898843
33 928494073
34 927924296
35 940995728
36 927965457
37 928098595
38 933759012
39 929902652
40 953753466
41 931448442
42 934503899
43 933297864
44 934775226
45 936615695
46 950945991
47 935054323
48 1162136321
49 940502403
50 1158490674
51 945337099
52 948016443
53 939863143
54 938112935
55 933271354
56 946325434
57 954355353
58 948997521
59 1124820589
60 989829976
61 938639125

View file

@ -1,25 +0,0 @@
library(tidyverse)
read_csv("garage-v0.7.csv") %>% add_column(daemon="garage 0.7.3") -> a
read_csv("garage-v0.8.csv") %>% add_column(daemon="garage 0.8.0 beta") -> b
read_csv("minio-20220917.csv") %>% add_column(daemon="minio RELEASE.2022-09-17") -> c
bind_rows(a,b,c) %>% mutate(ms = nanoseconds / 1000 / 1000) -> d
ggplot(d, aes(y = ms, group = daemon, fill=daemon)) +
#geom_violin(trim = TRUE, width=2) +
geom_histogram(binwidth=50, color="black") +
scale_y_continuous(expand=c(0,0))+
scale_x_continuous(expand=c(0,0))+
coord_flip() +
labs(
y="TTFB (ms)",
x="Count",
fill="Daemon",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="TTFB (Time To First Byte) on GetObject over a slow network (5 Mbps, 500 µs)",
subtitle="A 1MB file is uploaded and then fetched 60 times.\nExcept for Minio, the queried node does not store any data (gateway) to force net. communications.") +
theme_classic() +
theme(legend.position = c(.15, .8))
ggsave("./plot.png", width=200, height=110, units="mm")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

View file

@ -1,21 +0,0 @@
library(tidyverse)
read_csv("summary.csv")-> s
hum_names <- as_labeller(c(`obj_per_sec` = "Objects/sec", `mbyte_per_sec` = "MByte/sec"))
ggplot(s, aes(x=value,y=config)) +
geom_bar(stat="identity", fill="#00BFC4", color="black") +
facet_wrap(~measurement,dir="v", scales = "free", labeller = hum_names) +
scale_x_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
labs(
y="Daemon",
x="Metric",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="\"minio/warp\" benchmark, \"cluster total\" result",
subtitle="Ran on a local machine (Ryzen 5 1400, 16GB RAM, SSD) with mknet\nDC topology (3 nodes, 1GB/s, 1ms lat)\nwarp in mixed mode, 5min bench, 5MB objects, initialized with 200 objects") +
theme_classic()
ggsave("./plot.png", width=200, height=120, units="mm")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

View file

@ -1,11 +0,0 @@
config,measurement,value
garage v0.7,mbyte_per_sec,8.60
garage v0.7,obj_per_sec,3.02
garage v0.8-beta1,mbyte_per_sec,12.41
garage v0.8-beta1,obj_per_sec,4.36
minio 20220917,mbyte_per_sec,20.22
minio 20220917,obj_per_sec,7.11
garage v0.8-beta2,mbyte_per_sec,14.56
garage v0.8-beta2,obj_per_sec,5.19
garage v0.8-no-fsync,mbyte_per_sec,17.31
garage v0.8-no-fsync,obj_per_sec,6.11
1 config measurement value
2 garage v0.7 mbyte_per_sec 8.60
3 garage v0.7 obj_per_sec 3.02
4 garage v0.8-beta1 mbyte_per_sec 12.41
5 garage v0.8-beta1 obj_per_sec 4.36
6 minio 20220917 mbyte_per_sec 20.22
7 minio 20220917 obj_per_sec 7.11
8 garage v0.8-beta2 mbyte_per_sec 14.56
9 garage v0.8-beta2 obj_per_sec 5.19
10 garage v0.8-no-fsync mbyte_per_sec 17.31
11 garage v0.8-no-fsync obj_per_sec 6.11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

View file

@ -1,129 +0,0 @@
total_objects,batch_dur_nanoseconds
0,2018191689
8192,1819596313
16384,2102802010
24576,2473935158
32768,4510296173
40960,6613958698
49152,7977651423
57344,13671435594
65536,8060203586
73728,3795495684
81920,5794535775
90112,5543820710
98304,4519985809
106496,5110068206
114688,6708672963
122880,7857479433
131072,20642163540
139264,5635269044
147456,9351347336
155648,5666222073
163840,6501995906
172032,5293598878
180224,9350079270
188416,13303962641
196608,17428285824
204800,11733919058
212992,8372494836
221184,26574754854
229376,6314078661
237568,9683594309
245760,21850576414
253952,8991130243
262144,6567887673
270336,9454781018
278528,25552173846
286720,9580711949
294912,10257632597
303104,7478191638
311296,10501501215
319488,3816776322
327680,26795462810
335872,9396360089
344064,11208895014
352256,21126662513
360448,14198029001
368640,5093580346
376832,21004203835
385024,14433396301
393216,8933953570
401408,5461923067
409600,30844223516
417792,8315342751
425984,6166609079
434176,29359253375
442368,7642009005
450560,7036982475
458752,27168386971
466944,10015226557
475136,9245612551
483328,24224252348
491520,13827842768
499712,9702435577
507904,26083366912
516096,7829114232
524288,10792095771
532480,28058503484
540672,9984663485
548864,10714515140
557056,28472749292
565248,10832278691
573440,7594452219
581632,23858923965
589824,38909249537
598016,15112735865
606208,9644628857
614400,28367134578
622592,35180699079
630784,14207640136
638976,13236547125
647168,37982462879
655360,8448278050
663552,11632520113
671744,22661429490
679936,29261192164
688128,11982484321
696320,30381827880
704512,23530964587
712704,8219614193
720896,34002514929
729088,21279203762
737280,6880671212
745472,10884265763
753664,41999879903
761856,13465319479
770048,10792229369
778240,29004881357
786432,24372150617
794624,13327280319
802816,18478244110
811008,48319469581
819200,14174987827
827392,14368184404
835584,56647745264
843776,9880099642
851968,12808097118
860160,28380242726
868352,44970657202
876544,18733551704
884736,9340561806
892928,25246663514
901120,46462124425
909312,12856639771
917504,9028224897
925696,38580954489
933888,48184562190
942080,11204051215
950272,19754687230
958464,36364975788
966656,40759996520
974848,10562565477
983040,13905331718
991232,54140254529
999424,46643736817
1007616,8362351299
1015808,13514305332
1024000,39389278472
1032192,40328458712
1040384,15958365846
1 total_objects batch_dur_nanoseconds
2 0 2018191689
3 8192 1819596313
4 16384 2102802010
5 24576 2473935158
6 32768 4510296173
7 40960 6613958698
8 49152 7977651423
9 57344 13671435594
10 65536 8060203586
11 73728 3795495684
12 81920 5794535775
13 90112 5543820710
14 98304 4519985809
15 106496 5110068206
16 114688 6708672963
17 122880 7857479433
18 131072 20642163540
19 139264 5635269044
20 147456 9351347336
21 155648 5666222073
22 163840 6501995906
23 172032 5293598878
24 180224 9350079270
25 188416 13303962641
26 196608 17428285824
27 204800 11733919058
28 212992 8372494836
29 221184 26574754854
30 229376 6314078661
31 237568 9683594309
32 245760 21850576414
33 253952 8991130243
34 262144 6567887673
35 270336 9454781018
36 278528 25552173846
37 286720 9580711949
38 294912 10257632597
39 303104 7478191638
40 311296 10501501215
41 319488 3816776322
42 327680 26795462810
43 335872 9396360089
44 344064 11208895014
45 352256 21126662513
46 360448 14198029001
47 368640 5093580346
48 376832 21004203835
49 385024 14433396301
50 393216 8933953570
51 401408 5461923067
52 409600 30844223516
53 417792 8315342751
54 425984 6166609079
55 434176 29359253375
56 442368 7642009005
57 450560 7036982475
58 458752 27168386971
59 466944 10015226557
60 475136 9245612551
61 483328 24224252348
62 491520 13827842768
63 499712 9702435577
64 507904 26083366912
65 516096 7829114232
66 524288 10792095771
67 532480 28058503484
68 540672 9984663485
69 548864 10714515140
70 557056 28472749292
71 565248 10832278691
72 573440 7594452219
73 581632 23858923965
74 589824 38909249537
75 598016 15112735865
76 606208 9644628857
77 614400 28367134578
78 622592 35180699079
79 630784 14207640136
80 638976 13236547125
81 647168 37982462879
82 655360 8448278050
83 663552 11632520113
84 671744 22661429490
85 679936 29261192164
86 688128 11982484321
87 696320 30381827880
88 704512 23530964587
89 712704 8219614193
90 720896 34002514929
91 729088 21279203762
92 737280 6880671212
93 745472 10884265763
94 753664 41999879903
95 761856 13465319479
96 770048 10792229369
97 778240 29004881357
98 786432 24372150617
99 794624 13327280319
100 802816 18478244110
101 811008 48319469581
102 819200 14174987827
103 827392 14368184404
104 835584 56647745264
105 843776 9880099642
106 851968 12808097118
107 860160 28380242726
108 868352 44970657202
109 876544 18733551704
110 884736 9340561806
111 892928 25246663514
112 901120 46462124425
113 909312 12856639771
114 917504 9028224897
115 925696 38580954489
116 933888 48184562190
117 942080 11204051215
118 950272 19754687230
119 958464 36364975788
120 966656 40759996520
121 974848 10562565477
122 983040 13905331718
123 991232 54140254529
124 999424 46643736817
125 1007616 8362351299
126 1015808 13514305332
127 1024000 39389278472
128 1032192 40328458712
129 1040384 15958365846

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

View file

@ -1,129 +0,0 @@
total_objects,batch_dur_nanoseconds
0,35604165299
8192,30027091125
16384,36769805630
24576,44154399690
32768,36841962377
40960,52989512753
49152,52536807234
57344,53537348443
65536,53276055435
73728,55539526464
81920,54013225676
90112,68561851906
98304,69298493247
106496,114291303648
114688,78507905949
122880,126223986043
131072,121999273534
139264,153563457891
147456,151032625349
155648,149855834712
163840,153190455466
172032,150844647704
180224,156256328509
188416,151849908862
196608,154337246115
204800,154008292236
212992,160001140992
221184,154134240373
229376,147943023290
237568,150989793433
245760,161064597934
253952,150058583272
262144,158784561065
270336,150652453675
278528,108917197085
286720,158143657766
294912,151991188276
303104,150904775153
311296,152538005225
319488,158677889479
327680,151948293662
335872,131622851465
344064,120774952190
352256,160866374832
360448,157913387369
368640,157965094573
376832,155015634674
385024,152010190282
393216,151353578675
401408,152816629041
409600,100685222932
417792,151049307826
425984,152092080473
434176,156352511800
442368,156617304416
450560,156604667758
458752,163954135953
466944,102070359622
475136,155481160507
483328,157268905807
491520,162446380203
499712,159234723683
507904,141918580163
516096,133297515392
524288,92684666697
532480,153688292459
540672,154151441890
548864,157288990588
557056,159081065544
565248,153244088615
573440,161424543833
581632,174752406147
589824,155541074973
598016,159471780365
606208,158247043033
614400,157224045247
622592,160337074095
630784,157993307652
638976,156821062432
647168,158852305038
655360,161012982349
663552,156762111328
671744,159782719621
679936,156694048459
688128,175969992462
696320,159626684812
704512,156680995342
712704,155624836949
720896,161583816024
729088,156832016477
737280,160834148361
745472,157761321600
753664,157553638650
761856,176048273498
770048,156697917513
778240,162791069016
786432,156496526158
794624,161388816617
802816,159569344379
811008,159393281615
819200,158389581978
827392,164002225318
835584,162722200475
843776,160146392865
851968,164551137708
860160,177034374419
868352,161672813995
876544,169063897017
884736,160829838695
892928,157613804708
901120,162687585988
909312,166612325773
917504,160649709927
925696,163214320096
933888,178447566516
942080,155968188136
950272,161252816115
958464,159781104139
966656,163854372812
974848,157176626359
983040,160325050560
991232,165218492441
999424,160172384289
1007616,159316385255
1015808,178044565059
1024000,164817520071
1032192,159428724027
1040384,159973237521
1 total_objects batch_dur_nanoseconds
2 0 35604165299
3 8192 30027091125
4 16384 36769805630
5 24576 44154399690
6 32768 36841962377
7 40960 52989512753
8 49152 52536807234
9 57344 53537348443
10 65536 53276055435
11 73728 55539526464
12 81920 54013225676
13 90112 68561851906
14 98304 69298493247
15 106496 114291303648
16 114688 78507905949
17 122880 126223986043
18 131072 121999273534
19 139264 153563457891
20 147456 151032625349
21 155648 149855834712
22 163840 153190455466
23 172032 150844647704
24 180224 156256328509
25 188416 151849908862
26 196608 154337246115
27 204800 154008292236
28 212992 160001140992
29 221184 154134240373
30 229376 147943023290
31 237568 150989793433
32 245760 161064597934
33 253952 150058583272
34 262144 158784561065
35 270336 150652453675
36 278528 108917197085
37 286720 158143657766
38 294912 151991188276
39 303104 150904775153
40 311296 152538005225
41 319488 158677889479
42 327680 151948293662
43 335872 131622851465
44 344064 120774952190
45 352256 160866374832
46 360448 157913387369
47 368640 157965094573
48 376832 155015634674
49 385024 152010190282
50 393216 151353578675
51 401408 152816629041
52 409600 100685222932
53 417792 151049307826
54 425984 152092080473
55 434176 156352511800
56 442368 156617304416
57 450560 156604667758
58 458752 163954135953
59 466944 102070359622
60 475136 155481160507
61 483328 157268905807
62 491520 162446380203
63 499712 159234723683
64 507904 141918580163
65 516096 133297515392
66 524288 92684666697
67 532480 153688292459
68 540672 154151441890
69 548864 157288990588
70 557056 159081065544
71 565248 153244088615
72 573440 161424543833
73 581632 174752406147
74 589824 155541074973
75 598016 159471780365
76 606208 158247043033
77 614400 157224045247
78 622592 160337074095
79 630784 157993307652
80 638976 156821062432
81 647168 158852305038
82 655360 161012982349
83 663552 156762111328
84 671744 159782719621
85 679936 156694048459
86 688128 175969992462
87 696320 159626684812
88 704512 156680995342
89 712704 155624836949
90 720896 161583816024
91 729088 156832016477
92 737280 160834148361
93 745472 157761321600
94 753664 157553638650
95 761856 176048273498
96 770048 156697917513
97 778240 162791069016
98 786432 156496526158
99 794624 161388816617
100 802816 159569344379
101 811008 159393281615
102 819200 158389581978
103 827392 164002225318
104 835584 162722200475
105 843776 160146392865
106 851968 164551137708
107 860160 177034374419
108 868352 161672813995
109 876544 169063897017
110 884736 160829838695
111 892928 157613804708
112 901120 162687585988
113 909312 166612325773
114 917504 160649709927
115 925696 163214320096
116 933888 178447566516
117 942080 155968188136
118 950272 161252816115
119 958464 159781104139
120 966656 163854372812
121 974848 157176626359
122 983040 160325050560
123 991232 165218492441
124 999424 160172384289
125 1007616 159316385255
126 1015808 178044565059
127 1024000 164817520071
128 1032192 159428724027
129 1040384 159973237521

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

View file

@ -1,65 +0,0 @@
library(tidyverse)
library(ggpmisc)
read_csv("garage-v0.8-beta2-lmdb.csv") %>% mutate(batch_dur_sec = batch_dur_nanoseconds / 1000 / 1000 / 1000) %>% filter(total_objects != 0) -> s
reg1 <- lm(s$batch_dur_sec~s$total_objects)
reg2 <- lm(s$batch_dur_sec ~ log(s$total_objects))
f1 <- y~log(x)
f2 <- y~x
ggplot(s, aes(x=total_objects, y=batch_dur_sec)) +
geom_point() +
#geom_smooth(method="lm",formula=f1, se = FALSE, color="red") +
#geom_smooth(method="lm",formula=f2, se = FALSE, color="blue") +
#stat_poly_eq(formula = f1, label.y = 0.9, color = "red", aes(label=paste(..eq.label..,..rr.label..,..adj.rr.label..,..AIC.label..,..BIC.label.., sep = "~~~"))) +
#stat_poly_eq(formula = f2, label.y = 0.8, color="blue",aes(label=paste(..eq.label..,..rr.label..,..adj.rr.label..,..AIC.label..,..BIC.label.., sep = "~~~"))) +
#geom_smooth(method = "gam", se = FALSE) +
scale_x_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
scale_y_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
coord_cartesian(ylim=c(0,60)) +
labs(
y="Time (in sec) spent sending a batch (8192 objects)",
x="Total number of objects stored in the cluster",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Storing 1M+ files in Garage! Impact of existing data on cluster interactiveness",
subtitle="Daemon: Garage v0.8 beta 2 with LMDB as db_engine\nBenchmark: 128 batch. 8192 objects/batch. 32 threads/batch. 256 objects/thread. 16-byte/objects.\nEnvironment: mknet (Ryzen 5 1400, 16GB RAM, SSD). DC topo (3 nodes, 1Gb/s, 1ms latency).") +
theme_classic()
ggsave("./garage.png", width=200, height=120, units="mm")
#ggsave("./garage-regression.png", width=200, height=120, units="mm")
read_csv("minio.csv") %>% mutate(batch_dur_sec = batch_dur_nanoseconds / 1000 / 1000 / 1000 ) -> s2
ggplot(s2, aes(x=total_objects, y=batch_dur_sec)) +
geom_point() +
#geom_smooth(method = "gam", se = FALSE) +
scale_x_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
scale_y_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
labs(
y="Time (in sec) spent sending a batch (8192 objects)",
x="Total number of objects stored in the cluster",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Storing 1M+ files in Minio! Impact of existing data on cluster interactiveness",
subtitle="Daemon: Minio RELEASE 20220917\nBenchmark: 128 batch. 8192 objects/batch. 32 threads/batch. 256 objects/thread. 16-byte/objects.\nEnvironment: mknet (Ryzen 5 1400, 16GB RAM, SSD). DC topo (3 nodes, 1Gb/s, 1ms latency).") +
theme_classic()
ggsave("./minio.png", width=200, height=120, units="mm")
bind_rows(s %>% add_column(daemon="garage 0.8 beta2 lmdb"), s2 %>% add_column(daemon="minio RELEASE 20220917")) -> sc
ggplot(sc, aes(x=total_objects, y=batch_dur_sec, group=daemon, color=daemon)) +
geom_point() +
#geom_smooth(method = "gam", se = FALSE) +
scale_x_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
scale_y_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
labs(
y="Time (in sec) spent sending a batch (8192 objects)",
x="Total number of objects stored in the cluster",
fill="Daemon",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Storing 1M+ files in Garage and Minio! Impact of existing data on cluster interactiveness",
subtitle="Daemon: Garage v0.8 beta 2 with LMDB as db_engine, Minio RELEASE 20220917\nBenchmark: 128 batch. 8192 objects/batch. 32 threads/batch. 256 objects/thread. 16-byte/objects.\nEnvironment: mknet (Ryzen 5 1400, 16GB RAM, SSD). DC topo (3 nodes, 1Gb/s, 1ms latency).") +
theme_classic() +
theme(legend.position = c(.85, .55))
ggsave("./plot.png", width=200, height=120, units="mm")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 KiB

View file

@ -1,15 +0,0 @@
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 4m59s.
* Throughput: 266.79 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 4m59s.
* Throughput: 0.29 MiB/s, 1200.51 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 4m59s.
* Throughput: 0.10 MiB/s, 400.20 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 4m59s.
* Throughput: 800.32 obj/s
Cluster Total: 0.39 MiB/s, 2667.83 obj/s over 5m0s.
Aggregated data saved to /tmp/mknet-store/warp.csv

View file

@ -1,17 +0,0 @@
library(tidyverse)
read_csv("summary.csv")-> s
ggplot(s, aes(x=db_engine,y=rate)) +
scale_y_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
geom_bar(stat='identity',fill="#00BFC4", color="black") +
coord_flip() +
facet_wrap(~operation, scales = "free", dir="v") +
labs(
x="Metadata Engine",
y="Object/sec",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Comparison of Garage's metadata engines with \"minio/warp\"",
subtitle="Daemon: Garage v0.8 no-fsync to avoid being impacted by block manager\nBenchmark: warp, mixed mode, 5min bench, 256B objects, initialized with 200 objects.\nEnvironment: mknet (Ryzen 5 1400, 16GB RAM, SSD). DC topo (3 nodes, 1Gb/s, 1ms latency).",
) +
theme_classic()
ggsave("./plot.png", width=200, height=120, units="mm")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

View file

@ -1,13 +0,0 @@
Operation: DELETE, 10%, Concurrency: 20, Ran 3m42s.
* Throughput: 161.98 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 3m42s.
* Throughput: 0.18 MiB/s, 729.07 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 3m42s.
* Throughput: 0.06 MiB/s, 242.99 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 3m42s.
* Throughput: 486.09 obj/s
Cluster Total: 0.24 MiB/s, 1620.14 obj/s over 3m42s.

View file

@ -1,15 +0,0 @@
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 3m49s.
* Throughput: 129.83 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 3m49s.
* Throughput: 0.14 MiB/s, 584.32 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 3m49s.
* Throughput: 0.05 MiB/s, 194.81 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 3m49s.
* Throughput: 389.52 obj/s
Cluster Total: 0.19 MiB/s, 1298.49 obj/s over 3m49s.
Aggregated data saved to /tmp/mknet-store/warp.csv

View file

@ -1,15 +0,0 @@
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 4m55s.
* Throughput: 1.29 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 4m55s.
* Throughput: 0.00 MiB/s, 5.75 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 4m55s.
* Throughput: 0.00 MiB/s, 1.93 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 4m56s.
* Throughput: 3.86 obj/s
Cluster Total: 0.00 MiB/s, 12.83 obj/s over 4m55s.
Aggregated data saved to /tmp/mknet-store/warp.csv

View file

@ -1,17 +0,0 @@
db_engine,operation,rate
lmdb,delete,266.79
lmdb,get,1200.51
lmdb,put,400
lmdb,stat,800
sled,delete,129.83
sled,get,584.32
sled,put,194.81
sled,stat,389.52
sqlite,delete,1.29
sqlite,get,5.75
sqlite,put,1.93
sqlite,stat,3.86
sled-nosync,delete,161.98
sled-nosync,get,729.07
sled-nosync,put,242.99
sled-nosync,stat,486.09
1 db_engine operation rate
2 lmdb delete 266.79
3 lmdb get 1200.51
4 lmdb put 400
5 lmdb stat 800
6 sled delete 129.83
7 sled get 584.32
8 sled put 194.81
9 sled stat 389.52
10 sqlite delete 1.29
11 sqlite get 5.75
12 sqlite put 1.93
13 sqlite stat 3.86
14 sled-nosync delete 161.98
15 sled-nosync get 729.07
16 sled-nosync put 242.99
17 sled-nosync stat 486.09

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 KiB

View file

@ -1,27 +0,0 @@
library(tidyverse)
library(ggpmisc)
library(scales)
read_csv("s3billion-dc-gros-32threads-256batchsize-128000batchcount-v0.8-fix-time-30M.csv") %>% mutate(batch_dur_sec = batch_dur_nanoseconds / 1000 / 1000 / 1000) %>% filter(total_objects != 0) -> s
reg <- lm(s$batch_dur_sec~s$total_objects)
f <- y~x
ggplot(s, aes(x=total_objects, y=batch_dur_sec)) +
geom_point(shape = "bullet", alpha=0.4) +
geom_smooth(method="lm", formula=f, se = FALSE, color="blue") +
scale_x_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10), labels = unit_format(unit = "M", scale = 1e-6)) +
scale_y_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10)) +
coord_cartesian(ylim=c(0,3)) +
labs(
y="Time (in sec) spent sending a batch (8192 objects)",
x="Total number of objects stored in the cluster",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Storing 30M small objects in Garage!",
subtitle="Daemon: Garage v0.8.0-rc1 (+ #398 pull request) with LMDB as db_engine\nBenchmark: 8192 objects/batch. 32 threads/batch. 256 objects/thread. 16-byte/objects.\nEnvironment: mknet on Grid'5000 (gros) https://www.grid5000.fr/w/Nancy:Hardware#gros (SATA SSD).\nDC topo (3 logical nodes, 1Gb/s, 1ms latency).") +
theme_classic()
ggsave("./garage-0.8-gros.png", width=200, height=120, units="mm")
#ggsave("./garage-regression.png", width=200, height=120, units="mm")

View file

@ -1 +0,0 @@
s3billion

View file

@ -1,22 +0,0 @@
# s3lat
## installation
```bash
go get git.deuxfleurs.fr/quentin/s3lat@latest
```
## usage
```bash
export ENDPOINT=[fc00:9a7a:9e::1]:9000
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
s3lat
```
## see also
- https://git.deuxfleurs.fr/quentin/benchmarks
- https://git.deuxfleurs.fr/trinity-1686a/mknet

View file

@ -1,8 +0,0 @@
module git.deuxfleurs.fr/Deuxfleurs/mknet/benchmarks/s3billion
go 1.16
require (
github.com/google/uuid v1.1.1
github.com/minio/minio-go/v7 v7.0.16
)

View file

@ -1,78 +0,0 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4=
github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
github.com/minio/minio-go/v7 v7.0.16 h1:GspaSBS8lOuEUCAqMe0W3UxSoyOA4b4F8PTspRVI+k4=
github.com/minio/minio-go/v7 v7.0.16/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g=
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f h1:aZp0e2vLN4MToVqnjNEYEtrEA8RH8U8FN1CU7JgqsPU=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

View file

@ -1,176 +0,0 @@
package main
import (
"context"
"crypto/tls"
"fmt"
"io"
"log"
"math/rand"
"net/http"
"os"
"strconv"
"time"
"github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
type PRNG struct {
rem int64
}
func (r *PRNG) Read(p []byte) (n int, err error) {
//log.Printf("rem=%d, buf=%d\n", r.rem, len(p))
if int64(len(p)) > r.rem {
p = p[:r.rem]
}
if int64(len(p)) > r.rem {
log.Fatal("LOGIC ERROR")
}
n, err = rand.Read(p)
if err != nil {
return
}
r.rem -= int64(n)
if r.rem <= 0 {
err = io.EOF
//log.Printf("PRNG file has been fully read. rem=%d,n=%d,err=%s\n", r.rem, n, err)
}
return
}
func putObj(mc *minio.Client, buck string, size int64) error {
prng := new(PRNG)
prng.rem = size
key := uuid.New().String()
_, err := mc.PutObject(
context.Background(),
buck,
key,
prng,
size,
minio.PutObjectOptions{ContentType: "application/octet-stream"},
)
return err
}
func main() {
fmt.Printf("total_objects,batch_dur_nanoseconds\n")
minio.MaxRetry = 1
_, isSSL := os.LookupEnv("SSL")
opts := minio.Options{
Creds: credentials.NewStaticV4(os.Getenv("AWS_ACCESS_KEY_ID"), os.Getenv("AWS_SECRET_ACCESS_KEY"), ""),
Secure: isSSL,
}
if region, ok := os.LookupEnv("AWS_REGION"); ok {
opts.Region = region
}
if _, ok := os.LookupEnv("SSL_INSECURE"); ok {
opts.Transport = &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
}
mc, err := minio.New(os.Getenv("ENDPOINT"), &opts)
if err != nil {
log.Fatal("failed connect", err)
return
}
thread := 32
if env_thread, ok := os.LookupEnv("THREAD"); ok {
tmp, err := strconv.Atoi(env_thread)
if err != nil {
log.Fatalf("invalid value for THREAD: %v\n", env_thread)
}
thread = tmp
}
batch_size := 256
if env_batch_size, ok := os.LookupEnv("BATCH_SIZE"); ok {
tmp, err := strconv.Atoi(env_batch_size)
if err != nil {
log.Fatalf("invalid value for BATCH_SIZE: %v\n", env_batch_size)
}
batch_size = tmp
}
batch_count := 128
if env_batch_count, ok := os.LookupEnv("BATCH_COUNT"); ok {
tmp, err := strconv.Atoi(env_batch_count)
if err != nil {
log.Fatalf("invalid value for BATCH_COUNT: %v\n", env_batch_count)
}
batch_count = tmp
}
obj_size := 16
if env_obj_size, ok := os.LookupEnv("OBJ_SIZE"); ok {
tmp, err := strconv.Atoi(env_obj_size)
if err != nil {
log.Fatalf("invalid value for OBJ_SIZE: %v\n", env_obj_size)
}
obj_size = tmp
}
total_obj := thread * batch_size * batch_count
total_size := total_obj * obj_size
log.Printf("if bench succeed, %v objects (%v bytes) will be created\n", total_obj, total_size)
// Create Bucket
buck := uuid.New().String()
err = mc.MakeBucket(context.Background(), buck, minio.MakeBucketOptions{})
if err != nil {
log.Fatal(err)
return
}
log.Printf("created bucket %s\n", buck)
// Start sending...
for bc := 0; bc < batch_count; bc++ {
log.Printf("batch %d/%d - start\n", bc+1, batch_count)
start := time.Now()
syn := make(chan error)
for tc := 0; tc < thread; tc++ {
go func() {
for bs := 0; bs < batch_size; bs++ {
err := putObj(mc, buck, int64(obj_size))
if err != nil {
syn <- err
return
}
}
syn <- nil
}()
}
log.Printf("batch %d/%d - all threads started\n", bc+1, batch_count)
errCount := 0
for tc := 0; tc < thread; tc++ {
cerr := <-syn
if cerr != nil {
errCount += 1
log.Printf("thread %d/%d failed with %s\n", tc, thread, cerr)
}
}
if errCount > 0 {
log.Fatal("Too many errors, exiting...")
return
}
elapsed := time.Since(start)
fmt.Printf("%d,%v\n", bc * thread * batch_size, elapsed.Nanoseconds())
log.Printf("batch %d/%d - all threads returned\n", bc+1, batch_count)
}
}

View file

@ -1 +0,0 @@
s3concurrent

View file

@ -1,24 +0,0 @@
module git.deuxfleurs.fr/quentin/s3concurrent
go 1.18
require github.com/minio/minio-go/v7 v7.0.34
require (
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.15.9 // indirect
github.com/klauspost/cpuid/v2 v2.1.0 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
github.com/minio/sha256-simd v1.0.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/rs/xid v1.4.0 // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
golang.org/x/text v0.3.7 // indirect
gopkg.in/ini.v1 v1.66.6 // indirect
)

View file

@ -1,52 +0,0 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.1.0 h1:eyi1Ad2aNJMW95zcSbmGg7Cg6cq3ADwLpMAP96d8rF0=
github.com/klauspost/cpuid/v2 v2.1.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.34 h1:JMfS5fudx1mN6V2MMNyCJ7UMrjEzZzIvMgfkWc1Vnjk=
github.com/minio/minio-go/v7 v7.0.34/go.mod h1:nCrRzjoSUQh8hgKKtu3Y708OLvRLtuASMg2/nvmbarw=
github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI=
gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View file

@ -1,132 +0,0 @@
package main
import (
"context"
"crypto/tls"
"fmt"
"time"
"io"
"log"
"math/rand"
"net/http"
"os"
"github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func buildMc() (*minio.Client, error) {
_, isSSL := os.LookupEnv("SSL")
opts := minio.Options{
Creds: credentials.NewStaticV4(os.Getenv("AWS_ACCESS_KEY_ID"), os.Getenv("AWS_SECRET_ACCESS_KEY"), ""),
Secure: isSSL,
}
if region, ok := os.LookupEnv("REGION"); ok {
opts.Region = region
}
if _, ok := os.LookupEnv("SSL_INSECURE"); ok {
opts.Transport = &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
}
mc, err := minio.New(os.Getenv("ENDPOINT"), &opts)
return mc, err
}
type PRNG struct {
rem int64
}
func (r *PRNG) Read(p []byte) (n int, err error) {
//log.Printf("rem=%d, buf=%d\n", r.rem, len(p))
if int64(len(p)) > r.rem {
p = p[:r.rem]
}
if int64(len(p)) > r.rem {
log.Fatal("LOGIC ERROR")
}
n, err = rand.Read(p)
if err != nil {
return
}
r.rem -= int64(n)
if r.rem <= 0 {
err = io.EOF
//log.Printf("PRNG file has been fully read. rem=%d,n=%d,err=%s\n", r.rem, n, err)
}
return
}
func putObj(buck string, size int64) error {
mc, err := buildMc()
if err != nil {
return err
}
prng := new(PRNG)
prng.rem = size
key := uuid.New().String()
_, err = mc.PutObject(
context.Background(),
buck,
key,
prng,
size,
minio.PutObjectOptions{ContentType: "application/octet-stream"},
)
return err
}
func main() {
minio.MaxRetry = 1
mc, err := buildMc()
if err != nil {
log.Fatal("failed connect", err)
return
}
// Create Bucket
buck := uuid.New().String()
err = mc.MakeBucket(context.Background(), buck, minio.MakeBucketOptions{})
if err != nil {
log.Fatal(err)
return
}
log.Printf("created bucket %s\n", buck)
fmt.Println("sent,success,elapsed,elapsed_per_req")
// Send to bucket
for i := 1; i <= 16; i++ {
log.Printf("start concurrent loop with %d coroutines\n", i)
syn := make(chan error)
start := time.Now()
for j := 1; j <= i; j++ {
go func() {
syn <- putObj(buck, 1024*1024)
}()
}
errCount := 0
for j := 1; j <= i; j++ {
cerr := <-syn
if cerr != nil {
errCount += 1
log.Printf("%d/%d failed with %s\n", j, i, cerr)
}
}
elapsed := time.Since(start)
fmt.Printf("%d,%d,%v,%v\n", i, i - errCount, elapsed.Nanoseconds(), elapsed.Nanoseconds() / int64(i))
log.Printf("done, %d coroutines returned\n", i)
}
log.Println("bench done")
}

View file

@ -1 +0,0 @@
s3lat

View file

@ -1,22 +0,0 @@
# s3lat
## installation
```bash
go get git.deuxfleurs.fr/quentin/s3lat@latest
```
## usage
```bash
export ENDPOINT=[fc00:9a7a:9e::1]:9000
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
s3lat
```
## see also
- https://git.deuxfleurs.fr/quentin/benchmarks
- https://git.deuxfleurs.fr/trinity-1686a/mknet

View file

@ -1,8 +0,0 @@
module git.deuxfleurs.fr/quentin/s3lat
go 1.16
require (
github.com/google/uuid v1.1.1
github.com/minio/minio-go/v7 v7.0.16
)

View file

@ -1,78 +0,0 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4=
github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
github.com/minio/minio-go/v7 v7.0.16 h1:GspaSBS8lOuEUCAqMe0W3UxSoyOA4b4F8PTspRVI+k4=
github.com/minio/minio-go/v7 v7.0.16/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g=
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f h1:aZp0e2vLN4MToVqnjNEYEtrEA8RH8U8FN1CU7JgqsPU=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

View file

@ -1,135 +0,0 @@
package main
import (
"context"
"log"
"os"
"fmt"
"time"
"io"
"io/ioutil"
"strings"
"net/http"
"crypto/tls"
"strconv"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/google/uuid"
)
func main() {
fmt.Printf("endpoint,nanoseconds\n")
// Initial setup
_, isSSL := os.LookupEnv("SSL");
opts := minio.Options {
Creds: credentials.NewStaticV4(os.Getenv("AWS_ACCESS_KEY_ID"), os.Getenv("AWS_SECRET_ACCESS_KEY"), ""),
Secure: isSSL,
}
if region, ok := os.LookupEnv("REGION"); ok {
opts.Region = region
}
if _, ok := os.LookupEnv("SSL_INSECURE"); ok {
opts.Transport = &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
}
mc, err := minio.New(os.Getenv("ENDPOINT"), &opts)
if err != nil {
log.Fatal("failed connect", err)
return
}
// Create Bucket
buck := uuid.New().String()
err = mc.MakeBucket(context.Background(), buck, minio.MakeBucketOptions{ })
if err != nil {
log.Fatal(err)
return
}
// List Buckets
for i := 0; i < 100; i++ {
start := time.Now()
_, err := mc.ListBuckets(context.Background())
elapsed := time.Since(start)
if err != nil {
log.Fatal("failed listbucket: ", err)
return
}
fmt.Printf("listbuckets,%v\n", elapsed.Nanoseconds())
}
// PutObject
for i := 0; i < 100; i++ {
istr := strconv.Itoa(i)
content := istr + " hello world " + istr
start := time.Now()
_, err := mc.PutObject(context.Background(), buck, "element"+istr, strings.NewReader(content), int64(len(content)), minio.PutObjectOptions{ContentType:"application/octet-stream"})
elapsed := time.Since(start)
if err != nil {
log.Fatal("failed putObject: ",err)
return
}
fmt.Printf("putobject,%v\n", elapsed.Nanoseconds())
}
// ListObject
for i := 0; i < 100; i++ {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
start := time.Now()
objectCh := mc.ListObjects(ctx, buck, minio.ListObjectsOptions{
Recursive: true,
})
for object := range objectCh {
if object.Err != nil {
log.Fatal(object.Err)
return
}
}
elapsed := time.Since(start)
fmt.Printf("listobjects,%v\n", elapsed.Nanoseconds())
}
// GetObject
for i := 0; i < 100; i++ {
istr := strconv.Itoa(i)
start := time.Now()
object, err := mc.GetObject(context.Background(), buck, "element"+istr, minio.GetObjectOptions{})
if err != nil {
log.Fatal(err)
return
}
if _, err = io.Copy(ioutil.Discard, object) ; err != nil {
log.Fatal("failed getobject: ", err)
return
}
elapsed := time.Since(start)
fmt.Printf("getobject,%v\n", elapsed.Nanoseconds())
}
// RemoveObject
for i := 0; i < 100; i++ {
istr := strconv.Itoa(i)
start := time.Now()
err = mc.RemoveObject(context.Background(), buck, "element"+istr, minio.RemoveObjectOptions{})
elapsed := time.Since(start)
if err != nil {
log.Fatal(err)
return
}
fmt.Printf("removeobject,%v\n", elapsed.Nanoseconds())
}
// RemoveBucket
err = mc.RemoveBucket(context.Background(), buck)
if err != nil {
log.Fatal(err)
return
}
}

View file

@ -1 +0,0 @@
s3ttfb

View file

@ -1,12 +0,0 @@
module git.deuxfleurs.fr/Deuxfleurs/mknet/benchmarks/s3ttfb
go 1.16
require (
github.com/aws/aws-sdk-go-v2 v1.16.16
github.com/aws/aws-sdk-go-v2/config v1.17.7
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11
github.com/google/uuid v1.1.1
github.com/minio/minio-go/v7 v7.0.16
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
)

View file

@ -1,123 +0,0 @@
github.com/aws/aws-sdk-go-v2 v1.16.16 h1:M1fj4FE2lB4NzRb9Y0xdWsn2P0+2UHVxwKyOa4YJNjk=
github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU=
github.com/aws/aws-sdk-go-v2/config v1.17.7 h1:odVM52tFHhpqZBKNjVW5h+Zt1tKHbhdTQRb+0WHrNtw=
github.com/aws/aws-sdk-go-v2/config v1.17.7/go.mod h1:dN2gja/QXxFF15hQreyrqYhLBaQo1d9ZKe/v/uplQoI=
github.com/aws/aws-sdk-go-v2/credentials v1.12.20 h1:9+ZhlDY7N9dPnUmf7CDfW9In4sW5Ff3bh7oy4DzS1IE=
github.com/aws/aws-sdk-go-v2/credentials v1.12.20/go.mod h1:UKY5HyIux08bbNA7Blv4PcXQ8cTkGh7ghHMFklaviR4=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 h1:r08j4sbZu/RVi+BNxkBJwPMUYY3P8mgSDuKkZ/ZN1lE=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 h1:s4g/wnzMf+qepSNgTvaQQHNxyMLKSawNhKCPNy++2xY=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 h1:/K482T5A3623WJgWT8w1yRAFK4RzGzEl7y39yhtn9eA=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 h1:ZSIPAkAsCCjYrhqfw2+lNzWDzxzHXEckFkTePL5RSWQ=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14/go.mod h1:AyGgqiKv9ECM6IZeNQtdT8NnMvUb3/2wokeq2Fgryto=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 h1:Lh1AShsuIJTwMkoxVCAYPJgNG5H+eN6SmoUn8nOZ5wE=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 h1:BBYoNQt2kUZUUK4bIPsKrCcjVPUMNsgQpNAwhznK/zo=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 h1:Jrd/oMh0PKQc6+BowB+pLEwLIgaQF29eYbe7E1Av9Ug=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 h1:HfVVR1vItaG6le+Bpw6P4midjBDMKnjMyZnw9MXYUcE=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI=
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVBDxyg/GY/QdcIEZw=
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo=
github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 h1:pwvCchFUEnlceKIgPUouBJwK81aCkQ8UDMORfeFtW10=
github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5 h1:GUnZ62TevLqIoDyHeiWj2P7EqaosgakBKVvWriIdLQY=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA=
github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 h1:9pPi0PsFNAGILFfPCk8Y0iyEBGc6lu6OQ97U7hmdesg=
github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM=
github.com/aws/smithy-go v1.13.3 h1:l7LYxGuzK6/K+NzJ2mC+VvLUbae0sL3bXU//04MkmnA=
github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4=
github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
github.com/minio/minio-go/v7 v7.0.16 h1:GspaSBS8lOuEUCAqMe0W3UxSoyOA4b4F8PTspRVI+k4=
github.com/minio/minio-go/v7 v7.0.16/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g=
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f h1:aZp0e2vLN4MToVqnjNEYEtrEA8RH8U8FN1CU7JgqsPU=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

View file

@ -1,214 +0,0 @@
package main
import (
"context"
"crypto/tls"
"fmt"
"io"
"io/ioutil"
"log"
"math/rand"
"net/http"
"net/http/httptrace"
"os"
"strconv"
"time"
"github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
type PRNG struct {
rem int64
}
func (r *PRNG) Read(p []byte) (n int, err error) {
//log.Printf("rem=%d, buf=%d\n", r.rem, len(p))
if int64(len(p)) > r.rem {
p = p[:r.rem]
}
if int64(len(p)) > r.rem {
log.Fatal("LOGIC ERROR")
}
n, err = rand.Read(p)
if err != nil {
return
}
r.rem -= int64(n)
if r.rem <= 0 {
err = io.EOF
//log.Printf("PRNG file has been fully read. rem=%d,n=%d,err=%s\n", r.rem, n, err)
}
return
}
func main() {
var err error
fmt.Printf("nanoseconds\n")
// Initial setup
_, isSSL := os.LookupEnv("SSL")
opts := minio.Options{
Creds: credentials.NewStaticV4(os.Getenv("AWS_ACCESS_KEY_ID"), os.Getenv("AWS_SECRET_ACCESS_KEY"), ""),
Secure: isSSL,
}
if region, ok := os.LookupEnv("AWS_REGION"); ok {
opts.Region = region
}
if _, ok := os.LookupEnv("SSL_INSECURE"); ok {
opts.Transport = &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
}
size := 1 * 1024 * 1024 // 1 MB
if env_size, ok := os.LookupEnv("SIZE"); ok {
size, err = strconv.Atoi(env_size)
if err != nil {
log.Fatal(err)
return
}
}
repeat := 60
if env_repeat, ok := os.LookupEnv("REPEAT"); ok {
repeat, err = strconv.Atoi(env_repeat)
if err != nil {
log.Fatal(err)
return
}
}
mc, err := minio.New(os.Getenv("ENDPOINT"), &opts)
if err != nil {
log.Fatal("failed connect", err)
return
}
// AWS SDK stuff
customResolver := aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
return aws.Endpoint{
PartitionID: "aws",
URL: "http://"+os.Getenv("ENDPOINT"),
SigningRegion: region,
}, nil
})
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithEndpointResolverWithOptions(customResolver))
if err != nil {
log.Fatalf("failed to load configuration, %v", err)
}
// Create an Amazon S3 service client
client := s3.NewFromConfig(cfg, func(opts *s3.Options) {
opts.UsePathStyle = true
})
// Create Bucket
buck := uuid.New().String()
err = mc.MakeBucket(context.Background(), buck, minio.MakeBucketOptions{})
if err != nil {
log.Fatal(err)
return
}
// Send an object
prng := new(PRNG)
prng.rem = int64(size)
key := uuid.New().String()
_, err = mc.PutObject(
context.Background(),
buck,
key,
prng,
int64(size),
minio.PutObjectOptions{ContentType: "application/octet-stream"},
)
if err != nil {
log.Fatal("unable to upload our test object")
return
}
for i := 0; i < repeat; i++ {
// Now, try to fetch it *repeat* times (assume no caching)
var elapsed time.Duration
var start time.Time
trace := &httptrace.ClientTrace{
GotFirstResponseByte: func() { elapsed = time.Since(start) },
}
start = time.Now()
/*object, err := mc.GetObject(httptrace.WithClientTrace(context.Background(), trace), buck, key, minio.GetObjectOptions{})
if err != nil {
log.Fatal(err)
return
}*/
out, err := client.GetObject(httptrace.WithClientTrace(context.Background(), trace), &s3.GetObjectInput {
Bucket: aws.String(buck),
Key: aws.String(key),
})
if err != nil {
log.Fatal(err)
return
}
object := out.Body
if _, err = io.Copy(ioutil.Discard, object) ; err != nil {
log.Fatal("failed getobject: ", err)
return
}
fmt.Printf("%v\n", elapsed.Nanoseconds())
//time.Sleep(10 * time.Second)
}
}
/*
func timeGet(url string) {
req, _ := http.NewRequest("GET", url, nil)
var start, connect, dns, tlsHandshake time.Time
trace := &httptrace.ClientTrace{
DNSStart: func(dsi httptrace.DNSStartInfo) { dns = time.Now() },
DNSDone: func(ddi httptrace.DNSDoneInfo) {
fmt.Printf("DNS Done: %v\n", time.Since(dns))
},
TLSHandshakeStart: func() { tlsHandshake = time.Now() },
TLSHandshakeDone: func(cs tls.ConnectionState, err error) {
fmt.Printf("TLS Handshake: %v\n", time.Since(tlsHandshake))
},
ConnectStart: func(network, addr string) { connect = time.Now() },
ConnectDone: func(network, addr string, err error) {
fmt.Printf("Connect time: %v\n", time.Since(connect))
},
GotFirstResponseByte: func() {
fmt.Printf("Time from start to first byte: %v\n", time.Since(start))
},
}
req = req.WithContext(httptrace.WithClientTrace(req.Context(), trace))
start = time.Now()
if _, err := http.DefaultTransport.RoundTrip(req); err != nil {
log.Fatal(err)
}
fmt.Printf("Total time: %v\n", time.Since(start))
}
*/

@ -1 +0,0 @@
Subproject commit df8f2cd7b7a8523755b4d3c04271a69571a455ca

View file

@ -5,19 +5,16 @@ links:
- &1000
bandwidth: 1000M
latency: 100us
txqueuelen: 10000
- &vdsl
bandwidth:
up: 3M
down: 55M
latency: 50ms
jitter: 10ms
txqueuelen: 100
- &fiber
bandwidth: 400M
latency: 10ms
jitter: 3ms
txqueuelen: 1000
zones:
- &dc1

61
instrumented/deploy_garage.sh Executable file
View file

@ -0,0 +1,61 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
GARAGE_PATH=garage
STORAGE_PATH=/tmp/garage-testnet
export RPC_SECRET=3e9abff5f9e480afbadb46a77b7a26fe0e404258f0dc3fd5386b0ba8e0ad2fba
if [ -z "$ZONE" ]; then
NODE_STORAGE_PATH=${STORAGE_PATH}/${HOST}
else
NODE_STORAGE_PATH=${STORAGE_PATH}/${ZONE}/${HOST}
fi
BOOTSTRAP_FILE=${STORAGE_PATH}/bootstrap_peer
export GARAGE_CONFIG_FILE=${NODE_STORAGE_PATH}/garage.toml
mkdir -p ${NODE_STORAGE_PATH}
cd ${NODE_STORAGE_PATH}
rm ${BOOTSTRAP_FILE} 2>/dev/null || true
cat > ${GARAGE_CONFIG_FILE} << EOF
metadata_dir = "${NODE_STORAGE_PATH}/meta"
data_dir = "${NODE_STORAGE_PATH}/data"
replication_mode = "3"
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "[${IP}]:3901"
rpc_secret = "${RPC_SECRET}"
bootstrap_peers=[]
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage"
[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage"
index = "index.html"
EOF
RUST_LOG=garage=debug ${GARAGE_PATH} server 2>> ${NODE_STORAGE_PATH}/logs & disown
sleep 2
CONFIG_NODE_FPATH=($(find /tmp/garage-testnet/ -maxdepth 3 -name garage.toml))
SELF_ID=$(${GARAGE_PATH} node id 2>/dev/null)
SHORT_ID=$(echo ${SELF_ID} | cut -c-64)
${GARAGE_PATH} -c ${CONFIG_NODE_FPATH[0]} node connect ${SELF_ID}
${GARAGE_PATH} -c ${CONFIG_NODE_FPATH[0]} layout assign ${SHORT_ID} -z ${ZONE:-unzonned-${HOST}} -c 1 -t ${HOST}
if [ ${CONFIG_NODE_FPATH[0]} == ${GARAGE_CONFIG_FILE} ]; then
sleep 2
${GARAGE_PATH} layout show
${GARAGE_PATH} layout apply --version 1
fi

71
instrumented/deploy_minio.py Executable file
View file

@ -0,0 +1,71 @@
#!/usr/bin/env python3
import json, yaml, os, sys, time, pathlib, socket, shutil
STORAGE_PATH = os.path.join(os.getcwd(), '.minio-testnet')
#STORAGE_PATH = os.path.join('/mnt/windows', '.minio-testnet')
MINIO_PATH = '/srv'
HOSTS_PATH = os.path.join(STORAGE_PATH, 'hosts.txt')
UNIX_SOCK = os.path.join(STORAGE_PATH, 'deploy.sock')
DATA_PATH = lambda nid: os.path.join(STORAGE_PATH, 'data'+str(nid))
def main():
if int(os.environ['ID']) == 1: leader()
else: follower()
def leader():
shutil.rmtree(STORAGE_PATH, ignore_errors=True)
os.makedirs(STORAGE_PATH)
os.makedirs(MINIO_PATH, exist_ok=True)
print(STORAGE_PATH)
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind(UNIX_SOCK)
sock.listen()
n_serv = n_servers()
fl = [ co for co, addr in [ sock.accept() for i in range(n_serv - 1) ]]
identities = [ json.loads(co.makefile().readline()) for co in fl ] + [ { "ip": os.environ['IP'], "path": make_data() } ]
print(f"ident: {identities}")
msg = f"{json.dumps(identities)}\n".encode()
[ co.send(msg) for co in fl ]
run_minio(identities)
def follower():
co = None
while True:
time.sleep(1)
try:
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect(UNIX_SOCK)
co = sock.makefile()
break
except Exception as err:
print('conn failed, wait,', err)
my_identity = json.dumps({ "ip": os.environ['IP'], "path": make_data() })
sock.send(f"{my_identity}\n".encode())
identities = json.loads(co.readline())
run_minio(identities)
def make_data():
data_path = DATA_PATH(os.environ['ID'])
os.makedirs(data_path)
return data_path
def run_minio(identities):
cmd = f"minio server --console-address ':9001' --address [{os.environ['IP']}]:9000"
for ident in identities:
cmd += f" http://[{ident['ip']}]:9000{ident['path']}"
cmd += f" > {os.path.join(STORAGE_PATH, 'minio'+os.environ['ID']+'.log')} 2>&1"
print("launch: ", cmd)
os.system(cmd)
def n_servers():
with open('.current_state.yml', 'r') as f:
netw = yaml.safe_load(f)
n_servers = len(netw['servers'])
return n_servers
__name__ == '__main__' and main()

7
instrumented/minio-runner.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash
export ENDPOINT=[fc00:9a7a:9e::1]:9000
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
s3lat | tee 50ms.minio.csv

18
instrumented/runner.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/bash
socat "openssl-listen:4443,\
reuseaddr,\
fork,\
verify=0,\
cert=/tmp/garage.pem" tcp4-connect:localhost:3900 &
sleep 1
export SSL=1
export SSL_INSECURE=1
export REGION=garage
export ENDPOINT=localhost:4443
export AWS_ACCESS_KEY_ID=GK4ea45d2f25091883071e0b73
export AWS_SECRET_ACCESS_KEY=334f7b0ef233571c67b302c5197e6b8c7150da1907e4e530caa82e041d725ecf
/home/quentin/go/bin/bench-garage | tee 50ms.garage.csv

View file

@ -87,23 +87,19 @@ class Bandwidth:
class LinkInfo:
def __init__(self, bandwidth, latency, jitter = None, offset = None, limit = None, txqueuelen = None, **kwargs):
def __init__(self, bandwidth, latency, jitter = None, offset = None, **kwargs):
self.bandwidth = Bandwidth(bandwidth)
self.latency = Latency(latency, offset)
self.jitter = Latency(jitter or 0)
self.limit = limit
self.txqueuelen = txqueuelen
def __eq__(self, o):
return (isinstance(o, LinkInfo) and
o.bandwidth == self.bandwidth and
o.latency == self.latency and
o.jitter == self.jitter and
o.limit == self.limit and
o.txqueuelen == self.txqueuelen)
o.jitter == self.jitter)
def __str__(self):
return f'LinkInfo{{bw: {self.bandwidth}, latency: {self.latency}, jitter: {self.jitter}, limit: {self.limit}, txqueuelen: {self.txqueuelen}}}'
return f'LinkInfo{{bw: {self.bandwidth}, latency: {self.latency}, jitter: {self.jitter}}}'
class Server:
def __init__(self, name, link):
@ -317,7 +313,6 @@ def runall(cmd):
zones = parse(config).zones
number = 1
wait_list = [ ]
for zone in zones.values():
if zone.is_zone():
for server in zone.servers.values():
@ -326,9 +321,9 @@ def runall(cmd):
env["HOST"] = server.name
env["IP"] = str(server.ip)
env["ID"] = str(number)
env["SERVER_COUNT"] = str(len(config['servers']))
env["SIZE"] = str(len(config['servers']))
name = f'testnet-{zone.name}-{server.name}'
wait_list.append(net.ns.run(name, cmd, env))
net.ns.run(name, cmd, env)
number +=1
else:
env = os.environ.copy()
@ -336,14 +331,11 @@ def runall(cmd):
env["HOST"] = zone.name
env["IP"] = str(zone.ip)
env["ID"] = str(number)
env["SERVER_COUNT"] = str(len(config['servers']))
env["SIZE"] = str(len(config['servers']))
name = f'testnet-{zone.name}-{zone.name}'
wait_list.append(net.ns.run(name, cmd, env))
net.ns.run(name, cmd, env)
first = False
number +=1
for p in wait_list:
p.wait()
print("runall done")
def destroy():
for ns in net.ns.list():
@ -351,31 +343,21 @@ def destroy():
net.ns.forget("unconfined")
os.remove(".current_state.yml")
def scenario(config, cmd):
create(config)
runall(cmd)
destroy()
if __name__ == "__main__":
if len(sys.argv) < 2:
progname = os.path.basename(sys.argv[0]) if len(sys.argv) > 0 else "mknet"
print(f"""Usage:
{progname} scenario <config_path> <cmd> [args...] # all in one simulation: create a network, run the command on all nodes, destroy the network
{progname} create [config_path] # create a new network. config_path defailt to topo/with-vdsl.yml
{progname} run-all <cmd> [args...] # run a command as each host. set the IP, NAME and ZONE environment variables
{progname} run <name> [cmd [args...]] # run command in host named <name>. Use zonename:name if multiple zones hosts server with same name. If cmd is empty, run a shell
{progname} destroy # destroy the current environment""")
print("""Usage:
mk-testnet create [config_path] # create a new network. config_path defailt to config.yml
mk-testnet run-all <cmd> [args...] # run a command as each host. set the IP, NAME and ZONE environment variables
mk-testnet run <name> [cmd [args...]] # run command in host named <name>. Use zonename:name if multiple zones hosts server with same name. If cmd is empty, run a shell
mk-testnet destroy # destroy the current environment""")
exit()
cmd = sys.argv[1]
if cmd == "create":
create(sys.argv[2] if len(sys.argv) > 2 else "topo/with-vdsl.yml")
create(sys.argv[2] if len(sys.argv) > 2 else "config.yml")
elif cmd == "run":
run(sys.argv[2], sys.argv[3:])
elif cmd == "run-all":
runall(sys.argv[2:])
elif cmd == "scenario":
scenario(sys.argv[2], sys.argv[3:])
elif cmd == "destroy":
destroy()
else:

7
net.py
View file

@ -37,7 +37,7 @@ class ns:
run_netns("exec", name, "ip", "link", "set", "dev", "lo", "up")
def run(name, cmd, env=None):
return subprocess.Popen(_netns + ["exec", name] + cmd, env=env)
subprocess.Popen(_netns + ["exec", name] + cmd, env=env)
def create_bridge(name, namespace, ports=[]):
run_netns("exec", namespace, "ip", "link", "add", "name", name, "type", "bridge")
@ -56,9 +56,6 @@ def create_veth(name1, ns1, name2, ns2, ip = None, subnet=0, link=None):
run_netns("exec", ns2, "ip", "link", "set", "dev", name2, "up")
if link:
if link.txqueuelen:
run_netns("exec", ns1, "ip", "link", "set", "dev", name1, "txqueuelen", str(link.txqueuelen))
run_netns("exec", ns2, "ip", "link", "set", "dev", name2, "txqueuelen", str(link.txqueuelen))
tc(ns1, name1, link)
tc(ns2, name2, link, True)
@ -69,6 +66,4 @@ def tc(namespace, name, link, invert=False):
options += ["rate", str(link.bandwidth.down)]
else:
options += ["rate", str(link.bandwidth.up)]
if link.limit:
options += ["limit", str(link.limit)]
run_netns("exec", namespace, "tc", "qdisc", "add", "dev", name, "root", "netem", *options)

View file

@ -1,41 +0,0 @@
#!/usr/bin/env python3
from pathlib import Path
from scenarios.fragments import shared
import os, venv
me = Path(os.path.dirname(__file__))
print("--- git submodule ---")
shared.exec("git submodule update --init")
print("--- compile go benchmarks ---")
os.chdir(me / "benchmarks" / "warp")
shared.exec("go build")
os.chdir(me / "benchmarks" / "s3concurrent")
shared.exec("go build")
os.chdir(me / "benchmarks" / "s3lat")
shared.exec("go build")
os.chdir(me / "benchmarks" / "s3ttfb")
shared.exec("go build")
os.chdir(me / "benchmarks" / "s3billion")
shared.exec("go build")
os.chdir(me)
print("--- install python dependencies ---")
venv.create(".venv", with_pip=True)
shared.exec("""
. .venv/bin/activate
which python3
python3 -m pip install .
python3 -m pip install -r scenarios/requirements.txt
""")
print("--- download artifacts ---")
from scenarios.fragments import flavor
flavor.download()
print(f"""done! now, run:
> sudo -i
> cd {os.getcwd()}
> . ./.venv/bin/activate
> ./mknet scenario ./topo/with-vdsl.yml ./scenarios/garage-s3lat garage-v0.8
""")

View file

@ -1,11 +0,0 @@
#!/usr/bin/env python3
import os
from fragments import garage, shared, minio
garage.destroy()
minio.destroy()
if len(shared.storage_path) > 8 and shared.id() == 1:
shared.exec(f"rm -r {shared.storage_path}")
shared.log("clean done")

Binary file not shown.

View file

@ -1,73 +0,0 @@
from pathlib import Path
from . import shared
from os.path import exists
def grg_path(d):
for flav, desc in d.items():
if "path" in desc: continue
binary = f"garage-{desc['target']}-{desc['version']}"
desc['path'] = Path(shared.binary_path) / binary
return d
def minio_path(d):
for flav, desc in d.items():
if "path" in desc: continue
desc['path'] = Path(shared.binary_path) / flav
return d
garage = grg_path({
"garage-local": { "path": "./garage/target/release/garage" },
"garage-v0.7": {
"version": "v0.7.3",
"target": "x86_64-unknown-linux-musl",
},
# no rpc optimization
"garage-v0.8-beta1": {
"version": "89b8087ba81c508ba382aa6c9cb6bb3afa6a43c8",
"target": "x86_64-unknown-linux-musl"
},
# with rpc optimizations
# with fsync deactivated
"garage-v0.8-no-fsync": {
"version": "v0.8.0-dangerous-no-fsync",
"target": "x86_64-unknown-linux-musl"
},
# with rpc optimizations
"garage-v0.8-beta2": {
"version": "af2b2f26b4bd9fcdeedf2cd03f9e1392e5781abc",
"target": "x86_64-unknown-linux-musl",
}
})
warp = {
"warp-fast": "mixed --obj.size 5M --objects 200 --duration=5m",
"warp-small-obj": "mixed --obj.size 256 --objects 200 --duration=5m",
"warp-default": "mixed"
}
minio = minio_path({
"minio-20220917": {
"version": "2022-09-17T00-09-45Z"
}
})
def download():
for flav, desc in garage.items():
if "version" not in desc: continue
if exists(desc['path']): continue
shared.exec(f"mkdir -p {shared.binary_path}")
shared.exec(f"wget https://garagehq.deuxfleurs.fr/_releases/{desc['version']}/{desc['target']}/garage -O {desc['path']}")
shared.exec(f"chmod +x {desc['path']}")
shared.exec(f"{desc['path']} --version")
for flav, desc in minio.items():
if "version" not in desc: continue
if exists(desc['path']): continue
shared.exec(f"mkdir -p {shared.binary_path}")
shared.exec(f"wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.{desc['version']} -O {desc['path']}")
shared.exec(f"chmod +x {desc['path']}")
shared.exec(f"{desc['path']} --version")

View file

@ -1,229 +0,0 @@
import glob, json, time
from os.path import exists
from os import environ as env
from pathlib import Path
from . import shared, flavor
import garage_admin_sdk
from garage_admin_sdk.api import nodes_api, layout_api, key_api
from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo
from garage_admin_sdk.model.layout_version import LayoutVersion
from garage_admin_sdk.model.add_key_request import AddKeyRequest
from garage_admin_sdk.model.update_key_request import UpdateKeyRequest
from garage_admin_sdk.model.update_key_request_allow import UpdateKeyRequestAllow
storage_path = "./i/am/not/defined"
rpc_secret = "3e9abff5f9e480afbadb46a77b7a26fe0e404258f0dc3fd5386b0ba8e0ad2fba"
metrics = "cacce0b2de4bc2d9f5b5fdff551e01ac1496055aed248202d415398987e35f81"
admin = "ae8cb40ea7368bbdbb6430af11cca7da833d3458a5f52086f4e805a570fb5c2a"
key = None
version = flavor.garage["garage-v0.7"]
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0",
access_token = admin
)
api = garage_admin_sdk.ApiClient(configuration)
nodes = nodes_api.NodesApi(api)
layout = layout_api.LayoutApi(api)
keys = key_api.KeyApi(api)
# Setup, launch on import
if 'HOST' in env:
storage_path = Path(shared.storage_path) / "garage" / env['HOST']
if 'ZONE' in env and env['ZONE'] != "":
storage_path = Path(shared.storage_path) / "garage" / env['ZONE'] / env['HOST']
config = storage_path / "garage.toml"
env['GARAGE_CONFIG_FILE'] = str(config)
def deploy_coord(gw=None, uroot={}, us3_api={}, us3_web={}, uadmin={}):
destroy()
shared.log("start daemon")
shared.exec(f"{version['path']} --version")
daemon(uroot,us3_api,us3_web,uadmin)
shared.log("discover nodes")
connect()
shared.log("build layout")
create_layout(gw=gw)
shared.log("create key")
create_key()
shared.log("ready")
def deploy_follow(uroot={}, us3_api={}, us3_web={}, uadmin={}):
destroy()
shared.log("start daemon")
daemon(uroot,us3_api,us3_web,uadmin)
shared.log("wait for coord")
sync_on_key_up()
shared.log("ready")
def to_toml(d): return "\n".join([ f"{k} = {v}" if type(v) is int else f"{k} = \"{v}\"" for k, v in d.items() ])
def daemon(uroot={}, us3_api={}, us3_web={}, uadmin={}):
root = {
"metadata_dir": f"{storage_path}/meta",
"data_dir": f"{storage_path}/data",
"replication_mode": "3",
"rpc_bind_addr": "[::]:3901",
"rpc_public_addr": f"[{env['IP']}]:3901",
"rpc_secret": f"{rpc_secret}",
}
root.update(uroot)
s3_api = {
"s3_region": "garage",
"api_bind_addr": "[::]:3900",
"root_domain": ".s3.garage",
}
s3_api.update(us3_api)
s3_web = {
"bind_addr": "[::]:3902",
"root_domain": ".web.garage",
"index": "index.html",
}
s3_web.update(us3_web)
sect_admin = {
"api_bind_addr": "0.0.0.0:3903",
"metrics_token": f"{metrics}",
"admin_token": f"{admin}",
}
sect_admin.update(uadmin)
shared.exec(f"mkdir -p {storage_path}")
with open(config, 'w+') as f:
f.write(f"""
{to_toml(root)}
bootstrap_peers = []
[s3_api]
{to_toml(s3_api)}
[s3_web]
{to_toml(s3_web)}
[admin]
{to_toml(sect_admin)}
""")
if shared.id() == 1:
shared.exec(f"{version['path']} --version")
shared.exec(f"{version['path']} server 2>> {storage_path}/logs.stderr 1>> {storage_path}/logs.stdout & echo $! > {storage_path}/daemon.pid")
time.sleep(1)
node_info = storage_path / "node_info"
node_id = shared.fn_retry(lambda: nodes.get_nodes().node)
with open(node_info, 'w+') as f:
f.write(json.dumps({
"node_addr": f"{node_id}@{env['IP']}:3901",
"node_id": node_id,
"zone": env['ZONE'] if 'ZONE' in env and env['ZONE'] != "" else env['HOST'],
"host": env['HOST'],
}))
def destroy():
dpid = Path(storage_path) / "daemon.pid"
if exists(dpid):
try:
shared.exec(f"kill -9 $(cat {dpid})")
except:
pass
shared.exec(f"rm -f {dpid}")
if len(str(storage_path)) < 8: # arbitrary, stupid safe guard
print(storage_path)
raise Exception("You tried to clean a storage path that might be the root of your FS, panicking...")
shared.exec(f"rm -fr {storage_path}")
# this function is ugly, sorry :s
_cluster_info = None
def cluster_info():
global _cluster_info
if _cluster_info is not None: return _cluster_info
shared.log("fetch cluster info")
while True:
node_files = glob.glob(f"{shared.storage_path}/**/node_info", recursive=True)
if len(node_files) >= shared.count(): break
shared.log(f"found {len(node_files)} over {shared.count()}, wait 1 sec.")
time.sleep(1)
_cluster_info = [ json.loads(Path(f).read_text()) for f in node_files ]
return _cluster_info
def connect():
cinf = cluster_info()
shared.log("start connections...")
while True:
try:
ret = nodes.add_node([n['node_addr'] for n in cinf], _request_timeout=3)
except:
shared.log("not ready, retry in 1sec")
time.sleep(1)
continue
for st in ret:
if not st.success:
continue
#raise Exception("Node connect failed", ret)
break
shared.log("all nodes connected")
def create_layout(gw=None):
if gw is None:
gw = []
v = layout.get_layout().version
cinf = cluster_info()
nlay = dict()
for n in cinf:
capa = 1
if n['host'] in gw:
capa = None
nlay[n['node_id']] = NodeClusterInfo(
zone = n['zone'],
capacity = capa,
tags = [ n['host'] ],
)
layout.add_layout(nlay)
layout.apply_layout(LayoutVersion(version=v+1))
shared.log(layout.get_layout())
def create_key():
global key
kinfo = shared.fn_retry(lambda: keys.add_key(AddKeyRequest(name="mknet")))
allow_create = UpdateKeyRequestAllow(create_bucket=True)
keys.update_key(kinfo.access_key_id, UpdateKeyRequest(allow=allow_create))
key = kinfo
def delete_key():
global key
keys.delete_key(key.access_key_id)
key = None
def sync_on_key_up():
global key
while True:
try:
key = keys.search_key("mknet")
return key
except:
pass
time.sleep(1)
def sync_on_key_down():
while True:
try:
keys.search_key("mknet")
except:
return
time.sleep(1)

View file

@ -1,140 +0,0 @@
#!/usr/bin/env python3
import json, os, sys, time, pathlib, socket, shutil, urllib3
import minio
from os import environ as env
from pathlib import Path
from . import shared, flavor
storage_path = "./i/am/not/defined"
version = flavor.minio["minio-20220917"]
unix_sock = str(Path(shared.storage_path) / "minio.sock")
access_key = "minioadmin"
secret_key = "minioadmin"
client = minio.Minio(
f"[{env['IP']}]:9000",
access_key="minioadmin",
secret_key="minioadmin",
secure=False,
http_client=urllib3.PoolManager(
timeout=2,
retries=False,
)
)
if 'HOST' in env:
storage_path = str(Path(shared.storage_path) / "minio" / env['HOST'])
if 'ZONE' in env and env['ZONE'] != "":
storage_path = str(Path(shared.storage_path) / "minio" / env['ZONE'] / env['HOST'])
stdout = Path(storage_path) / "minio.stdout"
stderr = Path(storage_path) / "minio.stderr"
pid = Path(storage_path) / "daemon.pid"
def destroy():
if os.path.exists(pid):
try:
shared.exec(f"kill -9 `cat {pid}`")
except:
pass
if len(str(storage_path)) > 8:
shutil.rmtree(storage_path, ignore_errors=True)
def deploy_coord():
destroy()
if os.path.exists(unix_sock):
os.unlink(unix_sock)
os.makedirs(storage_path)
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind(unix_sock)
sock.listen()
# Create sockets
fl = [ co for co, addr in [ sock.accept() for i in range(1, shared.count()) ]]
# Receive configurations, centralize them
me = [ { "ip": os.environ['IP'], "path": storage_path } ]
others = [ json.loads(co.makefile().readline()) for co in fl ]
identities = others + me
shared.log(f"ident: {identities}")
# Dispatch them
msg = f"{json.dumps(identities)}\n".encode()
[ co.send(msg) for co in fl ]
run_minio(identities)
while True:
try:
if client.bucket_exists("sync"): break
client.make_bucket("sync")
break
except Exception as e:
shared.log("waiting for bootstrap...", e)
time.sleep(1)
shared.log("ready")
def deploy_follow():
destroy()
os.makedirs(storage_path)
co = None
while True:
try:
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect(unix_sock)
co = sock.makefile()
break
except Exception as err:
shared.log('conn failed, wait 1 sec, err is', err)
time.sleep(1)
# send my identity
my_identity = json.dumps({ "ip": os.environ['IP'], "path": storage_path })
sock.send(f"{my_identity}\n".encode())
# get all
identities = json.loads(co.readline())
run_minio(identities)
sync_on_bucket_up()
shared.log("ready")
def sync_on_bucket_up():
while True:
try:
if client.bucket_exists("sync"): break
except:
pass
shared.log("waiting for bucket 'sync'...")
time.sleep(1)
def sync_on_bucket_down():
while True:
try:
if not client.bucket_exists("sync"): break
time.sleep(1)
except Exception as e:
shared.log("the cluster is probably already half shutdown, so errors are expected ->", e)
break
def delete_sync_bucket():
client.remove_bucket("sync")
def run_minio(identities):
# Required to prevent Minio error: "/tmp/mknet-store/minio/node1` is part of root drive, will not be used"
# https://github.com/minio/minio/issues/15720
env['CI'] = "true"
env['MINIO_CI_CD'] = "true"
cmd = f"{version['path']} server --console-address ':9001' --address ':9000'"
for ident in identities:
cmd += f" http://[{ident['ip']}]:9000{ident['path']}"
cmd += f" > {stdout} 2> {stderr}"
cmd += f" & echo $! > {pid}"
shared.log("launch: ", cmd)
os.system(cmd)

View file

@ -1,24 +0,0 @@
import os
from os.path import exists
from pathlib import Path
from fragments import shared, minio, garage
s3bin = Path(os.path.dirname(__file__)) / "../../benchmarks/s3billion/s3billion"
def common():
out = Path(shared.storage_path) / "s3billion.csv"
shared.log(f"launching s3billion ({s3bin})")
shared.exec(f"{s3bin} > {out}")
shared.log(f"execution done, output written to {out}")
def on_garage():
os.environ['AWS_ACCESS_KEY_ID'] = garage.key.access_key_id
os.environ['AWS_SECRET_ACCESS_KEY'] = garage.key.secret_access_key
os.environ['ENDPOINT'] = f"[{os.environ['IP']}]:3900"
common()
def on_minio():
os.environ['AWS_ACCESS_KEY_ID'] = minio.access_key
os.environ['AWS_SECRET_ACCESS_KEY'] = minio.secret_key
os.environ['ENDPOINT'] = f"[{os.environ['IP']}]:9000"
common()

View file

@ -1,16 +0,0 @@
import os
from os.path import exists
from pathlib import Path
from fragments import shared, garage
s3bin = Path(os.path.dirname(__file__)) / "../../benchmarks/s3concurrent/s3concurrent"
def on_garage():
os.environ['AWS_ACCESS_KEY_ID'] = garage.key.access_key_id
os.environ['AWS_SECRET_ACCESS_KEY'] = garage.key.secret_access_key
os.environ['ENDPOINT'] = "localhost:3900"
out = Path(shared.storage_path) / "s3concurrent.csv"
shared.log(f"launching s3concurrent ({s3bin})")
shared.exec(f"{s3bin} > {out}")
shared.log(f"execution done, output written to {out}")

View file

@ -1,24 +0,0 @@
import os
from os.path import exists
from pathlib import Path
from fragments import shared, minio, garage
s3bin = Path(os.path.dirname(__file__)) / "../../benchmarks/s3lat/s3lat"
def common():
out = Path(shared.storage_path) / "s3lat.csv"
shared.log(f"launching s3lat ({s3bin})")
shared.exec(f"{s3bin} > {out}")
shared.log(f"execution done, output written to {out}")
def on_garage():
os.environ['AWS_ACCESS_KEY_ID'] = garage.key.access_key_id
os.environ['AWS_SECRET_ACCESS_KEY'] = garage.key.secret_access_key
os.environ['ENDPOINT'] = "localhost:3900"
common()
def on_minio():
os.environ['AWS_ACCESS_KEY_ID'] = minio.access_key
os.environ['AWS_SECRET_ACCESS_KEY'] = minio.secret_key
os.environ['ENDPOINT'] = "localhost:9000"
common()

View file

@ -1,26 +0,0 @@
import os
from os.path import exists
from pathlib import Path
from fragments import shared, minio, garage
s3bin = Path(os.path.dirname(__file__)) / "../../benchmarks/s3ttfb/s3ttfb"
def common():
out = Path(shared.storage_path) / "s3ttfb.csv"
shared.log(f"launching s3ttfb ({s3bin})")
shared.exec(f"{s3bin} > {out}")
shared.log(f"execution done, output written to {out}")
def on_garage():
os.environ['AWS_ACCESS_KEY_ID'] = garage.key.access_key_id
os.environ['AWS_SECRET_ACCESS_KEY'] = garage.key.secret_access_key
os.environ['ENDPOINT'] = "localhost:3900"
os.environ['AWS_REGION'] = "garage"
common()
def on_minio():
os.environ['AWS_ACCESS_KEY_ID'] = minio.access_key
os.environ['AWS_SECRET_ACCESS_KEY'] = minio.secret_key
os.environ['ENDPOINT'] = "localhost:9000"
os.environ['AWS_REGION'] = "us-east-1"
common()

View file

@ -1,28 +0,0 @@
import os, time
binary_path = "/tmp/mknet-bin"
storage_path = "/tmp/mknet-store"
def exec(s):
if os.system(s) != 0:
raise Exception("Command terminated with an error")
def exec_retry(s, cnt=16):
print(s)
for i in range(cnt):
time.sleep(i) # this is expected to sleep before running the command to reduce the noise
if os.system(s) == 0: return
raise Exception("Command terminated with an error too many times")
def fn_retry(f, cnt=5):
for i in range(cnt):
try:
r = f()
return r
except Exception as e:
if i+1 == cnt: raise e
log(f"failed call, retry in {i} sec")
time.sleep(i)
def id(): return int(os.environ['ID'])
def count(): return int(os.environ['SERVER_COUNT'])
def log(*args): print(f"[{id()}/{count()} - {os.environ['HOST']}]", *args)

View file

@ -1,17 +0,0 @@
import os
from os.path import exists
from pathlib import Path
from fragments import shared, garage, flavor, minio
warp_bin = Path(os.path.dirname(__file__)) / "../../benchmarks/warp/warp"
bench = flavor.warp["warp-fast"]
def common(port, ak, sk):
out = Path(shared.storage_path) / "warp.csv"
shared.log(f"launching warp {warp_bin}")
shared.exec(f"{warp_bin} {bench} --host=[{os.environ['IP']}]:{port} --analyze.out={out} --access-key={ak} --secret-key={sk}")
shared.log(f"execution done")
def on_garage(): common(3900, garage.key.access_key_id, garage.key.secret_access_key)
def on_minio(): common(9000, minio.access_key, minio.secret_key)

View file

@ -1,7 +0,0 @@
#!/usr/bin/env python3
from fragments import garage, s3lat, shared
if shared.id() == 1:
garage.deploy_coord()
else:
garage.deploy_follow()

View file

@ -1,24 +0,0 @@
#!/usr/bin/env python3
from fragments import garage, s3billion, shared, flavor
import sys, os
for fl in sys.argv[1:]:
if fl in flavor.garage:
garage.version = flavor.garage[fl]
#os.environ['BATCH_COUNT'] = "2"
shared.exec("ulimit -n 65535")
conf_root = {
"db_engine": "lmdb",
}
if shared.id() == 1:
garage.deploy_coord(uroot=conf_root)
s3billion.on_garage()
garage.delete_key()
garage.destroy()
else:
garage.deploy_follow(uroot=conf_root)
garage.sync_on_key_down()
garage.destroy()
shared.log("bye")

View file

@ -1,18 +0,0 @@
#!/usr/bin/env python3
from fragments import garage, s3concurrent, shared, flavor
import sys
for fl in sys.argv[1:]:
if fl in flavor.garage:
garage.version = flavor.garage[fl]
if shared.id() == 1:
garage.deploy_coord()
s3concurrent.on_garage()
garage.delete_key()
garage.destroy()
else:
garage.deploy_follow()
garage.sync_on_key_down()
garage.destroy()
shared.log("bye")

View file

@ -1,18 +0,0 @@
#!/usr/bin/env python3
from fragments import garage, s3lat, shared, flavor
import sys
for fl in sys.argv[1:]:
if fl in flavor.garage:
garage.version = flavor.garage[fl]
if shared.id() == 1:
garage.deploy_coord()
s3lat.on_garage()
garage.delete_key()
garage.destroy()
else:
garage.deploy_follow()
garage.sync_on_key_down()
garage.destroy()
shared.log("bye")

View file

@ -1,18 +0,0 @@
#!/usr/bin/env python3
from fragments import garage, s3ttfb, shared, flavor
import sys
for fl in sys.argv[1:]:
if fl in flavor.garage:
garage.version = flavor.garage[fl]
if shared.id() == 1:
garage.deploy_coord(gw = [ 'node1' ])
s3ttfb.on_garage()
garage.delete_key()
garage.destroy()
else:
garage.deploy_follow()
garage.sync_on_key_down()
garage.destroy()
shared.log("bye")

View file

@ -1,26 +0,0 @@
#!/usr/bin/env python3
from fragments import garage, warp, shared, flavor
import sys
db_engines = [ 'sled', 'lmdb', 'sqlite' ]
conf_root = {}
for fl in sys.argv[1:]:
if fl in flavor.garage:
garage.version = flavor.garage[fl]
elif fl in flavor.warp:
warp.bench = flavor.warp[fl]
elif fl in db_engines:
conf_root['db_engine'] = fl
elif 'sled_no_fsync' == fl:
conf_root['sled_flush_every_ms'] = 1000 * 60 * 10 # 10 minutes
if shared.id() == 1:
garage.deploy_coord(uroot=conf_root)
warp.on_garage()
garage.delete_key()
garage.destroy()
else:
garage.deploy_follow(uroot=conf_root)
garage.sync_on_key_down()
garage.destroy()
shared.log("bye")

View file

@ -1,12 +0,0 @@
#!/usr/bin/env python3
from fragments import shared, flavor, minio
import sys
for fl in sys.argv[1:]:
if fl in flavor.minio:
minio.version = flavor.minio[fl]
if shared.id() == 1:
minio.deploy_coord()
else:
minio.deploy_follow()

View file

@ -1,22 +0,0 @@
#!/usr/bin/env python3
from fragments import minio, s3billion, shared, flavor
import sys, os
for fl in sys.argv[1:]:
if fl in flavor.minio:
minio.version = flavor.minio[fl]
#os.environ['BATCH_COUNT'] = "2"
shared.exec("ulimit -n 65535")
if shared.id() == 1:
minio.deploy_coord()
s3billion.on_minio()
minio.delete_sync_bucket()
minio.destroy()
else:
minio.deploy_follow()
minio.sync_on_bucket_down()
minio.destroy()
shared.log("bye")

View file

@ -1,19 +0,0 @@
#!/usr/bin/env python3
from fragments import minio, s3lat, shared, flavor
import sys
for fl in sys.argv[1:]:
if fl in flavor.minio:
minio.version = flavor.minio[fl]
if shared.id() == 1:
minio.deploy_coord()
s3lat.on_minio()
minio.delete_sync_bucket()
minio.destroy()
else:
minio.deploy_follow()
minio.sync_on_bucket_down()
minio.destroy()
shared.log("bye")

View file

@ -1,19 +0,0 @@
#!/usr/bin/env python3
from fragments import minio, s3ttfb, shared, flavor
import sys
for fl in sys.argv[1:]:
if fl in flavor.minio:
minio.version = flavor.minio[fl]
if shared.id() == 1:
minio.deploy_coord()
s3ttfb.on_minio()
minio.delete_sync_bucket()
minio.destroy()
else:
minio.deploy_follow()
minio.sync_on_bucket_down()
minio.destroy()
shared.log("bye")

View file

@ -1,20 +0,0 @@
#!/usr/bin/env python3
from fragments import minio, warp, shared, flavor
import sys
for fl in sys.argv[1:]:
if fl in flavor.minio:
minio.version = flavor.minio[fl]
if fl in flavor.warp:
warp.bench = flavor.warp[fl]
if shared.id() == 1:
minio.deploy_coord()
warp.on_minio()
minio.delete_sync_bucket()
minio.destroy()
else:
minio.deploy_follow()
minio.sync_on_bucket_down()
minio.destroy()
shared.log("bye")

View file

@ -1,2 +0,0 @@
git+https://git.deuxfleurs.fr/quentin/garage-admin-sdk@2b685b90be9aa848a9450dd582d1d322b25b5568#egg=garage-admin-sdk&subdirectory=python
minio

View file

@ -1,10 +0,0 @@
from distutils.core import setup
setup(name='mknet',
version='1.0',
scripts=['mknet'],
py_modules=['net'],
install_requires=[
'PyYAML',
'requests'
],
)

View file

@ -1,12 +0,0 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = [
pkgs.python310
pkgs.python310Packages.pyyaml
pkgs.python310Packages.requests
# to test the pip setup
pkgs.python310Packages.pip
pkgs.python310Packages.setuptools
];
}

View file

@ -31,4 +31,3 @@ global:
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *fiber

View file

@ -1,25 +0,0 @@
links:
- &slow
bandwidth: 100M
latency: 500us
- &1000
bandwidth: 1000M
latency: 100us
servers:
- name: node1
<<: *slow
- name: node2
<<: *slow
- name: node3
<<: *slow
global:
subnet:
base: 'fc00:9a7a:9e::'
local: 64
zone: 16
latency-offset: 3ms
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *1000

View file

@ -1,25 +0,0 @@
links:
- &slow
bandwidth: 10M
latency: 500us
- &1000
bandwidth: 1000M
latency: 100us
servers:
- name: node1
<<: *slow
- name: node2
<<: *slow
- name: node3
<<: *slow
global:
subnet:
base: 'fc00:9a7a:9e::'
local: 64
zone: 16
latency-offset: 3ms
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *1000

View file

@ -1,27 +0,0 @@
links:
- &slow
bandwidth: 1M
latency: 500us
#txqueuelen: 10
limit: 10
- &1000
bandwidth: 1000M
latency: 100us
servers:
- name: node1
<<: *slow
- name: node2
<<: *slow
- name: node3
<<: *slow
global:
subnet:
base: 'fc00:9a7a:9e::'
local: 64
zone: 16
latency-offset: 3ms
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *1000

View file

@ -1,25 +0,0 @@
links:
- &slow
bandwidth: 50M
latency: 500us
- &1000
bandwidth: 1000M
latency: 100us
servers:
- name: node1
<<: *slow
- name: node2
<<: *slow
- name: node3
<<: *slow
global:
subnet:
base: 'fc00:9a7a:9e::'
local: 64
zone: 16
latency-offset: 3ms
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *1000

View file

@ -1,28 +0,0 @@
links:
- &slow
bandwidth: 5M
latency: 500us
limit: 5
- &1000
bandwidth: 1000M
latency: 100us
servers:
- name: node1
<<: *slow
- name: node2
<<: *slow
- name: node3
<<: *slow
- name: node4
<<: *slow
global:
subnet:
base: 'fc00:9a7a:9e::'
local: 64
zone: 16
latency-offset: 3ms
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *1000

Some files were not shown because too many files have changed in this diff Show more