LINUX.ORG.RU

Параллельное чтение с RAID1


0

0

Если есть массив RAID1 из двух дисков (md raid), то будет ли распараллеливаться чтение с него, если одновременно две или более программы хотят что-то прочитать? Кажется, это возможно в теории. Так ли на практике?

Deleted

Боюсь, на практике всё, что тебя ждёт - удвоение скорости чтения каждой программой, но не распараллеивание.

KRoN73 ★★★★★
()

Кажется ядро этого не поддерживает.

xetf ★★
()

>если одновременно две или более программы хотят что-то прочитать? Кажется, это возможно в теории. Так ли на практике?

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

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

anonizmus
()
Ответ на: комментарий от Deleted

>Вопрос в том, делает ли это Linux.
провести эксперимент с помощью dd?

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

>т.е. надо контрольные суммы сравнивать считанных блоков с теми что на другом диске.

ИМХО, в зеркале такого не делается. Учёт целостности возлагается на HDD. Иначе как на зеркале получается удвоение трансфера? :)

KRoN73 ★★★★★
()

проверить легко, бери два больших файла и одновременно запускай:
time cp file1 /dev/null
time cp file2 /dev/null

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

> Боюсь, на практике всё, что тебя ждёт - удвоение скорости чтения каждой программой, но не распараллеивание.

Как раз наоборот: один dd упорно сидит на одном диске, а вот два юзают оба зеркала. Разумеется, закономерность нестрогая. Прога, обращающиеся к винту не последовательно, тоже грузит два зеркала. Так что фича в линуксе реализована, не берусь сказать, насколько оптимально.

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

Создал два больших файла. Одновременно копировал их в null. Результат приятно удивил - читались одновременно и с такой скоростью как каждый поотдельности.

anonymous
()

Надо залезть в md-кусок ядра и посмотреть.

Мне green с год назад говорил, что тогда распараллеливания не было в коде.

Deleted
()
Ответ на: комментарий от KRoN73

>Иначе как на зеркале получается удвоение трансфера? :)
Где то читал что удвоение трансфера при чтении с рейд1 далеко не все хардверные контроллеры умеют, а что касается md raid: сегодня добрался до работы, потестил, так что хер (зеркало из двух винтов сата рейд1):

root@node00:~# hdparm -t /dev/sda1

/dev/sda1:
Timing buffered disk reads: 238 MB in 3.00 seconds = 79.27 MB/sec
root@node00:~# hdparm -t /dev/md1

/dev/md1:
Timing buffered disk reads: 236 MB in 3.00 seconds = 78.54 MB/sec
root@node00:~# hdparm -T /dev/sda1

/dev/sda1:
Timing cached reads: 7280 MB in 2.00 seconds = 3642.59 MB/sec
root@node00:~# hdparm -T /dev/md1

/dev/md1:
Timing cached reads: 6934 MB in 2.00 seconds = 3468.81 MB/sec

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

>а что касается md raid: сегодня добрался до работы, потестил, так что хер

Видно, что-то поломали или переделали. Года 4 назад держал на зеркале (md) корень, до кучи скорость тестировал - реально удваивалась, как и на страйпе :) Сейчас из raid'ов - только stripe на lvm. Ну, тут ему положено утраиваться (у меня /usr в страйпе на три винта).

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

а ты ведро не помнишь ? Я это тестил на убунтовском lts 8.04

Linux node00 2.6.24-24-server #1 SMP Tue Jul 7 19:39:36 UTC 2009 x86_64 GNU/Linux

А md не настраивал как то отдельно хитро ? А я почему спрашиваю - дома хочу систему переставить с страйпа на рейд1, и выбираю что юзать, md рейд или dmraid (контроллер встроенный на мать от нвидии, вдруг он умеет распаралеливать чтение с рейд 1)

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

>а ты ведро не помнишь ?

Не-а.

>Linux node00 2.6.24-24


Не... Это было много раньше. 2.6.1x какие-то.

>А md не настраивал как то отдельно хитро ?


По how-to-шкам Gentoo'шным. А уж было там что-нибудь хитрое или нет, уже не помню.

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

Вот если пробовать одновременно запустить два cp:
time cp file1 /dev/null & time cp file2 /dev/null
То получается прирост.
А вот если один cp запускать - то прироста в md нет.
Ядро 2.6.27-r10-gentoo.

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

>Вот если пробовать одновременно запустить два cp:

Сегодня ночью проводил эксперимент. Ну конечно это не показатель, но:

сделал рейд0 через mdadm, два саташных винта (каждый отдает по 70мб на чтение).

hdparm -t выдал около 105метров в секунду.

Затем сделал опять же рейд0, но через встроенный в мать нвидиевский контроллер (через dmraid). Получил почти 140метров в секунду. Т.е. есть мнение что на рейдах 10 mdadm может достаточно сильно сливать dmraid'у при линейном чтении в один поток, надо проверить как нить.

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