А ради интереса решил замерить максимальную пропускную способность при линейном чтении.
Имею:
2*Xeon 5420
X7DBE
RAID-controller Intel SRCSASRB LSI 1078 (fm 1.12.132-0420)
RAID-5 4*73ГБ
Stripe size 64K
Read Policy Always Ahead (сперва так было)
Disk Cache - Unchanged
IOMeter: Block size 64K, 100% Read 0% random поверхность диска используется вся (правда я долго не держал тесты 1-3 мин)
Сначала замерил скорость чтения в одном потоке (один Worker, Outstanding=1): Read 330 Mb/s (5300 IOps)
2 Workers: 535 Mb/s (8550 IOps) !!!
А дальше самое интересное:
3 Workers: 150 Mb/s (2400 IOps) ???? Какой-то провал ??????
4 Workers: 200 Mb/s (3200 IOps)
...
8 Workers: 375Mb/s (6000 IOps)
Затем добавил количество одновременных запросов и например:
8 Workers, по 8 Outstand: 550 Mb/s (8800 IOps)
Сменил размер трансфер блока на 32K ситуация повторилась но только при переходе от 5 к 6 потокам резкое снижение пропускной способности и затем при увеличении потоков ее постепенное восстановление.
Попробовал увеличивать не потоки, а кол-во одновременных запросов
Например при 32K трансфер-блоке 2 Workers по 2 Outstand дают 450 Mb/s, а если добавить еще один Outstand то происходит резкое снижение, а так же если сделать на одном потоке 2 Outstand а на другом 1, то то же провал.
Подумал, что как-то кэш влияет - отключил предсказание чтений в настройках рэйд массива картина несколько поменялась но принцип остался:
Напрмиер при 64K, Outstand=1
1 Worker 190 Mb/s (3000 IOps)
2 Worker 130 (2100) <<<
3 Worker 160 (2600)
...
8 Worker 360 (5800)
Почему наблюдается такой провал при каком-то определенном кол-ве потоков с последующим постепенным восстановлением при увелечении потоков ?
