У меня проблемы с получением максимальной пропускной способности из моей установки. Аппаратное обеспечение выглядит следующим образом:
- двухъядерный четырехъядерный процессор 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 чередуется с ошибками? Какие еще тесты я могу запустить?
striping
программа не могла работать с помощью многопоточного алгоритма. Поскольку вы используете программный RAID из mdadm
, я бы посоветовал вам взглянуть на источник.