Если есть массив RAID1 из двух дисков (md raid), то будет ли распараллеливаться чтение с него, если одновременно две или более программы хотят что-то прочитать? Кажется, это возможно в теории. Так ли на практике?
RAID1: ... Increased read performance occurs when using a multi-threaded operating system that supports split seeks, as well as a very small performance reduction when writing.
> Боюсь, на практике всё, что тебя ждёт - удвоение скорости чтения каждой программой, но не распараллеивание.
Как раз наоборот: один dd упорно сидит на одном диске, а вот два юзают оба зеркала. Разумеется, закономерность нестрогая. Прога, обращающиеся к винту не последовательно, тоже грузит два зеркала. Так что фича в линуксе реализована, не берусь сказать, насколько оптимально.
Создал два больших файла. Одновременно копировал их в null. Результат приятно удивил - читались одновременно и с такой скоростью как каждый поотдельности.
>Иначе как на зеркале получается удвоение трансфера? :)
Где то читал что удвоение трансфера при чтении с рейд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
>а что касается md raid: сегодня добрался до работы, потестил, так что хер
Видно, что-то поломали или переделали. Года 4 назад держал на зеркале (md) корень, до кучи скорость тестировал - реально удваивалась, как и на страйпе :) Сейчас из raid'ов - только stripe на lvm. Ну, тут ему положено утраиваться (у меня /usr в страйпе на три винта).
а ты ведро не помнишь ? Я это тестил на убунтовском 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)
Вот если пробовать одновременно запустить два cp:
time cp file1 /dev/null & time cp file2 /dev/null
То получается прирост.
А вот если один cp запускать - то прироста в md нет.
Ядро 2.6.27-r10-gentoo.
>Вот если пробовать одновременно запустить два cp:
Сегодня ночью проводил эксперимент. Ну конечно это не показатель, но:
сделал рейд0 через mdadm, два саташных винта (каждый отдает по 70мб на чтение).
hdparm -t выдал около 105метров в секунду.
Затем сделал опять же рейд0, но через встроенный в мать нвидиевский контроллер (через dmraid). Получил почти 140метров в секунду. Т.е. есть мнение что на рейдах 10 mdadm может достаточно сильно сливать dmraid'у при линейном чтении в один поток, надо проверить как нить.