SSD диски: новые требования к платформам

SSD диски: новые требования к платформам

Переход от магнитных дисков к SSD-уст­рой­ст­вам, по­яв­ле­ние ин­тер­фей­с­­ной ар­хи­тек­ту­ры NVM Express, при­шед­шей на сме­ну кон­т­рол­ле­ру AHCI, под­клю­че­ние на­ко­пи­те­ля не­по­сред­ст­вен­но к ши­не PCI Express — вот пе­ре­чень ре­во­лю­ци­он­ных из­ме­не­ний, про­и­зо­шед­ших в ин­дус­т­рии сис­тем хра­не­ния дан­ных за по­след­нее вре­мя. Жест­кий диск пе­ре­ста­ет быть «уз­ким мес­том» в це­поч­ке пе­ре­да­чи ин­фор­ма­ции. Раз­ра­бот­чи­кам UEFI-ин­тер­фей­са и пер­со­наль­ных плат­форм при­хо­дит­ся «под­тя­ги­вать» сис­тем­ную ар­хи­тек­ту­ру под но­вые тре­бо­ва­ния, обу­слов­лен­ные эти­ми об­сто­я­тель­ст­ва­ми.

Слуга как минимум двух господ

Как известно, после интеграции контроллера оперативной памяти в состав CPU, мультипроцессорная платформа ав­то­ма­ти­че­ски становится, NUMA-системой или системой с неоднородным доступом к памяти. Аббревиатура NUMA (Non-Uniform Memory Access) в данном контексте означает, что каждый из процессоров располагает собственным кон­т­рол­ле­ром памяти, доступ к которому осуществляется быстрее, чем к памяти соседнего процессора. С учетом этого оп­ти­ми­зи­ру­ет­ся программное обеспечение. Как правило, предметом такой оптимизации является взаимодействие центрального процессора с оперативной памятью. Вместе с тем, работа bus master устройств, подключенных к шинам ввода-вывода и самостоятельно передающих данные, также требует оптимизации с учетом специфики NUMA. Аспект, на котором мы остановимся, имеет прямое отношение к системам хранения данных и должен учитываться раз­ра­бот­чи­ка­ми опе­ра­ци­он­ных сис­тем и драй­ве­ров.

Подключение SSD диска к системе с двумя и более физическими процессорами
Рис.1. Подключение SSD диска к системе с двумя и более физическими процессорами

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

Без обиняков

Технология Direct Cache Access или DCA, позволяет записывать информацию, передаваемую bus-master устройством, непосредственно в кэш-память процессора. Чтобы понять, о чем идет речь, вспомним, как происходит пе­ре­да­ча дан­ных в «обычной» платформе, без использования DCA. Устройство (в нашем примере контроллер жесткого диска) после получения от драйвера стартовых параметров: номера сектора и адреса буфера, способен самостоятельно выполнить передачу информации в оперативную память без вмешательства программы на фазе передачи данных. После завершения операции, центральный процессор будет проинформирован о результатах с использованием механизма аппаратных прерываний.

Заметим, что контроллер кэш-памяти отслеживает все операции записи в оперативную память. И если кэшированная информация изменилась, соответствующие строки кэш нужно объявить недостоверным (Cache Invalidation). Иначе вмес­то данных, записанных в память внешним устройством, процессор «увидит» в кэш-памяти их устаревшую копию. Такая схема взаимодействия с периферией не оптимальна: сначала нужно получить информацию о перезаписанных адресах и объявить недостоверным содержимое кэш; затем, обнаружив отсутствие требуемой информации в кэш, процессор читает оперативную память.

При использовании DCA, данные, поступившие от внешнего устройства, попадают непосредственно в кэш, и в по­сле­ду­ю­щем доступе к ним, чтение из оперативной памяти не потребуется.

Опция для управления DCA в CMOS Setup серверной платформы
Рис.2. Опция для управления DCA в CMOS Setup серверной платформы Intel S2600WT

Опция Direct Cache Access доступна в CMOS Setup. Стоит обратить внимание на комментарий, визуализируемый при ее выборе из меню: там дословно говорится, что в кэш-памяти размещаются данные, поступающие от периферийных устройств — «placing data from I/O devices directly into the processor cache».

Контроллер DMA и технология Intel QuickData

Технология Intel QuickData предполагает использование устройства DMA engine (Direct Memory Access или по-но­во­му Da­ta Movement Acceleration) в составе процессора. Этот узел обслуживает передачу информации между оперативной па­мя­тью и периферией. Справедливости ради отметим, что такой подход начал практиковаться еще во времена сис­тем­ной логики Intel 5000 и модулей Fully Buffered DIMM (FB DIMM) и чаще упоминается в контексте подключения ин­тел­лек­ту­аль­ных контроллеров локальной сети.

