Verwijderd schreef op zaterdag 16 mei 2015 @ 13:05:
SATA/600 heeft ook een klein beetje zin voor hardeschijven. Om dezelfde reden dat het ook zin heeft voor SSDs die 20MB/s aan random I/O doen. Dan heeft SATA/600 versus SATA/300 ook een voordeel. Het is dus niet zo dat je eerst over de 250-300MB/s moet komen om pas voordeel van SATA/600 te hebben.
De oorzaak ligt hem in de
propagation delay - dat is de vertraging van de interface. Om 100MB/s over een 6Gbps verbinding te versturen kost 1/6e seconde; dat is dubbel zo snel als 100MB/s over een 3Gbps verbinding. De latency van de interface zelf halveert dus.
...
Performance druk je dus het beste uit in latency omdat dit het gene is dat er echt toe doet. Alle andere getallen zijn er zodat wij mensen dit gemakkelijker kunnen begrijpen. Maar uiteindelijk is latency dé manier om I/O performance in uit te drukken. En de latency van de kabel - interface propagation delay - is onderdeel van de totale latency, normaliter maar een klein en insignificant deel.
@Cipher, je conclusie in de laatste zin mbt tot kabel onderschrijf ik, de intro niet.
Uiteindelijk nuanceer of zelfs corrigeer je jezelf aangaande de propagation delay. Dat is grofweg 5 ns per meter (in koper). Dit is onafhankelijk van de bitrate. Wat je denk ik bedoeld is de transmissie tijd, dat de frame grootte / bitrate. Die halveert wel. Propagation delay samen met transmissie tijd = de latency van de link. Dus zoals je zelf al schrijft de propagation delay is (in een sata kabel) niet echt een grote factor.
@alle lezers,
Ja, zelfs een mechanische disk heeft voordelen bij een snelle interface. De command latency zal lager zijn wat altijd goed is. Alleen met ZFS is mijn ervaring dat het nauwelijks uitmaakt. Wanneer heeft een lagere latency zin? Als je niets op de roterende media hoeft te doen. Dus zolang het in de write buffer past en in de read cache zit heeft het zin. In dat laatste geval wint de ARC bijna altijd. Ik heb daar wel eens aan gemeten. "Hoe vaak was na een ARC miss er wel een disk cache hit?" Zelden (bij die workload) De ARC is heel slim en veel groter dan je disk cache. Zodra er een cache miss is en je moet lezen vanaf de media maakt de interface latency weinig meer uit. En als je gaat schrijven is de txg (bijna altijd) zo groot dat het niet in write buffer van de disk past en dat je weer moet wachten tot het echt is weggeschreven. Ook heb ik wel eens de link speed terug gezet naar 3GB/sec. En wat benchmarks gedaan en zag een minimale performance degradatie. Ik zal dit experiment weer eens op zetten. Uiteindelijk heeft het allemaal nauwelijks zin om je hier druk over te maken bij gigabit ethernet. Dat is al heel snel de bottleneck.
Wat ook terecht in het topic werd opgemerkt is dat bij SATA en SAS revisies het niet alleen een snelheids verhoging betreft maar dat er ook nieuwe features aan worden toegevoegd die nuttig zijn.
Latency is
niet dé manier om I/O performance in uit te drukken. Het is een (belangrijke) metric. Sommige toepasssingen zijn gevoeliger voor latency dan andere. Alleen als je alles in beschouwing neemt (applicatie, protocols, os, drivers en hardware) kan je echt goed analyzeren waar de problemen zich bevinden. Stukjes bekijken heeft vaak weinig zin.
Wel is het zo dat latency, en vooral de sd, ondergewaarde metrics zijn. Helaas is het vaak moeilijk om goede metingen te doen. En daar komt ie dan ... tromgeroffel ...
DTRACE
Zit ook in FreeBSD en OSX en zelfs tegenwoordig voor Linux als loadable module beschikbaar(ivm de licence net als ZFS)
Dit is (bijna) de enige en laatste performance tool die je nodig hebt. Je kan hiermee alles (drivers, kernel, applicaties en protocollen) analyseren, meten en debuggen in een live systeem met minimale impact. Ja het is allemaal niet eenvoudig maar voor het recht toe recht aan meet werk zijn er tientallen scripts en oneliners zo te downloaden. DTrace kan je, in een live systeem, de latency geven van iedere call. Ja dat lees je goed: iedere functie kan je tracen. (Nu ga je pas echt gebruik maken van het feit dat je oss gebruikt) Vaak kies je handige punten, bijvoorbeeld rw's op de VFS layer.
Op een paar standaard micro benchmarks/testsuites na doe ik de bulk van mijn onderzoek met DTrace. Ik hoef niets te installeren, ik verstoor niets en heb kan alles bekijken wat ik wil. DTrace was echt een "game changer" en een "live saver" voor mij. Ik snap dat dit soort tools te veel van het goede zijn voor sommige hier maar aan de andere kant vind ik ook dat we wel constant op zoek moeten zijn naar nieuwe en vooral slimmere dingen. DTrace is zoiets, ook al is het zeker niet nieuw het is wel ongelofelijk slim.
Hieronder voor de liefhebber een shitload een nuttig data uit een enkel standaard dtrace script.
Ziet iemand iets vreemds in de output?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
| dtrace: script 'diskstacklatency.d' matched 27 probes
^C
CPU ID FUNCTION:NAME
6 2 :END
fop_read (per process)
init ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@@ 1
2048 |@@@@@@@@@@@@@@@ 6
4096 |@@@ 1
8192 |@@@ 1
16384 |@@@@@@@@ 3
32768 |@@@ 1
65536 | 0
131072 |@@@ 1
262144 |@@@@@ 2
524288 | 0
nfsmapid ns
value ------------- Distribution ------------- count
1024 | 0
2048 |@@@@@@@@@ 3
4096 |@@@@@@@@@@@ 4
8192 | 0
16384 |@@@ 1
32768 |@@@@@@ 2
65536 | 0
131072 | 0
262144 |@@@@@@@@@@@ 4
524288 | 0
nscd ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@ 1
2048 |@@@@@@@@@@@@@@ 7
4096 | 0
8192 |@@ 1
16384 |@@@@@@@@@@@@ 6
32768 |@@ 1
65536 | 0
131072 | 0
262144 |@@@@@@@@ 4
524288 | 0
utmpd ns
value ------------- Distribution ------------- count
2048 | 0
4096 |@@@@@@ 3
8192 | 0
16384 |@@@@@@@@ 4
32768 |@@@@ 2
65536 | 0
131072 |@@ 1
262144 |@@@@@@@@@@@@@@@@@@@@ 10
524288 | 0
python2.7 ns
value ------------- Distribution ------------- count
512 | 0
1024 | 10
2048 |@ 16
4096 |@@@@@@ 135
8192 |@@@@@@@@@@@@@@@ 315
16384 |@@@@@@@@@@@@@ 274
32768 | 7
65536 | 1
131072 |@@ 38
262144 |@ 17
524288 | 4
1048576 | 5
2097152 | 0
4194304 | 1
8388608 | 3
16777216 | 6
33554432 | 1
67108864 | 2
134217728 | 1
268435456 | 0
fop_write (per process)
dhcpagent ns
value ------------- Distribution ------------- count
131072 | 0
262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
524288 | 0
python2.7 ns
value ------------- Distribution ------------- count
4096 | 0
8192 |@ 9
16384 |@@@@@ 37
32768 |@@@@@@@@@ 70
65536 |@@@@@@@ 51
131072 |@@@ 22
262144 |@@@@@@@@@@@@@@@ 114
524288 |@ 5
1048576 | 0
zfs_write (per process)
dhcpagent ns
value ------------- Distribution ------------- count
131072 | 0
262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
524288 | 0
python2.7 ns
value ------------- Distribution ------------- count
4096 | 0
8192 |@@ 14
16384 |@@@@@@ 47
32768 |@@@@@@@@@@ 75
65536 |@@@@ 32
131072 |@@@ 21
262144 |@@@@@@@@@@@@@@@ 115
524288 |@ 4
1048576 | 0
zio_wait (per process)
dhcpagent ns
value ------------- Distribution ------------- count
1024 | 0
2048 |@@@@@@@@@@@@@ 1
4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
8192 | 0
init ns
value ------------- Distribution ------------- count
1024 | 0
2048 |@@@@@ 1
4096 |@@@@@@@@@@@@@@@@@@@@@@@@@ 5
8192 |@@@@@@@@@@ 2
16384 | 0
nfsmapid ns
value ------------- Distribution ------------- count
2048 | 0
4096 |@@@@@@@@@@@ 2
8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5
16384 | 0
nscd ns
value ------------- Distribution ------------- count
1024 | 0
2048 |@@@@@@@ 2
4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8
8192 |@@@@@@@ 2
16384 | 0
zpool-rpool ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@@@@ 3
2048 |@@@@@@@@@@@@@@@@@@@@@@@ 15
4096 |@@@@@@@@ 5
8192 |@@@@@ 3
16384 | 0
utmpd ns
value ------------- Distribution ------------- count
1024 | 0
2048 |@@ 1
4096 |@@@@@@@@@@@@@@@@@@@ 8
8192 |@@@@@@@@@@@@@@@@@@@ 8
16384 | 0
zpool-mpool ns
value ------------- Distribution ------------- count
1024 | 0
2048 |@@@@@@@ 134
4096 |@@@@@@@@@@@@@@@@@@@@@@@ 428
8192 |@@@@@@@@@@ 190
16384 | 0
32768 | 2
65536 | 0
131072 | 1
262144 | 0
python2.7 ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@@@ 129
2048 |@@@@@@@@@@@@ 412
4096 |@@@@@@@@@@@@@@@@@@@@@ 744
8192 |@@@ 99
16384 | 0
32768 | 0
65536 | 0
131072 | 3
262144 | 5
524288 | 9
1048576 | 2
2097152 | 0
4194304 | 1
8388608 | 4
16777216 | 8
33554432 | 1
67108864 | 3
134217728 | 1
268435456 | 0
sched ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@@@@@ 342
2048 |@@@@@@@@@@@@@@@@@@@@@@@@ 1299
4096 |@@@@ 215
8192 |@ 28
16384 | 0
32768 | 0
65536 | 0
131072 | 0
262144 | 4
524288 |@ 36
1048576 |@ 52
2097152 |@@ 128
4194304 | 26
8388608 | 7
16777216 | 1
33554432 | 5
67108864 |@ 28
134217728 |@ 32
268435456 | 0
zio_vdev_io_done (per process)
python2.7 ns
value ------------- Distribution ------------- count
256 | 0
512 |@ 2
1024 |@@@@@ 13
2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 66
4096 |@@@@@@@ 16
8192 | 1
16384 | 0
zpool-rpool ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@@@@@@@@@@@@ 86
2048 |@@@@@@@@@@@@@@@ 97
4096 |@@@ 19
8192 |@@@ 17
16384 |@@@ 16
32768 |@@@ 19
65536 | 1
131072 | 0
zpool-mpool ns
value ------------- Distribution ------------- count
256 | 0
512 | 58
1024 |@@@@@@@@@@ 8106
2048 |@@@@@@@@@@@@@@@@@ 13541
4096 |@@@ 2343
8192 |@@ 1530
16384 |@@@@ 3039
32768 |@@@ 2730
65536 | 305
131072 | 95
262144 | 111
524288 | 5
1048576 | 0
Disk io read's sd8 (193,512), us:
value ------------- Distribution ------------- count
64 | 0
128 |@@@@@ 1
256 | 0
512 | 0
1024 | 0
2048 | 0
4096 | 0
8192 |@@@@@@@@@@ 2
16384 |@@@@@@@@@@@@@@@@@@@@ 4
32768 |@@@@@ 1
65536 | 0
sd6 (193,384), us:
value ------------- Distribution ------------- count
64 | 0
128 |@@@@@@ 1
256 | 0
512 | 0
1024 | 0
2048 | 0
4096 |@@@@@@ 1
8192 |@@@@@@ 1
16384 |@@@@@@ 1
32768 |@@@@@@@@@@@ 2
65536 |@@@@@@ 1
131072 | 0
sd7 (193,448), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@ 1
128 |@@@@@@@@ 2
256 | 0
512 | 0
1024 | 0
2048 | 0
4096 | 0
8192 |@@@@ 1
16384 |@@@@@@@@@@@@ 3
32768 |@@@@ 1
65536 |@@@@@@@@ 2
131072 | 0
sd4 (193,256), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@@ 3
128 |@@@@@@@@@@@@@@@ 9
256 |@@@@@@@ 4
512 | 0
1024 | 0
2048 | 0
4096 | 0
8192 |@@@ 2
16384 |@@@@@@@ 4
32768 |@@ 1
65536 | 0
131072 |@@ 1
262144 | 0
Disk io read averages
sd4 (193,256), us:14621
sd8 (193,512), us:19009
sd7 (193,448), us:29314
sd6 (193,384), us:29844
Disk io write's sd3 (193,192), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@@@@@@@@@@ 22
128 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 43
256 | 0
512 | 0
1024 |@ 2
2048 | 0
sd4 (193,256), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@@@@@@@@@@@@@@@@@@ 1108
128 |@@@@@@@@@@@@@@@@ 828
256 |@@@ 162
512 |@ 29
1024 | 1
2048 | 1
4096 | 1
8192 | 1
16384 | 0
sd6 (193,384), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@@@@@@@@@@@@@@@@@@@ 1187
128 |@@@@@@@@@@@@@@ 763
256 |@@@ 157
512 | 26
1024 | 3
2048 | 1
4096 | 1
8192 | 0
16384 | 1
32768 | 0
sd8 (193,512), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@@@@@@@@@@@@@@@@@@ 1183
128 |@@@@@@@@@@@@@@@@ 893
256 |@@@ 177
512 | 28
1024 | 9
2048 | 2
4096 | 1
8192 | 2
16384 | 0
sd7 (193,448), us:
value ------------- Distribution ------------- count
32 | 0
64 |@@@@@@@@@@@@@@@@@@@@@@@ 1305
128 |@@@@@@@@@@@@@@ 800
256 |@@@ 172
512 | 24
1024 | 10
2048 | 1
4096 | 2
8192 | 1
16384 | 0
32768 | 4
65536 | 0
Disk io write averages
sd6 (193,384), us:160
sd4 (193,256), us:161
sd8 (193,512), us:169
sd3 (193,192), us:181
sd7 (193,448), us:224
mptsas_scsi_start(per process)
python2.7 ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@ 2
2048 |@@@ 4
4096 |@@@@@@@@@@@@@@@@@@@@@@@@ 30
8192 |@@@@@@@@@@@ 13
16384 | 0
sched ns
value ------------- Distribution ------------- count
512 | 0
1024 |@@@@@@@@ 50
2048 |@@@@@@@@@@@@@@@@@@@@@ 125
4096 |@@@@@@@@@@@ 65
8192 | 0
zpool-mpool ns
value ------------- Distribution ------------- count
512 | 0
1024 |@ 191
2048 |@@@@@@@@@@@@@@ 3079
4096 |@@@@@@@@@@@@@@@@@@@ 4320
8192 |@@@@@ 1219
16384 | 26
32768 | 32
65536 | 6
131072 | 7
262144 | 3
524288 | 1
1048576 | 0 |