В период интернет-бума конца 1990-х и начала 2000-х сетевые приложения работали на Unix-серверах, которые заменили ультратонкие стоечные серверы формфактора 1U или 2U (так называемые "пицца"-серверы), а затем серверы-лезвия, серьезную альтернативу которым, возможно, составят микросерверы. Их предназначение — доставка контента, выполнение не слишком тяжелых приложений, обработка почты, SaaS. По прогнозам, через четыре-пять лет микросерверы займут примерно 10% серверного рынка.

Вот уже более 10 лет виртуализация представляется как основное средство для оптимизации использования компьютерных ресурсов — систем хранения, коммутации, серверов; и действительно, пулы, состоящие из виртуальных машин, можно использовать эффективнее, чем отдельные физические серверы. В представлении подавляющего большинства специалистов виртуализация и облачные ЦОД неразрывны, а иначе как адаптировать существующие серверы к интернет-приложениям? Однако становится очевидным, что деление крупных гранул (узлов на мощных процессорах) на меньшие — виртуальные машины — обычно производится без учета критически важного сегодня энергетического фактора. Главная причина низкой эффектности нынешних серверов в том, что обычные нагрузки, характерные для Интернета, не используют до конца функционал мощных процессоров. Может, стоит отказаться от мощных процессоров и создавать мелкие энергетически выгодные серверы — микросерверы, что-то вроде рабочих муравьев, собирая из них масштабируемые ЦОД-муравейники? Понятно, что такой подход не может претендовать на универсальность, а рассчитан на ограниченный класс нагрузок.

Массив «хреновых» узлов

Раньше других научные разработки по микросерверам начали в лаборатории Parallel Data Laboratory Университета Карнеги-Меллона. В 2008 году ее сотрудники опубликовали результаты исследований, целью которых было создание мощного кластера, состоящего из узлов с минимальным потреблением энергии. Итогом этой деятельности стала оригинальная конструкция, которую можно сравнить с многоклеточным организмом, где узлы кластера более тесно функционально интегрированы, чем это принято в традиционных системах, и имеется оригинальная система управления этими узлами, построенными на процессорах ARM. Для новой архитектуры, чтобы подчеркнуть наиболее важное ее свойство, авторы не без юмора предложили название FAWN (Fast Array of Wimpy Nodes) — "быстрый массив из хреновых узлов". Два года спустя начинающая компания SeaMicro представила сервер SM10000 на 512 процессорах Atom, в котором реализованы подходы, близкие к архитектуре FAWN. Компактный, но производительный сервер так поразил специалистов, что его нарекли "атомной бомбой", причем не только по созвучию, но скорее в предположении о его возможном взрывном воздействии на сложившуюся серверную экосистему. И вот теперь с большим интересом ожидаются результаты работы еще одной малоизвестной компании Calxeda, которая в свою очередь готовит нечто близкое к FAWN на базе процессоров ARM. Но дело не ограничивается только начинаниями нескольких стартапов — в ряде проектов, финансируемых агентством DARPA по программе UHPC, тоже явно прослеживается идея FAWN.

DARPA UHPC — дорога к экзафлопсам

В середине 2010 года появились сообщения о начале работ по программе DARPA UHPC, предусматривающей создание принципиально новых высокопроизводительных компьютеров экзафлопсного уровня.

Сама архитектура FAWN в полном объеме еще не вышла из стадии эксперимента, но принципы этого проекта раскрыты достаточно детально, и стало проще понять, в чем содержание наметившейся тенденции в создании малопотребляющих микросерверов. Наиболее полно устройство и потенциал FAWN представлены в статье "Задачи и возможности для эффективных вычислений с использованием FAWN" (Challenges and Opportunities for Efficient Computing with FAWN), написанной большой группой авторов из Университета Карнеги-Меллона, и стоит обратить особое внимание на то, что в авторском коллективе принимают участие специалисты из корпорации Intel.

