ИНФОРМАЦИОННЫЕ КОМПЛЕКСЫ И СИСТЕМЫ
УДК 621.38
Информационное и программное обеспечение для тестирования производительности сетевых узлов территориально-распределенных центров обработки данных
Татьяна Сергеевна Аббасова, к. т. н., доцент каф. «Информационные системы», e-mail: [email protected]
ФГОУ ВПО «Российский государственный университет туризма и сервиса», Москва
Рассмотрены возможности электронных библиотек для хранения и резервирования данных, а также для анализа состояния параллельной программы после аварийного завершения; приведено описание алгоритмы оценки производительности и пропускной способности сетевых узлов с учетом их объединения в метакомпьютерную систему для решения синтетических задач параллельного программирования, характерного для гетерогенных сред; даны рекомендации по применению пакетов различных электронных библиотек в зависимости от используемых операционных систем на узлах сети.
The author examines the capacity of digital libraries for storage, backup, and the analysis of the parallel program following the malfunction. The study describes algorithms for the estimation of performance and throughput of network nodes in a metacomputer system to solve synthetic problems of parallel programming, typical for heterogeneous environments. The article discusses the use of e-libraries' packages, depending on operating systems at the net nodes.
Ключевые слова: интерфейс передачи, компьютерная платформа, операционная система.
Keywords: communication interface, computer platform, operating system.
В настоящее время появилась необходимость в высокопроизводительных вычислениях. Эти вычисления можно осуществлять с помощью технологии метакомпьютинга, которая позволяет создавать распределенные гетерогенные системы. Метакомпьютинг динамически организуется из географически распределенных ресурсов, временно делегированных фактическими владельцами. Отдельные установки, соединенные высокоскоростными сетями, являются составными частями метакомпьютера и в то же время служат точками подключения пользователей.
Рассмотрим библиотеки MPI (от англ. Message Passing Interface) для хранения данных в параллельном программировании. Интерфейс передачи сообщений MPI позволяет обмениваться сообщениями между узлами, выполняющими одну задачу. Существуют его реализации для большого числа компьютерных платформ. Основным средством коммуникации между процессами в MPI является передача сообщений друг другу. Стандартизацией MPI занима-
ется MPI Forum (http://www.mpi-forum.org/). В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI, а также его реализации для языков C и C++.
Наиболее высокопроизводительной и распространенной реализацией стандарта Message Passing Interface является MPICH2 - разработка Ар-гонской национальной лаборатории США (http://www.mcs.anl.gov/research/projects/mpich2/), которая распространяется свободно в виде исходных текстов для систем семейств Linux (IA32 и x86-64), Mac OS/X (PowerPC и Intel), Solaris (32- и 64-бит), а также Windows.
В состав MPICH2 входит библиотека программирования, загрузчик приложений и вспомогательные утилиты. Библиотеки встраиваются в средства разработки программ (C++, Pascal и др.), после чего их функции внедряются в проект для обеспечения способности к распараллеливанию и связи с главным модулем. Скомпилированные программы готовы к запуску на рабочих станциях - для запуска
используется загрузчик приложений, установленный на главном компьютере-координаторе.
Процессы на узлах управляются специальной службой mpd. Перед началом работы требуется запустить ее с головной машины на всех узлах при помощи команды mpdboot: mpdboot - to-talnum=2 - file=hosts.mpd - user= =mechanoid, где hosts.mpd - файл со списком используемых узлов кластера.
Проверка состояния mpd выполняется при помощи команды mpdtrace:
$ mpdtrace -l node2.home.net 51160 (192.168.0.2)
node1.home.net 53057 (192.168.0.1)
Завершение работы mpd выполняется при помощи mpdexit:
$ mpdexit node2.home.net 51160 При выключении одного узла выключаются все остальные.
Запуск MPI-программы производится командой mpiexec-n N myprog, где N - начальное число параллельных процессов. После этого происходит запуск N копий MPI-программы myprog. Процессы распределяются по узлам автоматически, не надо перечислять список узлов.
Пакет программ LAM/MPI (от англ. Local Area Multicomputer - мультикомпьютер ограниченной зоны) является реализацией протокола, ориентированного на архитектуру параллельного компьютера, принадлежащего сети рабочих станций (http://www.lam-mpi.org/). При помощи LAM/MPI выделенный кластер либо существующая локальная вычислительная сеть могут работать как один параллельный компьютер. Считается, что
LAM/MPI идеально подходит для кластеров, поскольку запуск и управление задачами, а также обмен сообщениями между процессами по сети осуществляются через системные сервисы. LAM/MPI для передачи сообщений может использовать как TCP/IP, так и разделяемую оперативную память.
LAM-приложения совместимы на уровне исходных кодов с любой другой реализацией MPI. Основное достоинство пакета LAM - богатые отладочные возможности. Трассировка обращений к MPI и анализ состояния параллельной программы после аварийного завершения - серьезный аргумент в пользу библиотеки, особенно с учетом важности проблем отладки. Мониторинг задач осуществляется на двух уровнях: на первом уровне LAM/MPI позволяет делать «моментальные снимки» состояний процессов и сообщений в любой момент работы приложения. В этих снимках
находятся все данные о синхронизации плюс карта/сигнатура типов данных, а также данные о содержании сообщений и принадлежности сообщающихся приложений к той или иной группе. На втором уровне библиотека MPI способна накапливать и выдавать данные о межпроцессорных обменах, которые можно визуализировать как во время исполнения задачи, так и после ее завершения.
В установке и использовании библиотека LAM/MPI практически не отличается от MPICH2. LAM/MPI распространяется свободно в виде исходных текстов, доступны версии для Linux 2.4.x/IA32/x86, Mac OS X, OpenBSD x86, Solaris 32-/64-бит.
Программное обеспечение Open MPI (http://www.open-mpi.org/) позволяет научным и инженерно-техническим работникам создавать приложения, широко использующие параллельные и распределенные вычислительные ресурсы. Программное обеспечение Open MPI дает возможность прозрачно запускать приложения поверх любых сетевых технологий: Gigabit Ethernet, 10 Gigabit Ethernet или I nil nib and. Одна из основных целей проекта Open MPI состоит в привлечении к решению этих задач всех специалистов, занимающихся высокопроизводительными вычислениями, включая специалистов из коммерческого сектора.
Open MPI появилось в результате развития пакета LAM/MPI и содержит ряд улучшений и обновленных функций, поэтому разработчики рекомендуют постепенную миграцию с LAM/MPI на Open MPI. Библиотека распространяется свободно в виде набора исходных текстов для 32- и 64-битных операционных систем Linux, OS X и Solaris. Планируется также поддержка линейки Microsoft Windows.
В португальском университете Coimbra разработан WMPI II (http://www.criticalhpc.com/), который является коммерческой реализацией MPI-2 для 32- и 64-битных систем на базе семейства Microsoft Windows и дистрибутивов Linux. WMPI II отличается простотой установки и применения. Работает с компиляторами Fortran 77/90, C и последними версиями C++. На Linux поддерживаются компиляторы GNU. В среде Win32 для интеграции пакета в существующий проект в нем необходимо сделать небольшие изменения, указанные в документации. Скомпилированный PE-файл запускается без загрузчиков. Чтобы он работал, для консольных программ требуется динамическая библиотека CVWMPI.DLL, а для графических программ требуется библиотека VWMPI.DLL. В текстовом файле задается количество и место запуска ветвей. Файл имеет то же имя, что и EXE-файл, а также расширение .PG. Ниже приведены строки файла:
local Количество ветвей
Адрес машины Количество ветвей Имя EXE файла
Когда EXE-файл запускается, то осуществляется функция MPI_Init, поэтому при чтении PG-файла ветвь номер 0 уже создана. Общее количество ветвей на единицу больше, чем указываемое количество ветвей в PG-файле. Таким образом, для запуска приложений, состоящих из 5 ветвей, на вычислительной машине надо сделать запись в PG-файле: local 3.
Пользовательская часть MPI-приложения профилируется стандартными средствами (от Microsoft и аналогичными).
Чтобы дать сравнительную количественную оценку разных библиотек, можно воспользоваться специальными пакетами измерения производительности для кластерных систем.
Первый рассматриваемый пакет LB (от англ. benchmark - точка отсчета) - средство для сравнения производительности компьютеров при работе с плавающей точкой - появился в 1979 г. как дополнение к библиотеке Linpack (набор подпрограмм для решения различных систем линейных алгебраических уравнений (СЛАУ)) для оценки времени решения системы уравнений при помощи пакета Linpack. Затем появилось его расширение - пакет LAPACK. Этот тест предназначен для решения СЛАУ Ax = f методом LU-разложения с выбором ведущего элемента столбца, где A - плотно заполненная матрица размерности N. Программа применялась для тестирования отдельных ЭВМ при помощи матрицы размерности N=100. По мере увеличения вычислительных мощностей ЭВМ размерность матрицы увеличилась до N=1000. С тех пор такая размерность применяется для тестирования на FLOPS (от англ. Floating Point operations per Second - операции с плавающей точкой в секунду) отдельных компьютеров. Список 500 самых быстрых суперкомпьютеров Top500.org основывается на оценке производительности кластеров по версии LB.
Второй пакет - NAS Parallel Benchmarks (NPB).
Разработан в начале 90-x гг. агентством NASA (от англ. National Aeronautics
and Space Administration - Национальное управление по аэронавтике и исследованию космического пространства США) для оценки необходимой производительности аппаратного обеспечения для решения задач при организации параллельных вычислений на кластерах.
Алгоритм оценки необходимой производительности аппаратного обеспечения для решения задач, в том числе для анализа состояния параллельного приложения (программы) после аварийного завершения, приведен на рис. 1. Он состоит из синтетических задач параллельного программирования, характерного для гетерогенных сред. Эти задачи: ядра и псевдоприложения, эмулирующие вычисления на реальных тестах сетевых узлов, определение их производительности и пропускной способности с учетом объединения вычислительных средств в метакомпьютерную систему.
Приведенные в алгоритме ядра используют алгоритмы приложений, цель - решение СЛАУ специального вида, поэтому данные приложения реализуют итерационные методы решения СЛАУ (SP, BT, LU).
Тест SP (Scalar Pentadiagonal) выполняет решение нескольких независимых систем скалярных уравнений - пентадиагональных матриц с преобладанием недиагональных членов.
Тест BT (Block Tridiagonal) решает серии независимых систем уравнений - блочных трехдиагональных матриц с преобладанием недиагональных элементов.
Тест LU (Lower-Upper Solver) находит конечноразностное решение трехмерной системы уравнений
Тест для определения вычислительной характеристики сетевого узла.
Ядро ЕР (Embarrassing Parallel), основанное на порождении пар псевдослучайных, нормально распределенных чисел (гауссово распределение)
I --------
Тест для определения возможности системы выполнять дальние и короткие передачи данных. Ядро MG (simple 3D MultiGrid benchmark) - приближенное решение трехмерного уравнения Пуассона Du=f на сетке размером NxNxNс периодическими граничными условиями, где Доопределяется классом теста
Тест для оценки скорости передачи данных на длинные расстояния при отсутствии какой-либо регулярности. Ядро CG (solving an unstructured sparse linear system by the Conjugate Gradient method) -решение неупорядоченной, разряженной системы линейных алгебраических уравнений методом сопряженных градиентов
Тест для оценки эффективности взаимодействия по передаче данных между удаленными процессорами. Ядро FT (A 3-D Fast-Fourier Transform partial differential equation benchmark) - численное решение уравнения в частных производных Su(x,t)/Si с использованием прямого и обратного быстрого преобразования Фурье
I ------
Тест для выявления потенциала компьютера по вьшолнешно межпроцессорного взаимодействия. Ядро IS (Parallel Sort of small Integers) - параллельная сортировка
N целых чисел
Рис. 1. Алгоритм тестирования производительности сетевых узлов в гетерогенных средах
Рис. 2. Производительность WMPI II и MPICH в Windows при тестировании с помощью пакетов программ NAS Parallel Benchmark
Рис. 3. Производительность WMPI II, MPICH и LAM в Linux при тестировании с помощью Linpack benchmark
Рис. 4. Производительность WMPI II, MPICH и LAM в Linux при тестировании с помощью NAS Parallel Benchmark
Навье-Стокса для сжимаемой жидкости или газа. Применяется метод LU-разложения с использованием SSOR (метод симметричной последовательной верхней релаксации). Результаты тестирования в Linpack в среде Windows приведены в табл. 1.
Пакет WMPI II показывает результат на 40% лучше в тесте на вычислительную мощность при уменьшенных задержках.
Таблица 1. Производительность пакетов WMPI II и MPICH в Windows при тестировании с помощью Linpack benchmark
Пакет Показатель производительности
Linpack (GFLOPS) Задержки, мс Пропускная способность, МБ/с
WMPI II 11,86 58,8 11,3
MPICH 8,39 64,6 11,3
Таблица 2. Показатели скорости WMPI II, MPICH и LAM в Linux при тестировании с помощью Linpack benchmark
Пакет Показатель производительности
Задержки, мс Пропускная способность, МБ/с
WMPI II 68,7 11,2
MPICH 66,7 11,1
LAM 53,4 11,2
Таблица 3. Сравнение характеристик пакетов WMPI II и LAM
Характеристика WMPI II LAM/MPI
Поддерживаемые среды Windows, Linux Linux, OS X, Solaris
Компиляторы Fortran, C, C++, GNU Fortran, C, C++, GNU
Стоимость От 350 у.е. Бесплатно
Результаты тестирования в NAS Parallel Benchmark (Class B) изображены на рис. 2.
Результаты тестирования в среде Linpack изображены на рис. 3.
В среде Linux пакет LAM/MPI оказался на 5% менее производительным, чем универсальный WMPI II, но показал минимальный результат по сетевым задержкам, данные по задержкам и пропускной способности приведены в табл. 2.
Результаты тестирования в среде NAS Parallel Benchmark (Class B) изображены на рис. 4.
Учитывая практически идентичную производительность WMPI II и LAM/MPI, для правильного выбора следует сравнить остальные их характеристики (табл. 3).
Таким образом, пакет WMPI II можно рекомендовать к применению только в случае необходимости использования операционной системы Windows на нескольких узлах сети. Если же использовать Windows не планируется, то хорошей рекомендацией будет выбор LAM/MPI и последующее обновление до Open MPI.
ЛИТЕРАТУРА
1. Немнюгин С.А., Стесик О.В. Параллельное программирование для многопроцессорных вычислительных систем. Спб.: Бхв-Петербург, 2002.
2. Баканов В.М. Программное обеспечение компьютерных сетей и информационных систем: Курс лекций. М.: МГУПИ, 2003.
Поступила 05.05.2010 г.