Программный NVMe RAID0: вопросы кэширования

Подсистема хранения в ноутбуке ASUS Pro­Art Studio­Book W700G2T ор­га­ни­зо­ва­на за­тей­ли­во: два твер­до­тель­ных NVMe-на­ко­пи­те­ля об­ра­зу­ют про­г­рам­мный RAID0. Один SSD, а это Intel Nep­­tune Har­bor 660P SSDPEKNW020T8, под­клю­чен к PCIe-пор­ту про­цес­со­ра, вто­рой (Sam­­sung PM981, мо­дель MZVLB2T0HMLB) ис­поль­зует PCI Ex­press порт чип­се­та. Те­о­ре­ти­че­ски, каж­дый из них спо­со­бен до­стичь про­из­во­ди­тель­но­с­ти в 4 GBPS, за­ло­гом че­го яв­ля­ет­ся под­клю­че­ние по PCIe 3.0 x4.

Иван Омельченко, менеджер представительства ASUS в Украине, на презентации ноутбуков серии ProArt StudioBook акцентировал внимание на поддержке ими RAID-массива на базе NVMe-накопителей

 

На презентации ноутбуков серии ProArt StudioBook Иван Омельченко, менеджер представительства ASUS в Ук­ра­и­не, ак­цен­ти­ро­вал вни­ма­ние на про­из­во­ди­тель­нос­ти RAID-массива NVMe-накопителей: по оцен­кам спе­ци­а­лис­тов ком­па­нии, ско­рость записи составляет 2406 MBPS, чтения — 5526 MBPS.

Из презентации мобильной рабочей станции ASUS ProArt StudioBook

«Компостер» решил проверить, что с про­из­во­ди­тель­но­стью дисковой подсистемы ProArt StudioBook на самом де­ле?

Об организации RAID-массива

RAID-массив ноутбука ASUS Pro­Art Studio­Book построен с использованием технологии Intel Rapid Storage, поэтому его мож­но считать программным очень условно — за его формированием отвечает цент­раль­ный про­цес­сор, а директивы на объединение накопителей в Stripe генерируются на этапе выполнения POST. Для это­го в настройках UEFI BIOS в ме­ню CPU/PCH Storage Configuration есть соответствующая опция. Несмотря на то, что мобильный Xeon располагает лишь под­мно­же­ст­вом фун­к­ци­о­наль­но­с­ти, призванной по­вы­сить про­из­во­ди­тель­ность RAID-массивов, ин­тел­лек­ту­аль­ные воз­мож­но­с­ти примененных NVMe-на­ко­пи­те­лей наряду с оп­ти­ми­за­цией драй­ве­ров и прошивки, сыграли важную роль в достижении весь­ма неплохих ре­зуль­та­тов.

Установки для формирования RAID-массива выполняются в UEFI Setup

 

Вместе с тем, RAID0 с че­ре­до­ва­ни­ем пол­но­стью ап­па­рат­ным считать тоже не получится: фун­к­ци­о­наль­ность мас­си­ва во мно­гом оп­ре­де­ля­ет­ся про­г­рам­мным обес­пе­че­ни­ем. По умолчанию Windows 10 на Pro­Art Studio­Book поставляется без указанного софта — и дисковая подсистема прекрасно без него справляется. Уст­ра­ним этот пробел в оснастке: ус­та­но­вим драйвер технологии хранения Intel RST.

Пользовательский интерфейс Intel RST предлагает механизм управления политиками кэширования RAID-массива: от полного запрета до максимально производительного Write Through

 

Пользовательский интерфейс Intel RST преподносит большой сюрприз: оказывается, что из операционной сис­те­мы до­ступ­но уп­рав­ле­ние по­ли­ти­ка­ми кэ­ши­ро­ва­ния. Несмотря на то, что на приведенном скрин­шо­те вы­бран те­о­ре­ти­че­ски са­мый про­из­во­ди­тель­ный из доступных метод Write Through, по умол­ча­нию кэ­ши­ро­ва­ние от­клю­че­но (Off). Тем лучше! У нас есть шанс снять метрики производительности каждого из них, за ис­клю­че­ни­ем недоступного пока Write Back.

