|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Ilya Anfimov 2:5020/400 23 Nov 2005 20:59:52 To : Cyril Pertsev Subject : Re: MD RAID0 performance prob -------------------------------------------------------------------------------- 2005-11-22, Cyril Pertsev <kika@kika.ru> пишет: > Hi All, > > А есть ли тут software raid гуру? А то я наступил на грабли, перебрал все > подручные бубны и всё бестолку. > Есть машина, 2xXeon 3.4Ghz, 2GB ram, 2 x 3Ware9500S-2 и на них 24 винта по 400 > гиг. Диски на каждом из 3варей (по 12 штук) собраны в один массив RAID5, > получается почти ровно 4ТБ на каждом контроллере, выглядящие как два 4Тбайтных > диска. Оба массива склеены в страйп через md. Каждый из массивов отдает по > zcav (такой бенчмарк из комплекта bonnie) порядка 410-415МБ/сек, что вполне > согласуется с теорией и практикой под виндами. А вот склееный из них обоих > страйп дает в пике 500Мб/сек, а так около 450. Что резко расходится с виндовой > практикой, где софтовый же (средствами винды) страйп дает порядка 700мб/сек > линейного чтения. Пинание бубнов на тему blockdev --setra и размера страйпа > дали минимальные улучшения, дальше прогресса нет. Размер блока на массивах - > 64кб, размер чанка на страйпе - от 64 до 1024, после 128 никакого улучшения > нет (в пределах погрешности). Последовательные реквесты чтения на raid1 действительно читаются с одного диска. Соответственно, дать больше, чем подлежащий raid5 они практически неспособны (ну, сбои могут быть, кончено, но это именно сбои). Проблема в том, что чтобы что-то ускорить в raid1, надо, очевидно, чтобы разные массивы читали с разных номеров цылиндров на своих дисках. Hу, просто иначе каждый диск (даже если диск -- такой вот виртуальный, собранный radi5 контроллером) должен подойти к этому (конкретному) цылиндру и его прокрутить целиком. И что на двух, что на одном эта операцыя займёт, очевидно, одно и тоже время. При этом оба смогут прочитать за это время и по целой дорожке и резона гонять обоих в одно и то же место нет никакого. Чтобы они читали с разных цылиндров надо это как-то предсказать. Предсказывать у нас может разве что readahead. Соответственно, можно попытаться сказать (hdparm -a ) reada- headу (скорее всего lvmовскому, может получиться и raidовому), чтобы пытался читать вперёд по два цылиндра. Дорожки на обычных винтах сейчас где-то по 1000 секторов вроде, 400 гиг -- это, наверное, 8 головок, 11 винтов -- это получится метров 50 на цылиндр. Соответственно, нужен readahead в 100Mb на lvm. Кстати, ему ещё stripe нужен не сильно меньше дорожки -- то есть метров 50 наверное. Во всём этом, даже если в середине не вмешается какой-нибудь суперупорядочиватель и не прикажет всё равно всё лить с одного диска (до ночи я это проверить не смогу), всё равно возникнет проблема, что 100Mb readahead мало кому нужен кроме тестов. Соответственно, в реальной работе это будет один сплошной overhead. Правда, в реальной работе, когда эти мегабайты читаются не подряд и многими желающими, то всё и так отлично распараллеливается. Сухой остаток: ты этот массив будешь под аналог tar'а использовать? Тогда попробуй readahead выставить в 100Mb. Если нет -- то потестируй на реальной нагрузке. Есть шанс, что win и lin сравняются (если в мастдае есть хитрый алгоритм, оценивающий: это кто-то линейно винт насилует, и надо пытаться считать побольше или это всё как обычно и надо не выпендриваться) или даже вумный windows поотстанет (если такой хитрый алгоритм там забыт). --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/19170b07f86b3.html, оценка из 5, голосов 10
|