При построении высокопроизводительных кластерных систем проблема пропускной способности каналов, обеспечивающих обмен данными между узлами, входит в число главных. Можно объединить в кластер мощные серверы, удачно распараллелить задачу, но при низкоскоростном канале связи все эти усилия не приведут к желаемому результату.
Для того чтобы понять важность межузловых коммуникаций в кластере, коротко рассмотрим
некоторые причины, которые влияют на быстродействие такой системы.
|
Рис. 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-системами, среда выполнения программ, т. е. ОС или
СУБД, должна быть написана с учетом этой особенности.
Остановимся вкратце на средствах распараллеливания задач. Здесь существует несколько
разных подходов к программированию параллельных вычислений. Это использование:
По опыту пользователей высокоскоростных кластерных систем, наиболее эффективно
работают программы, оптимизированные относительно межпроцессорного взаимодействия.
И даже несмотря на то что программировать с помощью пакетов, которые используют
интерфейс разделяемой памяти (shared memory interface) или средства автоматического
распараллеливания, значительно удобней, больше всего распространены сегодня библиотеки
MPI и PVM.