1.5 ОРГАНИЗАЦИЯ КЛАСТЕРНОЙ СЕТИ
Сеть - это модульная и адаптируемая коммутационная система, которую можно настроить в соответствии с самыми различными требованиями. Ее модульность облегчает добавление новых компонентов или перемещение существующих, а адаптивность упрощает внесение изменений и усовершенствований. Сеть кластера Beowulf ничем принципиально не отличается от сети рабочих станций, поэтому в самом простом случае для построения кластера необходимы обычные сетевые карты и хабы/коммутаторы, какие использовались бы при обустройстве какого-нибудь компьютерного класса. Однако, в случае кластера имеется одна особенность. Сеть кластера в первую очередь предназначена не для связи машин, а для связи вычислительных процессов. Поэтому чем выше будет пропускная способность вашей сети, тем быстрее будут считаться параллельные задачи, запущенные на кластере, следовательно рабочие характеристики сети приобретают первостепенное значение.
Для построения вычислительных кластеров используют самое разнообразное сетевое оборудование. При этом, так как характеристики стандартных сетевых устройств заметно уступают характеристикам специализированных коммуникаций в "нормальных" MPP компьютерах, пропускная способность сети, связывающей узлы кластера, во многих случаях оказывается решающей для производительности кластера. Используемое сетевое оборудование характеризуют обычно двумя параметрами:
-Пропускная способность это скорость передачи данных между двумя узлами после того, как связь установлена. Производитель обычно заявляет пиковую пропускную способность, которая в 1.5-2 раза выше реально наблюдаемой в приложениях.
-Латентность это среднее время между вызовом функции передачи данных и самой передачей. Время затрачивается на адресацию информации, срабатывание промежуточных сетевых устройств, прочие накладные расходы, возникающие при передаче данных.
Приведем для сравнения параметры некоторых наиболее популярных сетевых устройств.
Сетевое оборудование Пиковая пропускная способность Латентность
1. FastEthernet 12.5 Mbyte/sec 150 sec
2. GigabitEthernet 125 Mbyte/sec 150 sec
3. Myrinet 160 Mbyte/sec 5 sec
4. SCI 400 Mbyte/sec (реально 100) 2.3 sec
5. cLAN 150 Mbyte/sec 30 sec
Фактически пропускная способность и латентность не только характеризуют кластер, но и ограничивают класс задач, которые могут эффективно решаться на нем. Так, если задача требует частой передачи данных, кластер, использующий сетевое оборудование с большой латентностью (например GigabitEthernet), будет большую часть времени тратить даже не на передачу данных между процессами, а на установление связи, в то время как узлы будут простаивать, и мы не получим значительного увеличения производительности. Впрочем, если пересылаются большие объемы данных, влияние периода латентности на эффективность кластера может снижаться за счет того, что сама передача потребует достаточно большого времени, может быть даже в разы больше периода латентности.
Для малобюджетных кластеров использование супербыстрых Myrinet, SCI, cLAN скорее всего может оказаться нереальным с финансовой точки зрения. Поэтому рассмотрим более дешевые решения. Использование для кластера 10Mbit-сети хотя и возможно, но малоприятно. В результате вы рискуете получить от использования кластера больше разочарований, чем реального увеличения эффективности вашей работы. Далее мы будем рассматривать оборудование для сетей от 100Mbit и выше.
Сетевые карты. В качестве сетевых адаптеров можно использовать любые имеющиеся в продаже карты, поддерживающие работу в стандартах 100BaseTx и GigabitEthernet. Что касается списка предпочтений, то можно порекомендовать в первую очередь 3Com. Среди других вариантов можно назвать Compex, Intel, Macronix, другие карты, поддерживаемые драйвером tulip, например карты на чипсетах DC21xxx. Особенно популярными при построении кластеров явяляются платы на базе микросхем Intel 21142/21143. Популярность этих карт вызвана бытующим мнением об их высокой производительности, в то время как их цена по сравнению с конкурирующими предложениями обычно довольно невелика. Что касается сетевых карт фирмы 3Com, то они имеют некоторые преимущества, заметно влияющие на производительность сетевых коммуникаций. Приведем лишь несколько примеров возможностей аппаратного обеспечения карт 3Com.
Разгрузка процессора при вычислении контрольных сумм TCP/UDP/IP. Освобождает центральный процессор от интенсивных вычислений контрольных сумм, выполняя их в самой сетевой плате. Тем самым повышается производительность системы и время жизни процессора.
Освобождение ЦП при восстановлении сегментированных пакетов TCP. Снижает нагрузку на центральный процессор, повышая производительность системы.
Объединение прерываний. Позволяет группировать несколько полученных пакетов. Оптимизирует вычислительную эффективность хост-компьютера, сокращая число прерываний и максимально освобождая процессорные ресурсы для работы приложений.
Режим Bus mastering DMA. Обеспечивает более эффективный обмен данными для снижения загрузки центрального процессора.
В любом случае, если вы не предполагаете использовать технологию связывания каналов (channel bonding), которая позволяет объединять несколько сетевых адаптеров в один скоростной виртуальный канал, то вы можете себя чувствовать достаточно свободно выбирая для покупки ту или иную карту. Практически все современные сетевые карты, имеющиеся сейчас в продаже, без проблем распознаются Linux'ом и нормально работают.
Для организации связанного канала (channel bonding) лучше всего выбрать сетевые карты Intel EtherExpress PRO/100, 3Com FastEthernet (например 3c905B, 3c905C) или какие-либо карты GigabitEthernet от 3Com или Intel. Так же интересным вариантом являются специализированные серверные сетевые карты, в которых имеется более одного Ethernet-порта. Примерами таких адаптеров могут быть Intel EtherExpress PRO/1000 MF Dual Port или 3Com Fast EtherLink Server Dual Port 3c982C-TXM , которые я без труда нашел на http://www.price.ru. Использование таких карт позволит занимать в компьютере вдвое меньше PCI-слотов и, соответственно, устанавливать вдвое больше сетевых карт для объединения их в связанный канал.
Коммутаторы. Вторым важным элементом сети кластера являются устройства коммутации сетевых каналов. При выборе коммутирующих устройств так же следует учитывать возможность использования channel bonding. В зависимости от того, будет ли использоваться технология связывания каналов при построении кластера, можно остановить свой выбор на различном сетевом оборудовании.
Коммутаторы и другие элементы сетевой структуры используются для обеспечения коммуникаций между процессорами, для поддержки параллельного программирования и различных функций управления. Для параллельного программирования (организации межпроцессного взаимодействия (Inter Process Communication, IPC) широко используется коммутатор Myrinet-2000 компании Myricom (http://www.myri.com) - очень быстрое, хорошо масштабируемое широкополосное устройство. Считается, что при увеличении числа подключенных узлов общая ширина полосы пропускания - как у всех коммутаторов с настоящей масштабируемостью - растет пропорционально, а латентность остается постоянной. Иными словами, полоса на каждом из путей одинакова, а число путей (направлений) зависит от количества узлов, при этом каждый узел имеет связь со всеми остальными узлами независимо от размера кластера. Например, полоса в расчете на направление может составлять 200 Мбайт/с в каждом направлении с латентностью в 6-8 мкс. Коммуникации между пользовательскими пространствами могут реализовываться на основе протоколов IP или GM при помощи ПО пользовательского уровня Myricom.
Если среда параллельных вычислений не требует повышенной интенсивности коммуникаций между процессорами, то могут использоваться менее дорогостоящие средства, скажем, Ethernet. В индивидуальном заказном проекте могут также применяться технологии GigaNet, SCI или ServerNet, а в будущем и InfiniBand.
Выбор коммутатора осуществляется прежде всего на основе его характеристик. В самом простом случае для построения сети каластера можно использовать простые хабы. Это решение, наиболее выгодное по цене, явялется самым неудачным в технологическом смысле. При использовании хабов не происходит маршрутизации пакетов передаваемых данных. Любой пакет, переданный в сеть, направляется абсолютно всем участникам сети. Каждая машина "слышит" все передающиеся в сети пакеты данных, вне зависимости от того, предназначен ли конкретный пакет для нее или нет. При активном межпроцессорном обмене это может приводить к перегрузке сети, увеличении числа коллизий и, как следствие, к снижению эффективного быстродействия параллельной машины. Например, если две пары узлов кластера одновременно обмениваются данными посредством 100Мбит хаба, то скорость их обмена падает вдвое. Для решения этой проблемы следует использовать более "продвинутое" сетевое оборудование - коммутаторы, которые позволяют устанавливать своего рода каналы связи между парами машин.
Если говорить, к примеру, о 100Мбит сети, то задачей комутатора является обеспечение пропускной способности 100 Мбит/с одновременно для всех n/2 соединений между парами портов n-портового коммутатора. Теоретически коммутатор должен это гарантировать, но на практике производители оборудования весьма часто идут на упрощение электронной начинки своей продукции, как с целью удешевления, так и с целью максимального увеличения числа портов. В последнем случае при распараллеливании могут возникать конфликты на уровне Fast Ethernet, что снижает скорость обмена сообщениями и соответственно эффективность распараллеливания.
По моему личному опыту таблица приоритетов при выборе сетевого коммуникатора для построения сети кластера может выглядеть так: Cisco Catalist, 3Com SuperStack 3, Compex Switch. Ну и на последнем месте стоят самые дешевые хабы различных производителей, таких как Compex или 3Com.
Конечно, принимая решение о выборе коммутатора, необходимо учесть и другие их характеристики, в том числе цену. Хорошая продукция и стоит дороже. Так, отличные коммутаторы Cisco Catalyst (например, известная модель 5000, имеющая большее число портов и поддерживающая возможность связывания каналов) имеют более высокую цену, чем оборудование не столь "именитых" фирм.
Не все коммутаторы могут обеспечить возможность применения связанных каналов. Если вы предполагаете использовать channel bonding для увеличения пропускной способности вашей сети, то необходимо с особой тщательностью подходить к выбору коммутатроа. Обычные хабы в этом случае отпадают сразу. Проблема в связывании каналов заключается в том, что пр наличии channel bonding у вас появляется две или несколько сетевых карт с одинаоквым MAC-адресом. В обычном режиме работы коммутатор либо просто "сойдет с ума", либо будет интенсивно перестраивать свои внутренние таблицы портов, переназначая ваш MAC-адрес с одного порта на другой. Это может привести либо к полной неработоспособности канала, либо к значительным потерям пакетов и существенному снижению производительности сети. Для обеспечения нормальной работы таких связанных каналов в коммутаторе должны быть предусмотрены функции Link Aggrigation или, по другому, работа в стандарте IEEE 802.3ad. При покупке коммутатора внимательно читайте прилагаемые спецификаци и ищите эти магические словосочетания. Не все коммутаторы, имеющие функцию Link Aggrigation, позволяют применять ее для всех портов. Например, существуют модели, которые имеют 12/24 100Мбит и два гигабитных порта. В таких моделях Link Aggrigation можно настроить только для гигабитных портов, используя их для связи между двумя коммутаторами. Ясно, что такие модели не применимы для наших целей. Поэтому консультации со специалистами при покупке коммутатора обязательны.
В качестве примеров коммутатором, позволяющих настроить Link Aggrigation, можно упомянуть Cisco Catalist 2900 series, Cisco Catalist 3500 series, Cisco Catalist 5000 series, 3Com SuperStack 3 4950, 4400 и др. Следует отметить, что наличие или отсутствие функций Link Aggrigation зависит не только от модели коммутатора, но и от версии его программного обеспечения.
0 комментариев