В наши руки попал экземпляр контроллера компании Broadcom 946N-8i, который имеет 2Gb кеша и шину PCI-E 3.0. Данный RAID контроллер является полным аналогом 9460-8i, разработанный для компании NEC:

Контроллер Broadcom 946N-8i
Контроллер Broadcom 946N-8i

Для анализа производительности мы взяли такую следующую конфигурацию тестового стенда Asus Maximus VIII Ranger, процессор Intel Core-i5 6500, 32Gb DDR4 и два диска по MSI M390 512Gb.

Судя по спецификации диски поддерживают максимальную скорость чтения 3300MB/s, а записи – 3000MB/s:

Чтобы подключить данные диски к контроллеру нам потребовалось еще 2 адаптера NVME M-key M.2 - U.2 SFF- 8639:

Адаптер NVME M-key M.2 - U.2 SFF- 8639
Адаптер NVME M-key M.2 - U.2 SFF- 8639

К сожалению, обычный кабель с разъемами SFF-8643 на SFF- 8639 не подходит! Компания Broadcom представляет специальный сдвоенный кабель, предназначенный для подключения NVMe дисков. Сдвоенность связана с тем, что там режим NVMe включается на паре разъемов, и возможно это сделано для того, чтобы не угробить диски, поскольку производитель не рекомендует диски NVMe подключать к контроллеру в режиме SAS.

Официально существует два оригинальных кабеля для прямого подключения дисков 50 см и 1 м:

05-50065-00

Cable, U.2 Enabler, HD to SFF8639 0.5M

x8 SFF-8643

2 x4 SFF-8639 Direct Drive Connect

05-50064-00

Cable, U.2 Enabler, HD to SFF8639 1M

x8 SFF-8643

2 x4 SFF-8639 Direct Drive Connect

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

Кабель Cable, U.2 Enabler, HD to SFF-8639, 80 см
Кабель Cable, U.2 Enabler, HD to SFF-8639, 80 см

Далее требуются провести настройки контроллера, но оказалось, что Legacy Bios отключен компанией Broadcom, теперь можно либо использовать технологию HII, либо утилиту storcli.

Мы решили воспользоваться утилитой, которая имеет максимальные возможности для тонкой настройки. Существуют версии под основные ОС, мы использовали под Windows storcli64.exe. Чтобы этот контроллер увидел NVMe диски для начала требуется выбрать профиль для NVMe:

storcli64 /c0 set profile profileid=11

, где 0 – порядковый номер контроллера, 11 – порядковый номер профиля NVMe, после выполнения этой команды требуется перезапустить систему.

Следующая команда показывает все диски, подключенные к контроллеру:

storcli64 /c0 /eall /sall show

, где мы увидели два диска с идентификаторами 16:4  и 16:6

Данные идентификаторы нужны для создания RAID 1:

storcli64 /c0 add vd r1 Size=all name=RAID1 drives=16:4,6

После создания RAID массива нужно убедиться, что активировано использование кеша:

storcli64 /c0 /vall show all

На скрине видно, что создан массив RAID1 с идентификатором 239. Теперь проанализируем колонку Cache = RWTD, где:

R = Read Ahead Always – означает активацию кеша на чтение, активируется автоматически, даже, если нет батареи, так как кеш на чтение не влияет на целостность данных.

Если по каким-то причинам кеш на чтение автоматически не активировался, его можно включить следующей командой:

storcli64 /c0/v239 set rdcache=RA

WT = WriteThrough – означает, что кеш на запись отключен.

Тут существует 2 варианта в зависимости подключена ли батарея к контроллеру:

1) Если батарея в комплекте вводим:

storcli64 /c0/v239 set wrcache=WB

2) Если батареи нет, то на свой страх (есть риск потери данных при внезапном отключении питания сервера) вводим:

storcli64 /c0/v239 set wrcache=AWB

Теперь приступаем к самому интересному, мы будем тестировать производительность массива и получили следующие результаты:

Данный результат показывает скорость чтения и записи примерно одинаковые на уровне 7000MB/s, что превышает скорость NVMe дисков более чем в два раза! Возможно было бы больше, но упирается в ограничения шины PCI-E 3.0  x8. Такую производительность мы получили благодаря использования кеширования на уровне контроллера.

После установки уже на сервере клиента данный контроллер стал выдавать скорость в два раза меньше, примерно 3500 MB/s

В чем же дело? После анализа ситуации мы стали проверять конфигурацию сервера и оказалось, что контроллер был установлен в слоте PCI-E x16, который поддерживал только x4, а для контроллера нужен минимум x8 для максимальной производительности.

После установки в полноценный слот мы получили такие же результаты, как и на тестовом стенде.

Выделим основные плюсы и минусы:

Плюсы:

  • кеш дает максимальную пропускную способность для шины PCI-E 3.0

Минусы:

  • нужен специальный кабель для подключения NVMe дисков

  • для дисков M.2 также требуется адаптер на U.2

В заключении можно сказать, что использование данного контроллера вполне рационально, если сервер ограничен шиной PCI-E 3.0, а для PCI-E 4.0 существуют более производительные контроллеры 9560-8i, но это уже другая история…

