Интерфейсы межузлового взаимодействия в кластерах

14 май, 2002 - 23:00Владимир Савяк

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


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

Интерфейсы межузлового взаимодействия в кластерах
Рис. 1. Высокоскоростной кластер

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

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

Интерфейсы межузлового взаимодействия в кластерах
Рис. 2. Скорость передачи непрерывного потока данных
Интерфейсы межузлового взаимодействия в кластерах
Рис. 3. Время передачи пакета нулевой длины

Наиболее популярными сегодня коммуникационными технологиями для построения кластерных архитектур являются Myrinet, Virtual Interface Architecture (cLAN компании Giganet -- одна из первых коммерческих аппаратных реализаций), SCI (Scalable Coherent Interface), QsNet (компании Quadrics Supercomputers World), Memory Channel (разработка Compaq и Encore), а также хорошо всем известные Fast Ethernet и Gigabit Ethernet.

Приведенные на рис. 2 и 3 диаграммы дают возможность сравнить быстродействие аппаратных реализаций разных технологий, но следует помнить, что на реальных задачах и на разнообразных аппаратных платформах параметры задержки и скорости передачи данных получаются на 20--40% (а иногда и больше) хуже от максимально возможных. Например, при использовании библиотек MPI для коммуникационных карт cLAN и Intel-базированных серверов с шиной PCI реальная пропускная способность канала составляет 80--100 MBps, задержка -- около 20 мкс.

Одной из проблем, которая возникает при использовании скоростных интерфейсов, является то, что архитектура PCI не оптимизирована для работы с высокоскоростными устройствами такого типа. Но если перепроектировать PCI Bridge с ориентацией передачи данных одному адресату, то эта проблема решается. Такие реализации имеют место в продуктах некоторых производителей, например компании Sun Microsystems.

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

Сравнение высокоскоростных коммуникационных интерфейсов

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

Остановимся вкратце на средствах распараллеливания задач. Здесь существует несколько разных подходов к программированию параллельных вычислений. Это использование:

  • широко распространенных стандартных языков программирования и коммуникационных библиотек и интерфейсов для организации межпроцессорного взаимодействия (PVM, MPI, HPVM, MPL, OpenMP, ShMem);
  • специализированных языков параллельного программирования и параллельных расширений (параллельные реализации Fortran, C/C++, ADA, Modula-3);
  • средств автоматического и полуавтоматического распараллеливания последовательных программ (BERT 77, FORGE, KAP, PIPS, VAST);
  • стандартных языков и параллельных процедур из специализированных библиотек, которые ориентированы на решение задач в конкретных областях, например линейной алгебры, методов Монте-Карло, генетических алгоритмов, обработки изображений, молекулярной химии и т. п. (ATLAS, DOUG, GALOPPS, NAMD, ScaLAPACK).

По опыту пользователей высокоскоростных кластерных систем, наиболее эффективно работают программы, оптимизированные относительно межпроцессорного взаимодействия. И даже несмотря на то что программировать с помощью пакетов, которые используют интерфейс разделяемой памяти (shared memory interface) или средства автоматического распараллеливания, значительно удобней, больше всего распространены сегодня библиотеки MPI и PVM.