Здесь есть несколько вопросов, но все начинается с этого: у нас есть Dell PowerEdge R710 с RAID-контроллером PERC 6 / i (или контроллерами) в конфигурации RAID10.
В системе работает Ubuntu Server 10.04 LTS с MySQL, выполняющим рабочую нагрузку с интенсивным чтением.
Я увеличил опережение, используя blockdev --setra ### /dev/sda
для увеличения опережения чтения (чтения, по крайней мере теоретически, являются последовательными). Похоже, это не оказало значительного влияния. Дисковый элеватор не менял (видел noop
и deadline
рекомендуемые).
Нагрузка на систему стремительно растет, и, похоже, это связано с ожиданием дискового ввода-вывода. Система может ждать до 50% времени дискового ввода-вывода, в то время как процент ЦП составляет около 7-10%. Сравнимая система с RAID5 и установкой MySQL с интенсивной записью полностью отбрасывает эту систему.
Судя по отчетам Dell OpenManage, система RAID10 имеет два контроллера PERC 6 / i; однако только контроллер 0 имеет корпус, и только контроллер 0 имеет на нем RAID. RAID состоит из четырех дисков (я считаю, слоты 0–3) с двумя свободными слотами.
Система также работает в профиле энергосбережения, который позволяет операционной системе управлять скоростью процессора.
Система также страдает ошибкой fsync (), обнаруженной в некоторых ядрах Linux.
Наконец, PERC 6 / i сообщает, что прошивка устарела: она имеет 6.2.0-0013 и хочет 6.3.0-0001.
Теперь вопросы:
Я сильно подозреваю, что есть какая-то конфигурация, которая заставит диски работать на пугающе высоких скоростях, но я не могу понять это.
Обновить: Используемые здесь четыре диска - это модель Hitachi HDS721010CLA332, которая указана как имеющая «протокол шины» SATA, но также имеющая «адрес SAS»? Являются ли эти диски теми дисками, которые олицетворяют SAS, о которых я слышал, которые должны быть довольно медленными? В любом случае, это, видимо, диски на 7200 об / мин.
В системе сравнения есть диски SAS: Seagate ST31000640SS - тоже 7200 об / мин. В этой системе сравнения также используются как RAID-контроллеры, так и связанные с ними записи «объединительной платы».
PERC 6 / i - двухпортовый контроллер; каждый порт имеет 4 полосы SAS. В шасси R710 размером 8x2,5 дюйма это взаимно однозначное сопоставление дисков передней панели с дорожками SAS. На 3,5-дюймовом шасси порты 6 и 7 не используются. В массиве из 4 дисков вы можете переместить 2 диска в слоты 4 и 5, чтобы разделить рабочую нагрузку между каналами, хотя на карте PERC все еще есть один процессор и память.
Обновление прошивки, как правило, является хорошей идеей и довольно безболезненным процессом (хотя и требует перезагрузки).
4-дисковый RAID 10 дает производительность 2 дисков для записи и 4 дисков для чтения (самый лучший сценарий). Жесткие диски 7200 об / мин должны давать 75-100 операций ввода-вывода в секунду. Какое представление вы видите? Вы читаете %util
около 100 дюймов iostat
?
Если основная нагрузка создается базой данных, почему вы думаете, что она будет в основном последовательной? Базы данных - это стереотипный случай произвольного доступа. Ты можешь использовать iostat
чтобы увидеть средний размер запроса. collectl
дополнительно предоставит вам информацию о слияниях ввода-вывода, выполненных в ядре. Согласуется ли это с вашим ожиданием в основном последовательного чтения?
Какую ошибку ядра fsync () вы имеете в виду?
Какую файловую систему вы используете? Какие варианты крепления? noatime
Опция может принести вам заметное ускорение на ext [34], потому что изменение времени доступа может означать дополнительную запись для каждого чтения файла (в худшем случае, временные метки высокого разрешения).
Раздел ответов;)
Обновление прошивки может помочь, но чудес не ждите. Вы можете получить пару процентов, а не
RAID 10 - лучший уровень производительности (если вы хотите сохранить избыточность), поэтому он не должен вызывать проблем сам по себе. Однако у вас могут быть разделы и / или LV, не выровненные по размеру полосы. Это потенциально может удвоить количество операций ввода-вывода, необходимых для небольших случайных чтений (наихудший сценарий), и приведет к накладным расходам при любом типе ввода-вывода.
Режим энергосбережения не должен стоить дорого. Судя по тому, что вы нам говорите, диски слишком заняты, чтобы их можно было остановить, а процессор все равно ждет ввода-вывода.
На одном из наших серверов был RAID-контроллер и версия прошивки; Судя по всему, в последней версии прошивки исправлена ошибка, из-за которой батарея кэша записи не заряжается должным образом. Поскольку аккумулятор не заряжается, контроллер переключается в режим сквозной записи для защиты ваших данных, что значительно снижает производительность.
Обновите прошивку и подождите несколько часов, чтобы аккумулятор зарядился. Тогда ты будешь работать нормально.
Будьте осторожны при использовании инструментов, показывающих среднюю загрузку процессора. Это число, безусловно, является хорошей отправной точкой, чтобы увидеть полную загрузку, но если вы видите нагрузку 50% на систему с 24 процессорами, откуда вы знаете, что 12 процессоров используются не на 100%, а остальные 12 простаивают? Я видел случаи, когда нагрузка <10%, но при 100% прерываниях обработки забивается 1 процессор. -отметка