Изначально кластеры FAWN задумывались для интернет-приложений, преимущественно ориентированных на чтение со сложностью, ограниченной первичными ключами (primary-key). Такие нагрузки характерны для социальных сетей или блогов, где выполняется огромное количество запросов к объектам размером в десятки или сотни байтов. Схожие условия наблюдаются на сайтах электронной торговли типа Amazon.com и их аналогах. Оригинальность соображений, которыми руководствовались авторы FAWN, состоит в комплексном подходе — в своем стремлении снизить энергопотребление они сосредоточились не только на процессорах, но и на всех узлах. В дополнение к экономичным процессорам снижение потребления энергии может обеспечить системная архитектура, хорошо соответствующая типу нагрузки.

Почему именно применение маломощных процессоров снижает тепловые потери, объясняется просто — увеличение мощности в пересчете на одну команду возникает из-за использования кэшей, систем для предсказания переходов и спекулятивных вычислений. Эти средства повышают производительность на определенных приложениях, но практически не используются и не ускоряют скорость выполнения основных команд, которые составляют основную массу в нетребовательных к счету интернет-приложениях. Для их выполнения вполне достаточно простейшего набора команд и ограниченной функциональности — отказ от опций приводит к тому, что энергетический показатель "количество выполненных команд в пересчете на один джоуль" повышается в четыре-пять раз, с 500 в мощном процессоре до 2000 и более в "хреновом". Хороший баланс системы в целом достигается за счет использования накопителей на базе флэш-памяти (Solid State Drive, SSD) вместо жестких дисков. Энергетическая выгода не только прямая (SSD потребляют меньше обычнх дисков), но и в том, что известное узкое горло между дисками и процессором приводит к недоиспользованию мощностей процессоров и косвенным образом к тепловым потерям.

Арифметическое сокращение потребления не снимает всех проблем — требуется новая системная организация. В FAWN ключевую роль в создании многоклеточного организма играет распределенная хеш-таблица FAWN-DHT (Distributed Hash Table). На основе подобных таблиц строятся децентрализованные распределенные системы, обеспечивающие поиск данных по принципу таблицы хешей, в которых данные, хранящиеся в DHT, имеют имя, значение и каждый участвующий узел может искать значение, ассоциированное с конкретным именем, что позволяет масштабировать DHT и отслеживать добавление или удаление узлов, а также ошибки в их работе. Известно, что DHT успешно используются для построения комплексных сервисов, распределенных файловых систем, пирингового распространения файлов и в системах мгновенного обмена сообщениями.

Рис. 1. Архитектура FAWN

В состав архитектуры FAWN (рис. 1) входят следующие основные компоненты:

  • обычные узлы на входе и рабочие (wimpy) узлы;
  • система управления, реализующая DHT, использующая команды put и get для оперирования данными и управляющая распределением узлов;
  • средства для работы с данными на каждом из рабочих узлов.

На рис. 2 представлена функциональная схема FAWN. Для взаимодействия клиента с FAWN используется интерфейс с командами get и put. Если запросы достаточно просты, то они могут быть обработаны непосредственно на входных серверах без обращения к рабочим. Рабочие узлы связывает сложный алгоритм взаимодействия, в основе которого лежит деление физических узлов на виртуальные, а также кольцевая организация, при которой виртуальные узлы разных физических узлов резервируют друг друга, образуя структуры, названные группами реплицирования. Команды get и put с использованием 160-разрядных идентификаторов адресуются в такие группы. Резервирование делает незаметным выход из строя того или иного узла. Для повышения скорости обмена используется двухуровневая система кэширования, где нижний уровень располагается на самом узле, а верхний объединяет отдельные узлы.

 

Рис. 2. Функциональная схема FAWN

 

