Alacritech 1000Ѕ1 Server and Storage Accelerator

Сергей Самохин

Технология ускорения

Обмен с памятью

Прерывания

Обмен по шине PCI

Заключение

Технология ускорения

Етот адаптер построен на основе контроллера Alacritech IPP 1000Ѕ1. Данный контроллер, наряду с взаимодействием с интерфейсом PCI и сетью Ethernet (уровень MAC), реализует фирменную технологию SLIC (session-layer interface card — интерфейсная карта уровня сессии; рис. 1). В основе технологии лежит метод TOE (TCP offload engine — механизм разгрузки TCP). Таким образом, большая часть стека TCP/IP (от физического до уровня сессии, всего пять из семи) выполняется самим адаптером.

Однако стек протоколов TCP/IP занимает в ОС FreeBSD более 20 тыс. строк кода на C. Понятно, что реализовать не слишком дорогую БИС, выполняющую все протоколы на аппаратном уровне, невозможно. Поэтому часть работы по-прежнему выполняет центральный процессор. На него возлагаются обязанности по установлению и разрыву соединения, по обработке ошибок и пакетов, пришедших вне очереди. Основную же, рутинную часть работы берет на себя контроллер, установленный на сетевой карте.

Функции контроллера физического уровня выполняет БИС 88E1000-RJJ производства фирмы Marvell. На плате также расположены три БИС SDRAM HY57V64322OCT-6, представляющие собой 64 Мбит ОЗУ с организацией 16 Мбит Ѕ 4. Для буферизации пакетов выделено 16 Мбайт памяти.

Итак, коренное улучшение показателей адаптера было достигнуто путем перемещения обработки сетевых протоколов с серверной процессорной подсистемы на заказную БИС, называемую Internet Protocol Processor (IPP, процессор протокола Интернет). Это БИС IPP 1000Ѕ1, установленная в адаптере.

Концепция разгрузки центральной процессорной подсистемы не нова. Примерами являются SCSI-адаптеры и графические ускорители.

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

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

В начало В начало

Обмен с памятью

Обмен с памятью включает множество различных потоков, принадлежащих разным процессам, таким как различные сервисы операционной системы, в том числе обработка сетевых протоколов, и приложениям. Применение обычных сетевых адаптеров приводит к высокой нагрузке на подсистему памяти, что дополнительно замедляет работу всей системы. Снижение эффективности может быть достаточно большим, даже для процессоров Xeon с увеличенным размером кэш-памяти. Так, один запрос на передачу 64 Кбайт данных способен испортить все содержимое кэш-памяти первого уровня и примерно 20% второго. Это снижает процент попаданий для прикладных и системных процессов и заставляет производить обмен с основным ОЗУ, что происходит примерно в десять раз медленнее.

Технология SLIC предусматривает передачу данных за один прием (рис. 2), что сокращает количество обращений к памяти, высвобождая производительность этой подсистемы для других процессов.

Обработка принятого пакета по обычной технологии включает запись из сетевого адаптера в буфер драйвера 1, чтение из буфера драйвера в кэш-память 2, чтение из буфера TCP/IP в кэш-память 3, запись из кэш-памяти в буфер TCP/IP 4, повторное чтение из буфера TCP/IP в кэш-память 5, чтение из места окончательного получения 6 и, наконец, запись по месту назначения. Современные технологии, предусмотренные спецификацией NDIS-5, могут исключить необходимость в шагах 2, 3, и 4. Поскольку в адаптерах Alacritech предусмотрено выполнение обработки протокола TCP/IP непосредственно на плате, то обработка принятого пакета требует только одного шага: записи пакета по месту назначения (минуя, естественно, кэш-память, поскольку запись идет непосредственно в память из шины PCI). Таким образом, минимизируя количество обращений к памяти, необходимых для обработки стека TCP/IP, технология SLIC высвобождает ресурсы подсистемы памяти и повышает общую производительность сервера.

В начало В начало

Прерывания

Любой процессор способен выполнять только одну задачу за один такт. Когда периферийному устройству требуется обслуживание, оно выставляет запрос на прерывание. В этом случае процессор выполняет процедуру сохранения контекста (записывает регистры в стек текущей задачи) и начинает процесс обработки поступившего запроса. Обработка прерываний от многочисленных устройств ввода-вывода занимает в итоге значительную часть процессорного времени. Не секрет, что обычные сетевые адаптеры являются источником многочисленных прерываний, которые еще должны пройти по не слишком быстрой шине PCI. Следует также отметить, что обработка прерываний в значительной мере изменяет состояние кэш-памяти.

В качестве примера можно сравнить передачу запроса размером 64 Кбайт при помощи обычного адаптера и адаптера Alacritech. На рис. 3 этот процесс изображен как передача 44 пакетов по 1500 байт каждый. Используя консервативную оценку, можно ожидать одно прерывание на четыре пакета при традиционной технологии, то есть всего 11. При использовании технологии SLIC на передачу того же количества данных потребуется только два прерывания.

В начало В начало

Обмен по шине PCI

Проблемы, возникающие при обмене по шине PCI, сходны с проблемами, возникающими при обмене по шине памяти. Различие здесь только в том, что обмен по шине PCI происходит медленнее. Обычно сетевые адаптеры производят три цикла активности по шине PCI (рис. 4): чтение из кольца описателей 1, запись из адаптера в буфер драйвера 2 и запись из адаптера в кольцо описателей 3. Технология SLIC позволяет обойтись одним циклом.

Таким образом, применение технологии SLIC, то есть непосредственная обработка протоколов TCP/IP на плате, позволяет значительно разгрузить ресурсы сервера. Измерения, проведенные в тестовой лаборатории «КомпьютерПресс», показывают, что при повышенном трафике (1700 Мбит/с в дуплексном режиме) утилизация процессора составляет всего 35%. Это дает основания полагать, что даже на двухпроцессорном сервере масштаба рабочей группы можно установить до двух адаптеров, которые будут работать без снижения производительности.

В начало В начало

Заключение

Данный адаптер также позиционируется для систем SAN и NAS с применением технологии iSCSI. Работа в этом направлении ведется сейчас совместно с IBM.

В стандартный комплект поставки входят драйверы для Windows и Linux, однако имеется и SDK (Software Development Kit — набор для разработки ПО), который позволяет скомпилировать драйвер для любой ОС. В заключение хотелось бы с сожалением отметить, что в настоящий момент адаптеры Alacritech на российском рынке отсутствуют. В результате остается пустым важный сегмент рынка — гигабитные адаптеры, которые при объединении позволяют реально получить увеличение производительности свыше 2 Гбит/с. Более подробную информацию можно получить на сайте компании http://www.alacritech.com/.

КомпьютерПресс 3'2003