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

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

  • A: 4 ТБ жестких дисков, с RAID 1 (MegaRAID SAS 2008), кэш-память 128 МБ, без BBU, режим сквозной записи, 7,2 К / мин, производитель A.
  • B: 1,5 ТБ жестких дисков, с RAID 1 (MegaRAID SAS 3108), кэш-память 64 МБ, с BBU, но режим сквозной записи, 10,5 К / мин, производитель B.

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

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

                                                            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 для рабочих нагрузок, включающих много синхронных записей?

Благодарю.

1 ответ

Решение

Что касается измеренной 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-контроллером с добавленной возможностью 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 Режим.

Другие вопросы по тегам