В исследовании, выполненном в PDL, заметное внимание уделено организации внутренних баз данных FAWN, алгоритмам кэширования и многому другому, но более интересны вопросы, связанные с областью практического применения компьютеров с архитектурой FAWN. Чтобы ответить на них, авторы предложили следующую таксономию нагрузок:

  • требующие большого объема ввода/вывода;
  • отличающиеся большим объемом трафика между процессором и памятью;
  • критические по задержке и плохо распараллеливаемые;
  • требующие больших объемов памяти.

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

"Атомный" сервер

Компания SeaMicro была основана в 2007 году Эндрю Фелдманом, в прошлом директором по маркетингу компании Force10 Networks, специализирующейся на мощных кластерных коммутаторах и маршрутизаторах, и Гарри Лаутенбахом, дизайнером чипов из AMD. Двоих объединило осознание того, что ЦОД, построенные на сложных процессорах x64, RISC или Itanium, в силу их происхождения хорошо адаптированы к прогнозируемым нагрузкам, сложным приложениям, обслуживающим одну компанию, и в то же время их возможности не соответствуют переменным нагрузкам и требованиям к масштабированию, которые предъявляют многие современные нагрузки. И тогда им пришло в голову, что здесь подойдут относительно простые машины, но с гигантскими способностями к масштабированию. Итогом стало решение о выпуске специализированных машин класса data center appliance — серверов-кластеров SM10000 на 512 процессорах Intel Atom, объединенных виртуализованной коммутационной инфраструктурой. Это поколение серверов рассчитано на провайдеров сетевых сервисов, использующих хранилища данных в крупных ЦОД. Аналогичные решения готовят Dell, Tyan, Calxeda и ряд других компаний. Нечто подобное предлагали Fabric7, Liquid Computing и 3Leaf Systems, но им не хватило радикальности — они сохраняли верность мощным процессорам и классической архитектуре.

Компании SeaMicro удалось получить неплохое для стартапа финансирование из частных венчурных фондов и Министерства энергетики США по грантам, стимулирующим создание "зеленых" компьютеров. Фелдман объясняет благожелательность инвесторов следующим образом: "Мы предложили то, что не смогли другие. Энергетические проблемы ЦОД связаны прежде всего с тем, что недостаточно осознаны свойства новых нагрузок, они меньше и нестабильны, они постоянно пульсируют. Все качества современных процессоров, обеспечивающие им высокую производительность на определенных тестах, совершенно бесполезны в таких условия. Использовать их — это все равно что летать на космическом челноке в бакалейную лавку". SeaMicro ориентируется на нагрузки стиле Интернета, на поиск, на технологии MapReduce и Hadoop, на социальные сети, для которых достаточно производительности Atom. Но сокращение расхода электричества процессорами решает только часть проблем — чипсеты, память, сетевая инфраструктура потребляют не меньше, и SeaMicro отдала предпочтение стандарту PCI-Express, пакетной сети с топологией звезда, где узлы взаимодействуют между собой через среду, образованную коммутаторами, и при этом каждое устройство напрямую связано с коммутатором. В SeaMicro разработана специальная большая интегральная микросхема, виртуализующая доступ к дискам и Ethernet для каждого из узлов. Эта микросхема реализует топологию трехмерного тора (3D torus), аналогичную той, которую IBM разработала для BlueGene. Кроме того, SeaMicro применила программируемые логические матрицы (FPGA) для балансировки нагрузки.

Рис. 3. Трехмерный тор SM1000

Соответствие типу нагрузки в SM10000 обеспечивают две микросхемы. Одна предназначена для сбора процессоров Atom в многомерный тор с пропускной способностью 1,28 Тбит/с и обеспечения коммутации к каждому из ядер на скорости 2,5 Гбит/с (рис. 3). Она же выполняет функции сетевых контроллеров и контроллеров систем хранения данных, что упрощает работу операционной системы Linux на узлах и исключает необходимость в драйверах.