Комментарии (14)


  1. nick-for-habr
    24.06.2023 20:56
    +9

    Хоспадя, ну сколько можно тестировать скорость SSD кэша, указывая в CrystalDisk мизерный размер тестовых данных в 1(!) ГБ при кэше в 2(!) ГБ только на контроллере?!

    А ещё на накопителях (нормальных) стоит своего кэша по 0,5 ГБ и более.

    Что вы хотите померить и проанализировать таким способом?

    Поставьте хотя бы 32 ГБ, но лучше 64, а правильно - натравить на него тот же IOmeter на часок-другой. Хотя это уже тест накопителей будет.

    А вот для тестирования именно контроллера надо было не 2 накопителя цеплять, а под завязку - все 8 каналов нагрузить. И в RAID6 их собрать, что бы процессор там напрягся. То и будет видна производительность контроллера, как вы планировали.

    А так мы увидели, что кэш на контроллере быстрее, чем PCIe x8. Как неожиданно, просто удивительно: какой быстрый там кэш!


    1. click0
      24.06.2023 20:56
      +2

      +поднять Debian или Ubuntu посвежее с ZFS и протестировать производительность FS, когда диски в JBOD или RAID0...


      1. serverbay Автор
        24.06.2023 20:56

        Дело в том, что ZFS поддерживает только HBA контроллеры, но не поддерживает RAID контроллеры, поэтому ZFS мы конечно будем тестировать, но с другими контроллерами типа Broadcom 9400-8i


        1. click0
          24.06.2023 20:56

          ZFS поддерживает любое блочное устройство.
          Да, с аппаратными рейдами (не в HBA режиме) есть нюансы с кешем записи.
          Но я не зря указал режим JBOD и RAID0 для каждого диска.
          Заодно протестите RAID на логику детекта бэдов и отдачу статистики SMART с каждого диска...


          1. serverbay Автор
            24.06.2023 20:56

            Полностью согласен, но идея статьи именно анализ производительности хардового рейда, а не софтового


    1. serverbay Автор
      24.06.2023 20:56

      Во-первых, Вы наверно путаете обычные SSD SATA диски и NVMe, данный контроллер имеет несколько режимов Tri-Mode: один из режимов - это подключение до 8 дисков SATA или SAS (максимально до 8 дисков), но в этом режиме NVMe диски не поддерживаются, выбирая профиль 11, дает возможность переключить контроллер в режим поддержки NVMe дисков, тогда можно подключить максимум 2 NVMe диска, а RAID 6 из двух дисков не собрать.
      Во-вторых, мы действительно тестируем контроллер с кешем и максимальную производительность получили только, если кеш используется, а это очень полезно для высокопроизводительных БД, где важна скорость, а не объем данных.


      1. serverbay Автор
        24.06.2023 20:56

        Хочу еще добавить про кеш самих накопителей - ведь он не дает гарантию, что данные будут сохранены при внезапном отключении питания! А у контроллера есть батарея, которая даже при полном отключении питания, гарантирует, что данные сохранятся на встроенную плату CacheVault


        1. vorphalack
          24.06.2023 20:56

          а это смотря какие накопители — у интела на эту тему была Extended Power Loss Prevention, у самсунга что-то аналогичное, суть — куча конденсаторов и алгоритм аварийного сброса всего во флеш при пропадании питания.


      1. nick-for-habr
        24.06.2023 20:56

        Нет, диски не путаю.

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

        Хотя ограничение логичное, т.к. 8 линий PCIe контроллера хватит как раз на пару NVMe SSD, которые как раз обычно используют 4 линии.

        Вопрос вот тогда назрел. Если речь зашла про "скорость".

        В вашем случае как раз именно контроллер выглядит узким местом, т.к. позволяет подключить всего 2 накопителя, в то время как уже доступны модели серверов с корзинами на десятки U.2 SSD. Это вот если реально надо скорость.

        А для старого сервера проще (и сильно, сильно дешевле) воткнуть пассивный переходник с M.2 на PCIe - есть модели на 1,2 и даже 4 планки (16 линий PCIe). В результате всё так же требуется 1 слот PCIe , всё так же получаем от 2 шт. M.2 на 1 слот. Но без дорогущего контроллера, кабелей, переходников и "вот этого всего". А ведь это ещё и (не)одна точка отказа. И если сервер не очень древний - то есть шанс получить уже PCIe 4.0, и задействовать весь потенциал новых SSD.

        А есть аналогичные пассивные переходники с PCIe x16 на 2(4) U.2 NVMe: если есть желание использовать правильные компоненты серверного класса. Там и кэш здоровый, и скорость стабильная, и защита от отключения питания есть.

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

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

        У многих (возможно что и у большинства) корпоративных накопителей предусмотрено резервное питание (на суперконденсаторах) как раз для возможности сброса кэша в основную память при выключении. Видел даже M.2 планки с такой защитой. Надо только уточнять спецификации перед покупкой.


        1. serverbay Автор
          24.06.2023 20:56

          Судя по вашему посту давно не пользовались хардовыми контролерами, а цель статьи - восполнить этот пробел и ничего более! Удачи вам и профессионального роста!


  1. Foggy4
    24.06.2023 20:56
    +1

    Скажите, а нет ли у вас опыта использования адаптеров NVME - SAS, о которых вы упомянули, в серверах HP Proliant с их родными контроллерами Smart Array? Интересно заработает ли там подобное решение.


    1. serverbay Автор
      24.06.2023 20:56

      Тут зависит о каких контроллерах идет речь, потому что линейка Smart Array довольно обширная, но на сколько нам известно HP чаще всего используют в своих контроллерах не чипы LSI/Broadcom, а их конкурента Adaptec/Microsemi


      1. Foggy4
        24.06.2023 20:56

        Интересуют контроллеры P420 (DL380G8) , P440 (DL380G9).


        1. serverbay Автор
          24.06.2023 20:56

          Серии HP 420-440 не поддерживают NVMe диски, но уже более современные HPE MR416i-p построены на базе чипа Broadcom - вот они поддерживают.