Александр Семенов


По материалам корпорации Intel (http://www.intel.ru).

Распределенные вычисления изначально появились и были опробованы в научной и технической среде, но сегодня они все шире применяются в промышленности. Intel Solution Services, всемирная профессиональная организация корпорации Intel по оказанию услуг, в настоящее время занимается изучением этой перспективной области вычислений. Основная задача Intel Solution Services - помочь компаниям извлечь максимальную пользу из архитектуры Intel, предоставляя им консультации, связанные с переходом на новые архитектуры.

Вычислительные сети обеспечивают пользователям огромный уровень гибкости и высокую надежность. Распределенные вычисления (grid computing) называют также сетевыми, коллективными, параллельными вычислениями, или "решетками" вычислительных ресурсов. Идея распределенных вычислений родилась по аналогии с универсальной концепцией электрических сетей, где для подключения любого устройства в любой момент времени используется стандартная электрическая розетка. Если вместо электричества подставить вычислительные ресурсы, как раз и получится концепция распределенных вычислений.

Совместное использование вычислительных ресурсов способно изменить множество бизнес-процессов в самых разных отраслях. Распределенные вычисления окажутся полезными везде - от мгновенного расчета сценариев преодоления аварийных ситуаций в космическом агентстве до ускорения выпуска новых лекарств благодаря компьютерному тестированию.

Новые бизнес-модели

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

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

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

Аппаратное обеспечение: узлы, кластеры и сети

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

Узел - это компьютер в традиционном понимании: настольный ПК или ноутбук, а также сервер в любом исполнении - отдельно стоящий, смонтированный в стойку или блейд-сервер. Сервер может содержать один или несколько процессоров в различных конфигурациях - симметричная многопроцессорная архитектура (Symmetric Multiprocessor, SMP), архитектура с распределенной разделяемой памятью (NUMA) или архитектура многопроцессорной системы с кэш-когерентным доступом к неоднородной оперативной памяти (ccNUMA). Кластер представляет собой набор связанных между собой узлов, а сеть - набор кластеров.

Узлы, входящие в кластер, подключаются друг к другу с использованием различных высокоскоростных технологий соединения. До появления InfiniBand и PCI Express можно было выбрать или относительно высокопроизводительные, специализированные, но дорогостоящие решения, или экономичные, основанные на стандартах, но обладающие меньшей производительностью технологии. В недорогих кластерах обычно используется технология Ethernet, разработанная для локальных сетей. Такая схема неминуемо вызывает задержки при параллельных вычислениях, когда требуется тесное взаимодействие узлов. Использование соединений на базе технологии InfiniBand обещает ликвидировать эти узкие места.

Кластеры можно объединить в вычислительную сеть с помощью технологий локальных сетей, чтобы построить так называемую "внутреннюю сеть" (intra-grid) - обычно в пределах одной организации, или с помощью технологий глобальных сетей, чтобы построить "внешнюю сеть" (inter-grid), которая может охватывать весь земной шар.

Граничные случаи входят в эту модель как частные реализации. Так, сеть, состоящая из единственного кластера, может служить примером кластера, доступного для большого сообщества, при наличии клиентского промежуточного ПО для распределенных вычислений. Благодаря Интернет-технологиям пользователи сообщества высокопроизводительных вычислений могут отправлять задачи на выполнение с помощью единого локального интерфейса и даже не отдавать себе отчета в том, что их задание выполняется за тысячи километров от них. Такой способ позволяет ИТ-подразделениям сократить расходы на оборудование, используя мощные вычислительные системы по всему миру, включая услуги провайдеров внешних ресурсов.

И наоборот, большой кластер, включающий тысячи узлов, может не быть сетью, если он не имеет соответствующей инфраструктуры и не обеспечивает выполнения процессов, характерных для сети. Для построения вычислительной сети необходимо организовать удаленный доступ - или с помощью относительно ограниченных по возможностям утилит операционных систем, таких, как rlogin и telnet, или с помощью настраиваемых Web-интерфейсов.

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

Преимущества распределенных вычислений для бизнеса

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

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

В среде вычислительных сетей связь между приложением и местом его выполнения начинает теряться: большую вычислительную задачу можно разместить на нескольких компьютерах, чтобы сократить фактическое время ее выполнения. Как правило, программа, разработанная с учетом возможности параллельной обработки, выполняется тем быстрее, чем больше узлов в этом задействовано (при отсутствии алгоритмических, физических и финансовых ограничений).

Чтобы получить преимущества от выполнения приложения в сетевой вычислительной среде, необходимо выполнение двух условий:

  • для работы приложения в такой среде его необходимо перепрограммировать, чтобы обеспечить наращивание "вширь" и "вглубь";
  • система должна поддерживать динамическое распределение ресурсов по запросу приложения.

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

Совместное использование гетерогенных ресурсов

Можно провести прямую аналогию между концепцией вычислительных сетей и принципами организации транспортных систем - в части совместного использования дорогостоящих ресурсов. К примеру, реактивный самолет может стоить от 50 до 200 млн долл. Частный самолет предоставляет множество удобств своему владельцу. Но очевидный недостаток такого решения заключается в том, что стоимость самолета и топлива, необходимого для межконтинентальных перелетов, лежит далеко за пределами финансовых возможностей большинства людей. К тому же это не самое выгодное вложение капитала для обычных поездок. Поэтому миллионы пассажиров ежегодно путешествуют с помощью авиакомпаний, оплачивая только свои места, а не все топливо и авиационную инфраструктуру.

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

Заметим, что самолеты, используемые для регулярных рейсов, разработаны специально для этой цели. Частные самолеты обычно невелики и не могут эффективно использоваться для массовых перевозок.

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

Взаимозаменяемость и виртуализация

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

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

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

Узлы в кластере могут быть "мощными" в том смысле, что они содержат два, четыре или более процессоров с совместно используемой памятью в симметричной конфигурации. Приложения, для выполнения которых требуется несколько узлов, способны функционировать в гибридной конфигурации стандарта MPI (Message Passing Interface) или OpenMP. Такие программы обладают высокой степенью параллелизма, и основные вычисления могут выполняться в разных узлах благодаря использованию библиотеки обмена сообщениями стандарта MPI. В рамках одного узла каждая задача разделяется на ряд потоков, которые выполняются на процессорах, входящих в состав узла. Разработка ПО в гибридной конфигурации может существенно сократить расходы.

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

Если вычислительная среда обладает высокой степенью виртуализации, взаимозаменяемости и модульности, возможно плавное наращивание вычислительных ресурсов по мере изменения запросов пользователей. Сравните это с ситуацией с мэйнфреймами двадцатилетней давности: поскольку в мэйнфрейм вкладывались огромные средства, приходилось ждать, пока он не исчерпает полностью свои ресурсы, прежде чем появлялась возможность приобрести новый. Это была единственная возможность модернизации. Основная инновация, которую принесла System/360 корпорации IBM, - возможность выполнения одного и того же ПО на ЭВМ разного размера. Организации могли приобретать более мощные ЭВМ по мере роста бизнеса, необходимость в модернизации возникала через несколько месяцев или несколько лет. Это был огромный прогресс, избавлявший от необходимости менять все ПО при переходе на новую модель, как делалось раньше.

Сегодня возможностей для поддержания оперативности бизнеса стало гораздо больше. Ожидается, что в вычислительных сетях наращивание ресурсов для приложений "вширь" и "вверх" будет происходить практически в реальном времени. Для провайдеров услуг использование внешних ресурсов дает альтернативу длительным этапам закупки оборудования. Благодаря тому, что серверы общего назначения гораздо дешевле мэйнфреймов, добавление нового сервера гораздо меньше сказывается на бюджете, чем приобретение или модернизация мэйнфрейма. Но, несмотря на возможность экономии, не все приложения выигрывают от постепенного добавления новых серверов.

Возможность постепенного развертывания ресурсов упрощает бизнес-процессы и снижает накладные расходы при ведении бизнеса. Она открывает новые бизнес-модели, такие, как "эффективные" вычисления (utility computing), когда оплата услуг зависит от выполненных запросов.

Модель эффективных вычислений в чистом виде сегодня не практикуется, потому что до сих пор существует только концепция. Даже традиционные услуги имеют разную степень детализации и разную стоимость. Проведем аналогию, например, с традиционной электростанцией общего пользования. Стоимость электроэнергии зависит от времени суток и источника ее происхождения. Большинство поставщиков услуг игнорируют этот факт, выставляя бытовым потребителям электроэнергии единые, усредненные счета. Вычисления по запросу (On-demand computing) - более достижимая степень эффективных вычислений. При такой модели относительно невзаимозаменяемые ресурсы выделяются динамически, но с некоторыми ограничениями. Один из примеров - "вычислительная мощность по запросу" (capacity-on-demand), когда большой сервер продается с дополнительными процессорами, которые подключаются по запросу клиента. Ограничение такого метода связано с тем, что новые процессоры нельзя отключить и, следовательно, нельзя снизить цены до прежнего уровня.

Заключение

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

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

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