«Открытые системы»

В конце 90-х годов Стивен де Витт создал компанию Cobalt Networks, которая стартовала с Java-серверов моделей Qube и RaQ. Этими серверами Cobalt так очаровала корпорацию Sun Microsystems, что та за право купить Cobalt заплатила 2,1 млрд. долл. Продав Cobalt Networks, де Витт задумался над тем, чем заниматься дальше. В апреле 2002 года была создана компания Azul Systems. Собранная в ней команда специалистов сосредоточилась на оптимизации выполнения приложений в многозвенной архитектуре
Слова cobalt и azul объединяет не только то, что они означают оттенки синего цвета по-английски и по-испански: они служат названиями для компаний, созданных одним и тем же человеком — Стивеном де Виттом

2005 год может стать поворотной точкой в истории компьютеров; для этого сложились, используя язык математики, необходимые и достаточные условия. Необходимые условия создает массовое распространение современных приложений на платформе J2EE, работающих на серверах приложений BEA WebLogic, IBM WebSphere и JBoss. Растет и число приложений на платформе .Net. По оценке аналитиков IDC, уже сейчас совокупная доля подобных решений превышает 60% от общего числа разработок, а через несколько лет приблизится к 80%. Отличительная особенность этих приложений состоит в том, что по большей части они многопотоковые, а потому плохо укладываются в вычислительные системы с традиционной фон-неймановской архитектурой. Для их продуктивной работы приходится использовать чрезвычайно дорогие SMP-серверы, многоуровневую кэш-память и другие ускоряющие технологии. Радикальное разрешение проблемы «бутылочного горла», расположенного в фон-неймановской машине между памятью и процессором, становится возможным с недавним появлением многоядерных процессоров. Именно это обстоятельство и можно назвать «достаточным условием». Иначе говоря, в этом году сошлись две тенденции: многопотоковость приложений, с одной стороны, и многоядерные процессоры, с другой. В будущем это сочетание не только открывает огромные перспективы, но и может инициировать колоссальные изменения в программировании.

В действительности, острой новизны в происходящем нет. И та, и другая тенденция не является чем-то принципиально новым. О многопотоковости приложений говорят с 70-х годов, а о многоядерных процессорах — с начала 90-х. К тому же в оценке происходящего нужно проявлять трезвость, отдавая себе отчет в том, что для реальных изменений потребуются годы, но в то же время уже сейчас открываются отдельные ниши, которые могут быть заполнены достаточно быстро. Как всегда бывает в таких случаях, наибольшую активность проявляют небольшие компании. Одной из них оказалась Azul Systems; здесь родилась идея, получившая название Network Attached Processing, представляющая собой в определенной степени аналогию с сетевым хранением данных Network Attached Storage (NAS). Пока с Network Attached Processing, решением, которое призвано ускорить выполнение Java-приложений, связывают имя только этой компании: за исключением корпорации IBM никто больше этой тематикой активно не занимается.

Предложения, исходящие от Azul, при всей их привлекательности вызывают некоторую настороженность. Во-первых, ускорителям обычно не везло. Так, в начале 80-х годов небольшая английская компания INMOS предложила микросхему Transputer для ускорения параллельных вычислений, которая могла встраиваться в компьютеры DEC VAX, рабочие станции Sun и персональные компьютеры. Микросхема представляла собой законченный компьютер; на чипе было все, включая память и высокоскоростные каналы, позволявшие непосредственно подключаться к памяти и другим транспьютерам. Предназначение Transputer состояло в выполнении задач на языке occam, позволяющем описывать конкурентные процессы. Большие надежды связывали со специализированными Java-процессорами, ни и они не смогли себя проявить в полной мере.

Во-вторых, у основателя компании Azul Стивена де Витта своеобразная деловая репутация. В конце 90-х годов де Витт создал компанию Cobalt Networks, которая стартовала с Java-серверов моделей Qube и RaQ. Этими серверами Cobalt так очаровала корпорацию Sun Microsystems, что та за право купить Cobalt заплатила 2,1 млрд. долл. Расчет был на то, что таким образом удастся пробиться в мир Linux, но Sun на этом пути ожидал полный провал. Два года спустя, в 2003 году в гроб Cobalt был забит последний гвоздь, и все события, связанные с ним, вошли в историю как одна из самых больших неудач Sun Microsystems.

