LINUX.ORG.RU
ФорумAdmin

как увеличить производительность софтварного рейда?

 


1

1

хай всем

сделал софтварный рейд 10 из четырёх velociraptor-ов по 1тб каждый. скорость чтения, в теории, должна быть равна суммарной скорости чтения всех 4-ех винтов. но, на практике, у меня она равна скорости чтения одного винта. у кого-то получалось выжать какой-то профит по скорости из софтварного рейда? или это утопическая идея? поставил бы хардварный рейд, но нет свободного слота.


скорость чтения, в теории, должна быть равна суммарной скорости чтения всех 4-ех винтов.

Ээээммм.

dvrts ★★★
()

RAID уже точно отребилдился?

у меня она равна скорости чтения одного винта

Должна быть хотя бы уровня двух винтов, так как один из уровней RAID10 - RAID0

в теории, должна быть равна суммарной скорости чтения всех 4-ех винтов

При желании, конечно, можно, но нужно ли? Запусти 2 потока, получишь более высокую скорость.

YAR ★★★★★
()



сделал софтварный рейд 10 из четырёх velociraptor-ов по 1тб каждый. скорость чтения, в теории, должна быть равна суммарной скорости чтения всех 4-ех винтов.

В какой теории?

DALDON ★★★★★
()

Инициализация прошла уже?

Скорость чтения будет «до двойной скорости половины винтов», т.е. как 2 винта, а не 4.

dk-
()
Ответ на: комментарий от DALDON

В какой теории ?

В обычной. RAID0 - удвоение скорости чтения/записи. RAID1 - вот тут, как реализовано. Теоретически, удвоение скорости чтения возможно, так как разные порции данных можно читать с разных дисков зеркала. Соответственно, при идеальной реализации, от RAID10 на 4 HDD можно ожидать удвоения скорости записи и 4-хкратной скорости чтения, за вычетом потерь на всякую математику и т.п.

AS ★★★★★
()
Ответ на: комментарий от DALDON
 
          stripe1    stripe2
mirror1    1 3        2 4
mirror2    1 3        2 4

смотри: блоки файла 1,2,3,4 имеются на всех 4х дисках, т. е. их можно прочитать одновременно и получить х4 скорость

такая простая теория. лажанулся ты снова

anonymous
()
Ответ на: комментарий от YAR

да, я прождал шесть часов пока в /proc/mdstat закончился ребилд. на соседней машине стоит аппаратный рейд адаптек, он даёт на чтение рейд10 порядка 700-800мб/с. из софтверного я больше 180 выжать не могу. не ясно в чём причина. машина - микросервер gen8 с e3-1270v2, должно по идее шустро бегать.

ioan
() автор топика

Помнится, с софтверного зеркала никак не получить 2х чтение. Это связано с его реализацией. Типа чтоб быть уверенным что данные консистентные, ядро читает одно и то же с обеих винтов и по пути сравнивает. Если за последние год-два что-то поменялось то просьба поправить меня ткнув ссылкой.

iron ★★★★★
()
Ответ на: комментарий от anonymous

fio, iozone, bonnie++. есть куча статей на эту тему

ioan
() автор топика
Ответ на: комментарий от iron

Если поиграться с --layout, создав зеркало, как двухдисковый RAID10 (т.е., без уровня RAID0), можно добиться до 2x на одном потоке.

YAR ★★★★★
()
Ответ на: комментарий от iron

Это связано с его реализацией. Типа чтоб быть уверенным что данные консистентные, ядро читает одно и то же с обеих винтов и по пути сравнивает.

T-c-c-c! Щаз у «свидетелей zfs» бомбанет, они же с контрольными суммами носятся как с писаной торбой, а тут без них устроили проверку считанных данных.

anonymous
()
Ответ на: комментарий от YAR

ну вообще должно быть 4x. но я вижу что реально линукс читает с одного диска и всё. сам рейд я создавал при инсталле убунты через интерфейс инсталлятора. конечно надо будет поиграться с layout. но чтото в гугле инфы по этому поводу не густо (именно по поводу производительности).

ioan
() автор топика
Ответ на: комментарий от ioan

но я вижу что реально линукс читает с одного диска и всё

Фигня какая-то, ибо один из уровней - это RAID0 и тут никак «с одного диска» не получится.

YAR ★★★★★
()
Ответ на: комментарий от ioan

но я вижу что реально линукс читает с одного диска и всё.

