Computational storage. Первые ласточки

Идея переноса части обработки хранимых данных с центрального процессора на собственно хранилище и даже глубже – на отдельный накопитель начинает свое движение в массы.

   Когда-то, на одной из очередных презентаций производителя видеокарт, который с гордостью перечислял вычислительные возможности ее "нутра" - количество ядер графического процессора, параллельных потоков, скорости и объема локальной оперативной памяти... (ничего не напоминает???) у автора родился резонный вопрос: "А центральный процессор к вашей видеокарте вообще нужен ли? Может - ну его?.."
Идея витала в воздухе, вскоре графические ускорители (GPU) для увеличения вычислительной мощности системы не делал разве что ленивый.

Процессор работает – накопитель спит!

Конечно же, это утрированная донельзя ситуация.
Но она в некоторой степени отражает реальный процесс хранения-обработки данных. Храним данные для чего? Для обработки. Где? На накопителях в хранилище. А обрабатываем данные где? В центральном процессоре, куда эти данные еще надо доставить, а потом (результат обработки) вернуть в хранилище.
Центральный процессор трогать не будем – считаем, что он загружен постоянно и по делу, а вот чем занимается накопитель, пока процессор обрабатывает данные? Ничем! Или – если накопителей в вычислительной системе несколько и в данный момент требуются данные, находящиеся лишь в одном из них – что делают не занятые в процессе? Греют воздух!

Возникает резонное желание перенести по возможности часть функций по обработке данных с центрального процессора на периферию – непосредственно на накопители, благо – возможности есть. Понятно – что круг задач ограничен довольно серьезно. Это и технологические ограничения – вычислительную мощность локального обработчика сильно не раздуешь, и ограничения, обусловленные архитектурой вычислительной системы или хранилища, но потенциал у идеи есть!
Попутно кардинально сокращаются накладные расходы на пересылку данных туда-сюда. Второстепенные задачи обрабатываем внутри, передача вовне – только по делу.

Почему сейчас?

Сошлись во времени несколько технологий.
С одной стороны, достаточно отшлифованная и уже широко распространенная технология производства дает динамичное и стабильное снижение стоимости SSD накопителей.
С другой стороны, так же динамично и стабильно развивается направление процессоров на базе ARM. Площадь кристалла маленькая, “жрет” мало, считает быстро – что еще нужно для счастья? Процессор, хоть и ARM – универсальное решение (какую задачу загрузил – ту и выполняем), а можно сделать еще и специализированный чип – ASIC – на одну или несколько определенных задач, который при определенном объеме заказа будет стоить всего несколько десятков долларов.
Объединив возможности и преимущества хотя бы этих двух технологий, мы получаем качественно новый вид хранения. Интеллектуальный!
Пока еще нет устоявшегося адекватного перевода термина на русский, потому будем называть технологию не очень корректным “лобовым переводом” – “вычислительное хранение” (Computational storage).
Как уже сообщалось – под развитие технологии создана специальная рабочая группа при SNIA.

Только SSD!

Речь идет о встраивании вычислителя в SSD накопители. Оно и понятно – у флеш-накопителя нет задержек на поиск данных. Ему не надо позиционировать головки, ждать – пока диск прокрутится и данные “пролетят” под головкой, перепозиционировать головки для следующего запроса… Если вычислительные функции попытаться впихнуть в дисковый накопитель – он только и будет заниматься переключением между полезной нагрузкой и фоновыми задачами.

Что именно будем вычислять?

Пока неизвестно. Первое – что приходит в голову:

  • Что-нибудь индексировать фоном. Индексированием файлов для последующего ускорения поиска по ним сейчас занимается операционная система. Как правило – в самый неподходящий момент, что безумно раздражает.
  • Индексировать NoSQL базу данных типа ключ-значение. Уже есть стартапы, которые планируют этим заниматься. Тут большой вопрос в том – расположено ли все на одном накопителе или распределено по нескольким (в массиве). Если на одном – все без затей, прочесывай файл и составляй таблицу ключей. Если база распределена – все частные таблицы надо как-то сводить воедино.
  • Шифровать. Ну, накопители с встроенным шифрованием уже давно выпускаются и на существующей элементной базе. Если только не стоит задача обработки доверенным шифровальщиком, который можно будет подгружать, в отличие от непонятно кем (вернее – все понятно, потому и не подходит!) предустановленного.
  • Перенести на накопитель часть служебного функционала программно-определяемого хранилища.
  • Сжатие.
  • Дедупликация данных.

На что в реальности хватит фантазии и что из придуманного смогут воплотить в жизнь – жизнь покажет..

Первопроходцы уже начали появляться. В частности:
Cтартап NGD Systems (https://www.ngdsystems.com) нацелился в область обработки больших данных и гиперскалярных датацентров.
Global Dots (https://www.globaldots.com/solutions/hardware/computational-storage/) сфоркусирован на базах данных и распределенных хранилищах (Hadoop).