Производительность и кэширование

Оценку производительности RAID0-массива в ноутбуке Pro­Art Studio­Book выполним с помощью соб­ст­вен­но­го про­г­рам­мно­го продукта — утилиты NIOBench. Тестовым пат­тер­ном будет файл 1GB, заполненный слу­чай­ны­ми данными, аппаратно сге­не­ри­ро­ван­ны­ми процессорной инструкцией RDRAND. Всякий раз ис­пы­та­ния вы­пол­ня­ют­ся 100-кратным повторением записи и чтения такого пат­тер­на в сценарии Unbuffered native.

Кроме того, Unbuffered native сводит на нет влияние буферизации и кэ­ши­ру­ю­щих алгоритмов опе­ра­ци­он­ной сис­те­мы, ос­тав­ляя место для маневра только API-механизмам в процедурах обмена с RAID-массивом. Дру­ги­ми словами, есть на­деж­да, что в нативном сценарии мы оценим влияние политик кэ­ши­ро­ва­ния, ис­поль­зу­е­мых Intel RST, исключив все про­чие вы­со­ко­у­ров­не­вые способы ускорения доступа к дисковой под­сис­те­ме.

RAID0: кэширование запрещено

В Cache mode: Off принципиально то, что скорость чтения превышает 4 GBPS — теоретический лимит для од­но­го уст­рой­ст­ва PCIe 3.0 x4. Пре­вы­ше­ние этого лимита, при условии, что кэ­ши­ро­ва­ние в сис­тем­ном ОЗУ на уровне ОС/JVM в сценарии Unbuffered native не применяется, может служить своеобразным ин­ди­ка­то­ром мас­ш­та­би­ру­е­мос­ти RAID-мас­си­ва.

Итоговый скриншот NIOBench в режиме тестирования Cache mode: Off

 

Созвучно данным, на которые опирается в своей пре­зен­та­ции ASUS: чтение в 5244MBPS немного уступает за­яв­лен­ным 5526MBPS, но запись с лихвой ком­пен­си­ру­ет этот недостаток — 2979MBPS против 2406MBPS у ASUS. Для про­г­рам­мно­го RAID совсем неплохо!

Не следует забывать, что вы­со­ко­у­ров­не­вые NVMe-устройства снабжены довольно мощными автономными про­цес­со­ра­ми ввода-вывода, интеллект которых, если им правильно распорядится (в частности, применив гиб­кую аппаратную поддержку фраг­мен­ти­ро­ван­но­го доступа для DMA), может сыграть свою положительную роль в приближении свойств дискового массива от программного к аппаратному RAID. Оценим его про­из­во­ди­тель­ность при от­клю­чен­ном кэ­ши­ро­ва­нии в динамике, построив график по итоговому рапорту NIOBench:

Производительность RAID-массива с чередованием в ноутбуке ASUS Pro­Art Studio­Book W700G2T при отключенном в Intel RST кэшировании данных

Производительность RAID0 ноутбука ASUS Pro­Art Studio­Book: кэширование запрещено

Как видим, операцию чтения удалось рас­па­рал­ле­лить между «процессорным» и «чип­сет­ным» PCIe-портами, но на пу­ти дан­ных от Sam­sung PM981 к системному ОЗУ лежит достаточно много промежуточных звеньев: южный мост (PCH) и шина системной логики (DMI). На DMI-трафик есть и другие претенденты — это уст­рой­ст­ва, входящие в состав PCH, а также к нему подключенные. Возможно, в этом и состоит одна из причин пе­ри­о­ди­че­ских про­ва­лов про­из­во­ди­тель­но­с­ти. Если бы оба накопителя были подключены к PCIe-портам про­цес­со­ра, есть надежда, что скорость была бы ближе к 8 GBPS, хотя ограничения самих накопителей так­же никто не отменял.

Кэшируется только чтение

Режим кэширования Read only (известный также как Write around) полезен исключительно тем, что игнорируя запись, бу­фер­ные ресурсы выделяет только операциям чтения, тем самым повышая их производительность при пов­тор­ных об­ра­ще­ни­ях к часто вос­тре­бо­ван­ным данным. Запись выполняется прямо в RAID-массив, ми­нуя про­ме­жу­точ­ные хра­ни­ли­ща.