Узел DMA engine не имеет ничего общего с Legacy-контроллерами DMA Intel 8237, основанными на архитектурных прин­ци­пах шины ISA. Но избежать аналогий не удастся: «старый» и «новый» контроллеры предполагают цен­тра­ли­зо­ван­ную модель выполнения операций с единым контроллером DMA, обслуживающим запросы периферийных ус­т­ройств на прямой доступ к памяти (DRQ или DMA Request), а также программно инициированные запросы на ко­пи­ро­ва­ние бло­ков и заполнение блоков константой. В то время, как два последних десятилетия господствует де­цен­т­ра­ли­зо­ван­ная модель, характерная для большинства PCI и PCIe-устройств. Она предполагает способность пе­ри­фе­рий­ного устройства самостоятельно инициировать шинные циклы и взаимодействовать с оперативной памятью (bus mas­ter ca­pa­bi­li­ty), что означает наличие в составе каждого устройства собственного контроллера DMA.

DMA Engine входит в состав процессора, в то время как Legacy контроллер DMA, аналогичный двум каскадно-вклю­чен­ным микросхемам Intel 8237 находится в микросхеме PCH. Современная платформа может содержать кон­трол­ле­ры обоих типов.

Расположение узла DMA Engine на блок-схеме процессора Intel Xeon E5 V3
Рис.3. Расположение узла DMA Engine (Device 4) на блок-схеме процессора Intel Xeon E5 V3

Direct Cache Access и производительность

Как зависит производительность платформы в целом и производительность твердотельного диска в частности от ус­та­нов­ки Direct Cache Access? Проделаем небольшой эксперимент, используя в качестве тестовой платформы Intel S2600WT с двумя процессорами Xeon E5-2670 v3 частотой 2,30 GHz. Оперативная память будет задействована так, чтобы обеспечить 4-х канальный режим доступа. Общий ее объем составляет 64 ГБайт и формируется с помощью регистровых модулей KVR21R15S4/8 (производство Kingston). Дисковая подсистема — SSD-накопитель от Intel ем­ко­стью 800 Гбайт.

SATA Express накопитель DC P3600 для шины PCI Express емкостью 800 Гбайт
Рис 4. NVM Express накопитель DC P3600 для шины PCI Express емкостью 800 Гбайт

Скорость доступа глазами HD Speed

Главный вывод — скорость обмена данными с SSD-диском в процессе работы тестовой утилиты HD Speed v1.7.8.107 не зависит от режима Direct Cache Access. Попытка измерить пи­ко­вую скорость обмена также не выявила пре­и­му­ще­ств DCA-режима в силу того, что сопряжена с нестабильностью получаемых результатов.

Слева результат HD Speed со стандартными установками CMOS Setup, справа — с применением технологии Direct Cache Access

Рис 5. Слева результат HD Speed со стандартными установками CMOS Setup, справа — с применением технологии Direct Cache Access

Если судить субъективно, то при последовательном чтении данных с SSD-диска результаты у DCA-режима хуже, а пи­ко­вая скорость обмена — немного лучше, чем при использовании традиционной политики обслуживания кэш-па­мя­ти.

Производительность платформы по оценкам LinX

Выйти из патовой ситуации мы попытались с помощью утилиты LinX v0.6.5. Основанная на алгоритмах Intel, она дает оценку общей производительности платформы в гигафлопсах.

Слева результат LinX со стандартными установками CMOS Setup, справа — с применением технологии Direct Cache Access

Рис. 6. Слева результат LinX со стандартными установками CMOS Setup, справа — с применением технологии Direct Cache Access

Усреднив показатели можно заключить, что производительности платформы Intel S2600WT после включения DCA-режима ухудшается. Полученный результат позволил сформулировать ряд гипотез, касающихся особенностей при­ме­не­ния Direct Cache Access.

Резюме

На сегодня не существует открытых источников, где декларировалась бы поддержка SSD-накопителями 3600-й серии режима доступа в кэш-память. Анализ конфигурационных регистров также не позволяет подтвердить этот факт. Ре­зуль­та­ты тестирования свидетельствуют, что, скорее всего, поддержка Direct Cache Access не имплементирована в кон­т­рол­лер твердотельного накопителя DC P3600.

Некоторая потеря производительности в DCA-режиме, по-видимому, связана с тем, что выполнение теста в среде Win­dows сопряжено с нерациональным заполнением кэш-памяти при работе bus-master устройств, так как технология до­сту­па к кэш-памяти уже применяется в сетевых адаптерах. Думается, что ее область применения пока этим и ог­ра­ни­че­на.

На повестке дня — расширение функциональности NVMe-устройств, хотя бы в силу того, что, в отличие от магнитных носителей, автономное кеширование либо теряет смысл либо требует иной реализации. Еще одна актуальная задача состоит в оценке влияния Direct Cache Access на производительность ethernet-контроллеров, но это уже выходит за рамки нашей статьи.