Реклама:

Другой вариант мультикомпьютера - кластерный компьютер [12, 137]. Как правило, кластер состоит из нескольких сотен или тысяч связанных сетью персональных компьютеров или рабочих станций, причем к сети они подключаются через обычную сетевую плату. Различие между МРР и кластером такое же, как между мэйнфреймом и персональным компьютером. У обоих есть процессор, ОЗУ, диски, операционная система и т. д. Но в мэйнфрейме все это (за исключением, может быть, операционной системы) работает гораздо быстрее, и из-за этого применяются и управляются они совершенно по-разному. То же самое можно сказать о МРР и кластерах.

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

Существует множество видов кластеров, два из которых доминируют: централизованные и децентрализованные. Централизованным называют кластер рабочих станций или персональных компьютеров, смонтированных в большую конструкцию в пределах одной комнаты. Иногда они располагаются более компактно, чем обычно, чтобы сократить физические размеры и длину кабеля. Как правило, все входящие в кластер машины гомогенны и не имеют никаких периферийных устройств, кроме сетевых плат и, возможно, дисководов. Гордон Белл (Gordon Bell), разработчик PDP-11 и VAX, назвал их безголовыми рабочими станциями, намекая на то, что у этих машин нет владельцев.

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

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

Google

Google - популярная система поиска информации в Интернете. Своей популярностью она обязана простоте интерфейса и малому времени отклика, хотя внутреннее устройство Google можно назвать каким угодно, но только не простым. С точки зрения поисковой системы задача состоит в том, чтобы проиндексировать и сохранить всю Всемирную Паутину (а это более 8 миллиардов страниц и одного миллиарда изображений), а затем находить среди сохраненной информации нужную страницу за 0,5 секунды, обслуживая по тысяче запросов в секунду, круглосуточно приходящих со всех концов света. В дополнение к этому, система никогда не должна отключаться, даже в случае природных катаклизмов, перебоев в электропитании и работе сети, аппаратных и программных сбоев. Разработка клона Google - определенно не упражнение для читателя.

Как же Google все это делает? Функционирование Google обеспечивают множество информационных центров по всему миру. Это не только делает возможной подмену на случай внезапного наводнения или землетрясения. При обращении к адресу www.google.com анализируется IP-адрес отправителя запроса, и далее браузер общается уже только с ближайшим к нему информационным центром.

Каждый информационный центр подключается к Интернету как минимум одной оптоволоконной линией ОС-48 (2,488 Гбит/с), по которой поступают запросы и отправляются обратно ответы. Кроме того, имеется дополнительная линия ОС-12 (622 Мбит/с) к резервному поставщику услуг на случай перерыва в работе основного. Чтобы шоу могло продолжаться и при перебоях в электроснабжении, во всех центрах имеются источники бесперебойного питания и аварийные дизельные генераторы. Таким образом, во время природных катаклизмов работа Google не нарушится, хотя производительность и снизится.

Чтобы лучше понять, почему архитектура Google стала такой, какая она есть, полезно познакомиться с механизмом обработки запроса, пришедшего в один из информационных центров. Прибыв в центр (шаг 1 на рис. 8.36), запрос переправляется выравнивателем нагрузки к одному из многочисленных обработчиков запросов (2), а также, параллельно, в систему проверки правописания (3) и сервер контекстной рекламы (4). Параллельно выполняется поиск запрошенного слова на индексных серверах (5), на которых хранятся записи о каждом слове в Сети.

Кластерные вычисления

Рис. 8.36. Обработка запроса в Google

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

Для повышения производительности индекс разбит на фрагменты, поиск в которых ведется параллельно. Согласно этой идее, фрагмент 1 содержит все слова из индекса, и каждому слову сопоставлены идентификаторы п первых по рейтингу страниц. Фрагмент 2 содержит все слова и идентификаторы п следующих по рейтингу страниц и т. д. По мере роста Сети, каждый из этих фрагментов можно дополнительно разделить на несколько частей так, что в первой части будут первые k слов, во второй - следующие k и т. д. Это позволяет достигать еще большего параллелизма при поиске.

Индексные серверы возвращают наборы идентификаторов документов (6), которые затем комбинируются в соответствии с логикой запроса. Например:

+digita +kapibara +dance

При таком запросе на следующий шаг попадут идентификаторы только тех документов, которые имеются во всех трех наборах. На этом шаге Google обращается к самим документам (7), извлекая из них названия, ссылки, а также фрагменты текста, окружающие запрошенные слова. Копии многих документов Сети хранятся на серверах документов всех информационных центров, на настоящее время их объем достигает сотен терабайтов. Для ускорения параллельного поиска документы также поделены на фрагменты. В итоге, хотя для обработки запроса не требуется считывать все содержимое Сети (и обрабатывать десятки терабайтов индексов), при обслуживании рядового запроса все же приходится "переворошить" не менее 100 Мбайт данных.