Читаешь-то небось в один поток, так схолмали должна скорость увеличиваться?
Попробуй что-то типа

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
ЗЫ никаких проверок консистентности там нет, пусть анон не кукарекает.

EvgGad_303 ★★★★★
()
Последнее исправление: EvgGad_303 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Linux MD RAID-1 (mirroring) read performance:

MD implements read balancing. That is, the RAID-1 code will alternate between each of the (two or more) disks in the mirror, making alternate reads to each. In a low-I/O situation, this won't change performance at all: you will have to wait for one disk to complete the read. But, with two disks in a high-I/O environment, this could as much as double the read performance, since reads can be issued to each of the disks in parallel. For N disks in the mirror, this could improve performance N-fold.

anonymous
()

Покажи, как создавал рейд.
У меня, помнится, обычный тривиальный raid1 выдавал 2х скорость.

AnDoR ★★★★★
()
Ответ на: комментарий от EvgGad_303

естественно, в один. в чём проблема одного потока? ядро не может одновременно с 4ех дисков считать инфу ? у аппаратного рейда нет такой проблемы, как в линуксе это реализовано не ясно.

ioan
() автор топика
Ответ на: комментарий от EvgGad_303

один поток ничего не читает. он даёт запрос драйверу софтового рейда и ждёт от него ответа. а драйвер уже может может одновременно 4-ем винтам послать запрос на чтение и ждать получения ответа.

ioan
() автор топика
Ответ на: комментарий от ioan

конечно-конечно

If you use Linux software RAID 1, your single-threaded performance will be limited by the throughput of a single underlying device. Only when you have multiple clients accessing MD device simultaneously, will the MD driver utilize more than one device.

EvgGad_303 ★★★★★
()
Ответ на: комментарий от EvgGad_303

ну это уже особенности реализации в линуксе. никто не мешал им сделать так, как реализовано в аппаратных контроллерах. за инфу спасибо, теперь всё ясно.

ioan
() автор топика
Ответ на: комментарий от ioan

как реализовано в аппаратных контроллерах

пример тоже не заставит себя долго ждать конечно же? я вот знаю только такие, что ускоряют многопоточные операции.

EvgGad_303 ★★★★★
()
Ответ на: комментарий от EvgGad_303

да, я юзал адаптеки начиная с 2405, в raid10 они дают по чтению практически 4x скорость, а по записи 2x. также highpoint-овские рейды - аналогичные показатели. думаю что все нормальные аппаратные рейды имеют такую скорость. не совсем понимаю, каким образом, по вашему, однопоточность не даст использовать сразу все винты для чтения ?

ioan
() автор топика

кому интерестно, кое что получилось. у mdadm есть опция layout, которая позволяет выжать немного скорости из рейда:

mdadm --create /dev/md3 --run --level=10 --chunk=4 --raid-devices=4 --layout=o2 /dev/sda1 /dev/sdc1 /dev/sdd1 /dev/sde1

o2 - это 2x по записи, 1x по чтению.

mdadm --create /dev/md3 --run --level=10 --chunk=4 --raid-devices=4 --layout=n2 /dev/sda1 /dev/sdc1 /dev/sdd1 /dev/sde1

n2 - это 1x по чтению, 2x по записи. но из n2 можно выжать ещё около 20%, если увеличить readahead:

blockdev --setra 6144 /dev/md3

ioan
() автор топика
Ответ на: комментарий от Pinkbyte

Ты прав - никто. Делай.

как появится свободное время - сразу займусь

ioan
() автор топика
Ответ на: комментарий от YAR

пробовал, даёт на чтение прирост 2x, и почти двукратное замедление на запись, не подходит.

ioan
() автор топика
Ответ на: комментарий от ioan

в общем я немного в тексте ошибся, вот результаты замеров с разными layout-ами (слева скорость чтения, справа записи, мерялось через fio):

o2 220/85 n2 207/300 f2 400/130 n4 180/180 f4 400/70 o4 170/38

ioan
() автор топика
Ответ на: комментарий от anonymous

Это связано с его реализацией. Типа чтоб быть уверенным что данные консистентные, ядро читает одно и то же с обеих винтов и по пути сравнивает.

T-c-c-c! Щаз у «свидетелей zfs» бомбанет, они же с контрольными суммами носятся как с писаной торбой, а тут без них устроили проверку считанных данных.

Ок, прочитало оно, сравнило, копии оказались разные. Как оно решать будет, какая из копий правильная? Монетку бросать будет?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.