Вторая оригинальная плата SeaMicro выполняет функцию дискового контроллера, построена на основе двух FPGA Xilinx Virtex 5 и связывает каждую микросхему с восемью жесткими дисками HDD или твердотельными накопителями. В сетевой карте также используются FPGA. Такое сочетание функциональности позволяет исключить до 90 компонентов обычного сервера, отсюда низкое энергопотребление, компактность и, как следствие, гипермасштабируемость — свыше 2 тыс. процессоров в одной стойке 42U. Ключевым компонентом, превращающим набор серверов в одну систему, является система динамического распределения нагрузки DCAT (Dynamic Compute Allocation Technology), осуществляющая постоянный мониторинг состояния серверов и нагрузки, распределяющая нагрузку между узлами. Создавая виртуальные IP-адреса, в DCAT можно собирать серверные пулы от одного до 512 процессоров (4096 виртуальных машин).

 

Рис. 4. Устройство SM10000

В SM10000 все собрано воедино: обработка данных, их хранение, коммутация, управление серверами и балансировка нагрузки. За счет этого сервер занимает одну четверть объема и потребляет одну четверть энергии, потребляемой традиционными системами такой же производительности. SM10000 целиком состоит из 64 серверных карт, восьми карт хранения данных и карт Ethernet. В стандартном исполнении сервер имеет высоту 10U и потребляет 2 кВт. В стандартную стойку можно установить четыре таких модуля и получить систему из 2048 процессоров. Серверная плата построена на одноядерном Atom Z530/1,6 ГГц с памятью DDR2 емкостью 1 или 2 Гбайт, при виртуализации можно получить гранулы меньшего размера. Физические размеры серверной платы SM10000 равны размерам стандартной кредитной карты, их достаточно для установки восьми процессоров, чипсета, памяти и специализированной микросхемы. На материнскую плату устанавливается восемь таких плат, и 64 материнские платы устанавливаются в стойку, таким образом получается общее число 512 процессоров Atom. На каждой из восьми карт системы хранения находится восемь современных 2,5-дюймовых дисков SATA с возможностью горячей замены и создания конфигураций RAID. Всего на SeaMicro SM10000 может быть установлено до 64 жестких дисков SATA диаметром 2,5 дюйма или устройств SSD. При желании от внутренних дисков можно отказаться и использовать внешние системы хранения. Диски (физические или виртуальные) могут быть сконфигурированы так, что только один из 512 узлов имеет полномочия на чтение и запись, а остальные 511 — только на чтение, возможно и иное распределение. Смысл этого действия в том, что локализация прав записи упрощает процедуры модернизации ПО в ЦОД, пзволяя выполнять их на ограниченном числе дисков. Карты Ethernet поддерживают до восьми портов 1 Гбит/с или до двух портов 1 Гбит/с. Все эти карты объединены в трехмерный тор (рис. 3) коммутационной системой, обеспечивающей суммарную производительность 1,28 Тбит/с и к каждому из ядер 2,5 Гбит/с. Вся конструкция сервера SeaMicro SM10000 (рис. 4) поддерживает все виды дистанционного управления, но в нем нет коррекции кодов при доступе к памяти ECC, что может ограничить его применение в ответственных корпоративных приложениях.

В феврале 2011 года в SeaMicro объявили о выпуске второй версии микросервера SM10000-64, построенного на 256 двухъядерных процессорах Atom N570 1,66 ГГц. Установка процессоров, предназначенных для нетбуков, была вынужденным паллиативом — главное отличие от SM10000 состоит в 64-разрядной адресации, снимающей ограничения на использование виртуализации Intel VT. С новым процессором SM10000-64 может войти в нишу, которую занимал Intel Xeon. По сравнению с SM10000 модель SM10000-64 потребляет на 17% меньше энергии.

ARM в кустах

Еще два года назад трудно было представить, что процессоры ARM смогут составить конкуренцию Intel в серверном сегменте, а сегодня тема "Intel против ARM" стала одной из наиболее обсуждаемых. Конечно же речь может идти только об одной части этого сегмента — о микросерверах, где у процессоров ARM неплохие шансы, поскольку виртуализации, которая смогла в несколько раз повысить коэффициент использования Wintel-серверов, можно противопоставить "физификацию", то есть повышение коэффициента использования на физическом уровне без дополнительных затрат на деление на виртуальные машины. Это выгодно не только по энергопотреблению, но и с точки зрения управления.