Продав Cobalt Networks, де Витт задумался над тем, чем заниматься дальше. Ход его рассуждений был таким. Развитию многозвенных архитектур серьезно препятствуют проблемы администрирования. Серверы приложений великолепно справляются с внедрением (provisioning) приложений, виртуализацией среды, однако стоимость и трудоемкость управления системой в целом остаются слишком высокими. Кроме того, серверные архитектуры плохо приспособлены к переменной нагрузке, а декларируемая способность предоставления вычислительной мощности «по требованию» достигается слишком высокой ценой. Причина сложностей — действующая парадигма организации компьютерных систем, в том числе разнородность вычислительной среды и разделение функций между аппаратной частью и операционной системой.

В апреле 2002 года была создана — причем в обстановке строгой секретности — компания Azul Systems. Собранная в ней команда специалистов сосредоточилась на оптимизации выполнения приложений в многозвенной архитектуре, а конкретнее — на возможности усовершенствовать аппаратную поддержку серверов приложений. Способ разрешения проблемы сложности, по всей видимости, был избран под влиянием известного разработчика графических ускорителей Скотта Селлера, приглашенного в Azul на должность директора по технологиям. Именно он определил место проектируемого процессора в общей архитектуре сервера, а также собственно архитектурное и технологическое решения.

Рассказывая о задуманном на макроуровне, Селлер сообщил: «Мы хотим дать вычислительным системам то, что смогли привнести в системы хранения компании EMC и Network Appliance». Аналогия Селлера заключалась в том, что дисковые накопители категории NAS функционально слабо связаны с тем, к чему они подключаются, но с системной точки зрения совершенно прозрачны. Было решено разработать способ автономного подключения к сети значительной специализированной вычислительной мощности, которой можно было бы передавать исполнение Java-приложений. Она должна была быть настолько большой, чтобы ее заведомо хватило любому приложению, и к тому же виртуализованной, способной динамически перераспределяться и достаточно дешевой (иначе было бы слишком накладно владеть избытком вычислительной мощности).

Придя к такому умозаключению, в Azul задумались, как реализовать гипотетическую серверную приставку, то есть приступить к проектированию на микроуровне. Сначала «отпали», казалось бы, очевидные серверы-лезвия, поскольку для полноценной виртуализации была нужна единая SMP-архитектура. Далее предстояло выбрать процессоры.

В Azul пришли к смелому выводу о необходимости создания уникального процессора с ограниченными возможностями, адаптированного к функциям «уборки мусора» и выполнению объектно-ориентированных программ, что требуется для выполнения приложений на виртуальной машине. Команда Селлера создала такой процессор с собственным оригинальным набором команд. Минималистский подход позволил разместить 24 процессорных ядра на одном кристалле.

Имеется две версии серверных приставок. Младшая содержит 96 ядер, при этом потребление энергии всего 600 Вт, а высота корпуса — 5U. В старшей версии разместятся шестнадцать 24-ядерных микросхем, общее число процессоров составит 384, и они смогут работать на общую память объемом до 256 Гбайт, представленную как единый образ SMP. Такая приставка пакуется в бокс высотой 11U. Сейчас сервер Azul подключается к сети посредством четырех портов Gigabit Ethernet, но в перспективе возможно подключение и по InfiniBand, и по 10-Gigabit Ethernet.

Де Витт убежден: новое решение обеспечит Azul прочное лидерство, причем компания опередила возможных конкурентов если не на годы, то уж точно на кварталы. Еще не поступившее в продажу оборудование уже нашло потребителей.

Включение приставки в систему не представляет сложности: достаточно установить на сервер приложений соответствующий модуль доступа (прокси) и физически включить ее в локальную сеть. Сама приставка не требует процедур инициации — она поставляется предварительно сконфигурированной под характерную нагрузку J2EE. В Azul утверждают, что испытания продемонстрировали успешную работу приставки совместно с серверами приложений IBM WebSphere, BEA WebLogic и JBoss. В Azul надеются, что в будущем удастся обеспечить и поддержку .Net.