Производительность Linux RAID-0 не увеличивается до 1 ГБ / с

8

У меня проблемы с получением максимальной пропускной способности из моей установки. Аппаратное обеспечение выглядит следующим образом:

  • двухъядерный четырехъядерный процессор AMD Opteron (tm) 2376
  • 16 ГБ оперативной памяти DDR2 ECC
  • два RAID-контроллера Adaptec 52245
  • 48 SATA-накопителей емкостью 1 ТБ, настроенных как 2 массива RAID-6 (полоса 256 КБ) + резервные.

Програмное обеспечение :

  • Простое ванильное ядро ​​2.6.32.25, скомпилированное для AMD-64, оптимизированное для NUMA; Пользователь Debian Lenny.
  • запуск тестов: disktest, bonnie ++, dd и т. д. Все дают одинаковые результаты. Здесь нет расхождений.
  • Используемый планировщик: noop. Да, здесь нет подвоха.

До сих пор я в основном считал, что чередование (RAID 0) нескольких физических устройств должно увеличивать производительность примерно линейно. Однако это не тот случай:

  • Каждый RAID-массив обеспечивает около 780 МБ / с на запись, длительное и 1 ГБ / с чтение на постоянное.
  • запись в оба RAID-массива одновременно с двумя разными процессами дает 750 + 750 МБ / с, а чтение из обоих - 1 + 1 ГБ / с.
  • однако, когда я разделяю оба массива вместе, используя mdadm или lvm, производительность составляет около 850 МБ / с и 1,4 ГБ / с. по крайней мере, на 30% меньше, чем ожидалось!
  • запуск двух параллельных процессов записи или чтения с полосатыми массивами не улучшает показатели, фактически снижает производительность еще больше.

Так что здесь происходит? По сути, я исключил конфликт шины или памяти, поскольку при одновременном запуске dd на обоих дисках совокупная скорость записи фактически достигает 1,5 ГБ / с, а скорость чтения достигает 2 ГБ / с.

Так что это не шина PCIe. Я полагаю, это не ОЗУ. Это не файловая система, потому что я получаю те же цифры, которые сравниваются с необработанным устройством или с использованием XFS. И я также получаю точно такую ​​же производительность при использовании чередования LVM и чередования md.

Что не так? Что мешает процессу подняться до максимально возможной пропускной способности? Linux чередуется с ошибками? Какие еще тесты я могу запустить?

wazoox
источник
Я не понимаю, почему вы используете RAID 6 + 0 здесь, зачем вам это делать, когда вы можете просто использовать обычный RAID 1 + 0?
Chopper3
Это не решит проблему. md / lvm ведут себя одинаково при чередовании массивов RAID-10. Я смотрю на общее отсутствие производительности, а не на конкретные настройки. Это тестовая система, а не производственная машина.
wazoox
5
совпадают ли ваши полосы рейда 0 с полосами рейда 6? Как правило, многоуровневый RAID является очень нестабильной областью, и не следует полагать, что данный RAID будет работать так, как если бы он был одним жестким диском с такой же скоростью.
JamesRyan
1
Вы пытались настроить карты Adaptec как JBOD и использовать RAID-10 только в программном обеспечении (MD)? Меня не удивит, что драйверы контролируют функцию RAID контроллера, что сводит на нет любое преимущество в производительности после чередования двух разных RAID. md, с другой стороны, будет пытаться оптимизировать доступ к каждому диску независимо от теоретического времени (если, конечно, нет других узких мест)
Хавьер
1
Это не похоже на простое расследование. На первый взгляд, я бы предпочел, чтобы stripingпрограмма не могла работать с помощью многопоточного алгоритма. Поскольку вы используете программный RAID из mdadm, я бы посоветовал вам взглянуть на источник.
e2-e4

Ответы:

3

Вы пытались запустить latencytop во время тестов? может быть полезно узнать, какой системный вызов Linux является виновником (если есть).

Андика Тривидада
источник
2

Насколько я могу судить, это карта x8 PICe Gen 1 - абсолютная максимальная скорость передачи данных, которую она может поддерживать, составляет 2 ГБ / с при нулевой нагрузке. Сами Adaptec утверждают, что карты в лучшем случае могут поддерживать скорость 1,2 Гбайт / с, а вы превышаете это.

Оснащенные ведущим в отрасли двухъядерным RAID-массивом (RoC), x8 PCI Express и 512 МБ кэш-памяти DDR, они обеспечивают более 250 000 операций ввода-вывода в секунду и 1,2 ГБ / с.

Я предполагаю, что, поскольку вы в состоянии значительно превзойти заявленную производительность с двумя наборами RAID 0, независимо действующими как дополнительная нагрузка, небольшая и все, что может быть, это чередование увеличивает нагрузку на ЦП RAID или подсистему ОЗУ на загружается контроллер, при Гбайт / сек.

Helvick
источник
1
Я не совсем понимаю ... Как формулирует это OP, мне кажется, что он имеет 2 контроллера RAID, каждый из которых обрабатывает массив RAID6. Затем он RAID 0 двух программных массивов RAID 6, т.е. используя Linux 'встроенный в ядро ​​RAID. В этом случае каждый контроллер должен обрабатывать только половину нагрузки, поэтому каждому контроллеру просто необходимо выполнить запись 780 МБ / с и чтение 1 ГБ / с. Контроллеры уже доказали, что могут это сделать (до того, как был добавлен программный RAID). То есть шина PCI-Express / контроллер RAID сама по себе не должна быть ограничивающим фактором?
Джеспер М
Справедливо: пропустил комментарий о двойном контроллере (и часть lvm \ md, которая это подчеркивала). Его точка зрения о том, что это не ограничение шины \ IO, в значительной степени доказано.
Хелвик