Итоговый скриншот NIOBench в режиме тестирования Cache mode: Read only

 

Предполагая участие кэш исключительно в операции чтения, в данной ситуации мы получаем еще более впе­чат­ля­ю­щие ре­зуль­та­ты. По чтению — 5700MBPS против 5526MBPS, по записи — те же 2979MBPS против 2406MBPS. При­чи­ны, по которым скорость записи не меняется, следуют из самой природы Read only.

Производительность RAID-массива с чередованием в ноутбуке ASUS Pro­Art Studio­Book W700G2T при кэшировании в Intel RST только чтения

Производительность RAID0 ноутбука ASUS Pro­Art Studio­Book: кэширование только чтения

Забегая вперед, отметим, что Cache mode: Read only оказался лучшим и самым про­из­во­ди­тель­ным из ре­жи­мов кэ­ши­ро­ва­ния, предлагаемых Intel RST. Его максимумы более случайны в поле итераций, в то время, ког­да от­каз от кэ­ши­ро­ва­ния и режим Write Through локализуют лучшие показатели к концу теста. Но об этом ни­же.

Кэширование сквозной записи

Казалось, лучшие годы кэ­ши­ро­ва­ния методом сквозной записи остались в 90-х. Применение Write Through в на­шем слу­чае оз­на­ча­ет, что в процессе кэ­ши­ро­ва­ния нет отложенной записи — при­ло­же­ние, выполняющее запись узнает о ее завершении только после того, как завершиться перенос данных в RAID-массив. Другими словами, Write Through кэ­ши­ро­ва­ние, ко­то­рое по определению не вы­пол­ня­ет­ся в фоновом режиме, можно счи­тать одной из форм бу­фе­ри­за­ции.

Итоговый скриншот NIOBench в режиме тестирования Cache mode: Write through

 

Его влияние на про­из­во­ди­тель­ность не впечатляет: скорость чтения осталась прежней, что и понятно, а ско­рость за­пи­си пусть и не­зна­чи­тель­но, но снизилась.

ерер

Производительность RAID0 ноутбука ASUS Pro­Art Studio­Book: Write Through кэширование без отложенной записи

Остается предположить, что внутренние аппаратные ресурсы и возможности NVMe-накопителей (в общем слу­чае это встро­ен­ный DRAM-буфер и SLC-кэ­ши­ро­ва­ние) так повлияли на результат. Странно, что ал­го­рит­мы Intel RST в кэ­ши­ро­ва­нии со сквозной записью не стали приятным дополнением к интеллекту RAID-мас­си­ва и фун­к­ци­о­наль­но­с­ти, ин­кап­су­ли­ро­ван­ной внутри драйверов накопителей на уровне ядра.

За скобками

Стоит честно признать, что ряд различий Read only и Write through программного обеспечения Intel Rapid Stor­age Tech­no­lo­gy остались за скобками, поскольку относятся к опциям программного кэ­­ши­­ро­­ва­­ния, по­дав­ля­е­мо­го в сце­на­рии Un­buff­er­ed native утилиты NIOBench. В реальности, выигрыш от RAID-массива с че­ре­до­ва­ни­ем может быть более су­щест­вен­ным.

Ограничения процессоров Intel, используемых в ноутбуках ASUS серии Pro­Art Studio­Book, не позволяют стро­ить од­но­род­ные в смысле PCI Express дисковые массивы. Есть основания предполагать, что платформа толь­ко выиграла, если бы оба NVMe-на­ко­пи­те­ля по­дкл­юча­лись напрямую к PCIe-шине процессора.

Исходя из сказанного, не стоит забывать, что Intel RST остается для тес­ти­ров­щи­ков черным ящиком. В об­щем слу­чае, ал­го­рит­мы кэ­ши­ро­ва­ния способны балансировать обмен данными в системах, где кэ­ши­ру­е­мое и кэ­ши­ру­ю­щее уст­рой­ст­ва — это (условно) «быстрый» и «медленный» накопители, а не только RAID-мас­сив и DRAM.