Назад | Перейти на главную страницу

Основная причина - разная производительность на тесте iozone O_SYNC для двух производителей жестких дисков

У меня есть два сервера A и B со следующей конфигурацией:

Я провожу следующий тест на одном разделе с RAID: iozone -a -s 10240 -r 4 -+r

Результаты из A (отрывок):

                                                            random  random    bkwd   record   stride
          kB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
       10240       4     108     474  4193564  6667334 6556395     701 4058822      475  3653175  2303202  2616201 6785306  6101840

Результаты из B (отрывок):

                                                            random  random    bkwd   record   stride
          kB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
       10240       4    3332   46961  5478410  6836065 4994841    2951 2853077      728  2299133  1722202  2008983 4549365  4712594

На обоих серверах включено кэширование со сквозной записью, но я не могу определить основную причину, по которой производительность записи на сервере A ужасно медленная (108 кБ / с) по сравнению с сервером B (3332 кБ / с), если я интерпретирую результаты правильно.

Что может быть причиной? Оба сервера имеют идентичные другие параметры файловой системы (ext4 / одинаковые параметры по умолчанию).

Может ли быть так, что диски от производителя B превосходят диски от A для рабочих нагрузок, связанных с большим количеством синхронных записей?

Спасибо.

Что касается измеренной разницы в 33 раза между вашими результатами, после нашего обсуждения в комментариях выяснилось, что MegaCli64 -LDGetProp -DskCache -Lall -aAll показало, что установка B кэш диска был включен по умолчанию, в то время как он был отключен на настройка A.

С помощью MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll в результате обе системы показали схожую производительность.

Безопасно ли запускать RAID с включенным кешем диска?

Запуск RAID с включенным кешем жесткого диска фактически аналогичен запуску RAID-контроллера с энергозависимым кешем без поддержки BBU с включенным кэшированием записи (режим принудительной обратной записи). Это повышает производительность, но в то же время увеличивает вероятность потери данных и несогласованности данных в случае сбоя питания.

Если вы хотите избежать этого шанса, сохраняя при этом приличную производительность ввода-вывода, рекомендуется иметь контроллер с резервным кешем BBU и настроить свой том в режим обратной записи с отключенным кэшированием диска.

Разница между вашими двумя RAID-контроллерами

Не знаю, знали ли вы, но между программным и аппаратным RAID есть нечто большее (это интересная статья об этом).

В конце концов MegaRAID SAS 2008 г. более или менее HBA или IO-Controller с добавленными возможностями RAID, в то время как MegaRAID SAS 3108 это настоящий RAID-контроллер ™ (также называемый ROC или RAID-on-Chip), который имеет специальный процессор для обработки вычислений RAID.

SAS 2008 особенно известен ужасной производительностью записи с некоторыми OEM-прошивками (например, DELL в PERC H310, о котором я упоминал в комментарии).

Особенно синхронный режим в сочетании с выбранной длиной записи и размером файла, кажется, приводит к действительно плохим результатам с программным / поддельным RAID.

Для справки, вот что я получаю на своей рабочей станции, использующей 10k WD Velocity Raptors в программном RAID1:

                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
   10240       4     182     181  1804774  2127084 2110984     167 1673159      153  1760968   954589  1203989 2022512  2062824

Если вы работаете в синхронном режиме (O_SYNC), ваш Результат А поэтому кажется разумным с точки зрения того, что может быть доставлено через soft / fake-RAID.


Вызывает ли режим кэширования со сквозной записью снижение производительности массива со временем?

Я так не думаю. При активированном кэше записи контроллер может выполнять определенные операции для оптимизации отложенных операций записи.

Например, это описание операции с кешем взято из белая бумага для контроллеров HP Smart Array:

Кэш записи обычно заполняется и остается заполненным большую часть времени в средах с высокой рабочей нагрузкой. Контроллер использует эту возможность для анализа ожидающих команд записи, чтобы повысить их эффективность. Контроллер может использовать объединение записи, которое объединяет небольшие записи в соседние логические блоки в одну большую запись для более быстрого выполнения. Контроллер также может выполнять переупорядочение команд, изменяя порядок выполнения записей в кэш, чтобы уменьшить общую задержку диска.

Как вы можете прочитать, кеш используется для дальнейшего улучшения запись-производительность массива, но это не оказывает никакого влияния на производительность любых последующих операций записи или чтения.

Что касается фрагментации диска, это проблема на уровне файловой системы / ОС. RAID-контроллер, работающий на уровне блоков, вообще не может оптимизировать фрагментацию файловой системы, поэтому нет никакой разницы, работает ли он в write-trough или write-back Режим.