Компания ARM (Advanced RISC Machine, в прошлом Acorn RISC Machine), как следует из названия, специализируется на архитектуре RISC. Бизнес этой британской компании, насчитывающей более 1,5 тыс. сотрудников, располагающей центрами разработки и проектирования в нескольких странах, но не имеющей собственного производства, строится на продаже лицензий нескольким сотням производителям. В тройку крупнейших лицензиатов входит голландская компания NXP Semiconductors, основанная концерном Phillips, входящая в первую двадцатку полупроводниковых компаний мира и занимающая третье место в Европе после франко-итальянской STMicroelectronics и немецкой Infineon Technologies. Сейчас она активно обновляет номенклатуру выпускаемых продуктов, в частности одним из результатов совместной деятельности ARM и NXP являются микроконтроллеры, устанавливаемые в различные виды приборов и оборудования, от электрических счетчиков до автомобилей. Новые ядра Cortex заменят многочисленные модификации своих предшественников: ARM 7, 9, 11 и др. Всего в семействе Cortex три группы ядер. В младшую группу M (Microcontroller) входят три ядра. На ступень выше них находятся процессоры группы R (Real Time), предназначенные для встроенных систем, работающих в реальном времени. По совокупности количество производимых разными компаниями процессоров ARM составляет 5 млрд штук в год, из них основная часть уходит в мобильные устройства и контроллеры, но планируется, что через несколько лет около 5% будет установлено в серверах.

Первой использовать преимущества процессорного ядра ARM в приложении к микросерверам удалось компании-стартапу Calxeda, созданной группой специалистов, поработавших в серьезных корпорациях: Intel, HP, Convex, IBM, Cray, AMD. В задачу Calxeda входит проектирование систем на кристалле (System-on-Chip, SoC) c использованием лицензированного ядра ARM. В прошлом году Calxeda представила систему SoC с четырьмя ядрами ARM Cortex-A9, которая, как утверждается, имеет в 20 раз более высокую производительность по сравнению с x86. Экспериментальный сервер высотой 2U вмещает 120 узлов или 480 ядер. Каждый узел вместе с памятью потребляет 5 Вт или 1,25 Вт на ядро. Эта цифра не может не впечатлить, самый экономичный процессор, например AMD Opteron, потребляет 5,83 Вт. В версии Calxeda процессор Cortex-A9 имеет встроенный контроллер памяти и межсоединение. О последнем известно мало, сообщается лишь, что он допускает подключение двух 64-разрядных портов AMBA (Advanced Microcontroller Bus Architecture) с пропускной способностью 12 Гбайт/с. Cortex-A9 не имеет аппаратной поддержки виртуализации, но, как считают его создатели, этого и не требуется — для интернет-нагрузок разумнее физификация, то есть использование множества мелких физических, а не виртуальных машин. Calxeda участвует в организации OpenStack, продвигая идею облаков на голом железе, без гипервизоров. Со временем планируется переход на новый процессор Cortex-A15 с поддержкой четырех ядер и частотой до 2,5 ГГц, в нем будет поддержка аппаратной виртуализации и адресации более 4 Гбайт памяти. На этот процессор уже приобрели лицензии компании ST-Ericsson, Samsung и Texas Instruments. Массовый выпуск новых процессоров начнется в 2012-2013 году по технологиям 28-32 нм.

Недавно о намерении участвовать в микросерверном движении заявила компания nVidia, представившая Project Denver — новую аппаратную платформу, позиционируемую в качестве альтернативы Wintel. Компания лицензировала процессоры ARM и продемонстрировала первую версию Windows, совместимую с ARM-платформами.

***

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