После того как результаты возвращаются обработчику запроса (8), они объединяются в соответствии с рейтингом страниц. Добавляется информация о возможных ошибках правописания, если они обнаружены (9), и контекстная реклама (10). Включение в результаты запроса тех или иных ключевых слов, купленных рекламодателями (например, "гостиница", или "camcoder"), - это то, за счет чего Google зарабатывает деньги. Наконец, результаты оформляются в формате HTML (HyperText Markup Language - язык разметки гипертекста) и передаются пользователю в виде обычной веб-страницы.

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

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

Конечно же, дешевый персональный компьютер гораздо менее надежен, чем лучшие модели серверов, но ведь и серверы иногда "падают". Поэтому программное обеспечение Google написано так, чтобы надежно работать на ненадежном аппаратном обеспечении. Имея в своем распоряжении отказоустойчивое программное обеспечение, уже не имеет большого значения, какова интенсивность отказов, 0,5 или 2 % в год. Опыт Google показывает, что за год ломаются 2 % всех компьютеров. Более половины отказов вызваны жесткими дисками, следующей причиной являются блоки питания, а за ними следуют микросхемы памяти. Процессоры, после обкатки, вообще не ломаются. В действительности, основной причиной сбоев является не аппаратное, а программное обеспечение. Поэтому первой реакцией на ошибку является перезагрузка, которая в большинстве случаев решает проблему (это можно назвать электронным аналогом рецепта "две таблетки аспирина на ночь").

В типичном современном ПК, используемом в Google, установлен процессор Pentium с тактовой частотой 2 ГГц, 512 Мбайт оперативной и 80 Гбайт дисковой памяти. Возможно, примерно на такой же машине ваша бабушка изредка просматривает электронную почту. Особого внимания заслуживает только микросхема Ethernet. Ее нельзя назвать произведением искусства, зато она очень дешево стоит. Компьютеры размещаются в корпусах высотой lu (это около 5 см) и устанавливаются в вертикальные стойки, по 40 штук с передней и задней сторон. В одной стойке, таким образом, устанавливаются 80 машин, которые подключаются к Ethernet при помощи коммутатора внутри стойки. Все стойки в одном информационном центре также подключены к Ethernet через коммутатор, а для живучести при сбоях имеются 2 избыточных коммутатора.

Структура типичного информационного центра Google показана на рис. 8.37. Данные с высокоскоростной оптоволоконной линии ОС-48 поступают на два 128-портовых Ethernet-коммутатора. Аналогично к ним подключена и резервная линия ОС-12. Для подключения входных каналов применяется специальная плата, поэтому они не занимают порты Ethernet-коммутаторов. Из каждой стойки выходит четыре Ethernet-линии, две к коммутатору, показанному на рисунке слева, и две к правому. Благодаря этому система может пережить отказ любого из двух коммутаторов. Благодаря наличию четырех линий, для потери связи со стойкой необходимо, чтобы либо вышли из строя все четыре линии, либо чтобы вышли из строя две линии и коммутатор. Имея пару коммутаторов на 128 портов и стойки с четырьмя линиями, можно соединить в сеть 64 стойки. Если считать, что в стойке 80 компьютеров, это дает суммарно 5120 машин, хотя, конечно же, никто не требует, чтобы в стойке было именно 80 машин, да и у коммутаторов может быть больше 128 портов. Просто это - весьма характерные для кластера Google значения.

Большое значение имеет также удельное энергопотребление на единицу площади. Типичный персональный компьютер потребляет около 120 Вт, что дает 10 КВт на стойку. Чтобы обслуживающий персонал мог устанавливать в стойку и извлекать из стойки компьютеры, для нее требуется не менее 3 м2 пространства.

Таким образом, удельное энергопотребление составляет 3000 Вт/м2. Обычно информационные центры проектируются в расчете на энергопотребление от 600 до 1200 Вт/м2, поэтому требуется предпринимать специальные меры для охлаждения.

Кластерные вычисления

Рис. 8.37. Типичный кластер Google

В Google хорошо усвоили три правила создания и использования крупных веб-серверов, которые неплохо здесь воспроизвести.

1. Любые компоненты ломаются, и это надо учитывать.

2. Для повышения пропускной способности и доступности все должно дублироваться.

3. Необходимо оптимизировать соотношение цена/производительность.

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

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

Третий пункт является следствием первых двух. Если система должным образом реагирует на сбои, глупо покупать дорогие компоненты, такие как RAID-массивы или SCSI-диски. Даже они ломаются, а тратить в десть раз больше, чтобы вдвое снизить интенсивность отказов - плохая идея. Лучше купить в десять раз больше оборудования и предусмотреть возможность отказов. В конце концов, чем больше оборудования, тем выше производительность (когда оборудование работает).

Более подробные сведения о Google ищите в [20, 76].

Процессоры с массовым параллелизмом || Оглавление || Коммуникационное программное обеспечение для мультикомпьютеров