07-09-2023
Страница статистики серверов Викимедиа, сформированная системой Ganglia |
|
Тип |
Мониторинг параллельных вычислений |
---|---|
Написана на | |
Операционная система | |
Языки интерфейса | |
Последняя версия | |
Лицензия | |
Сайт |
www.ganglia.info |
Ganglia (МФА: ˊgæŋglɪə) — масштабируемая распределенная система мониторинга кластеров[1] параллельных и распределенных (англ. grid) вычислений и облачных систем с иерархической структурой. Позволяет наблюдать статистику и историю (загруженность процессоров, сети) вычислений в реальном времени для каждой из наблюдаемых машин.[2][3]
Проект Ganglia был создан в 1998 году в Калифорнийском университете в Беркли как продолжение проекта Millennium, который был инициирован Национальным научным фондом США.[2][4]
Содержание |
Система построена по иерархическому принципу для интеграции кластеров. Для мониторинга состояния кластеров и их объединения используется древовидная система основанная на P2P соединениях и широковещательных протоколах. Система использует широко известные технологии: XML для представления данных, XDR для сжатия данных, RRDtool для хранения и визуализации данных. Она построенна на базе тщательно спроектированных алгоритмов и структур данных, что обеспечивает надежность, позволяет свести к минимому накладные расходы на каждом из узлов и достичь высокой степени параллелизма. Для отображения страниц статистики используется шаблонизатор TemplatePower.[5]
Система была портирована на широкий спектр операционных систем и процессорных архитектур, и в настоящее время используется на более чем 500 кластеров по всему миру. Существует возможность установки Ganglia на следующие операционные системы: Linux (i386, ia64, sparc, alpha, powerpc, m68k, mips, arm, hppa, s390), FreeBSD, NetBSD, OpenBSD, DragonflyBSD, MacOS X, Solaris, AIX, IRIX, Tru64, HPUX и Windows NT/XP/2000/2003/2008.[6] Ganglia используется для связи кластеров в университетских кампусах по всему миру и может масштабироваться для обработки кластеров имеющих до 2000 узлов в своем составе.
Используется для ввода данных из сторонних источников в Ganglia.[10]
/usr/bin/gmetric
gexec (gexecd) — это масштабируемая система удаленного выполнения задач (программ) в кластерах, которая может работать совместно с системой Ganglia. Для удаленного выполнения параллельных (распределенных) заданий используется RSA аутентификация (демон authd).[11] Система прозрачно перенаправляет программные потоки (stdin, stdout, stderr) и события между распределенными процессами, что позволяет создавать распределенную среду переменных окружения и масштабировать систему до более чем 1000 узлов в составе, без потери надежности. Механизм работы основывается на создании древовидного массива всех TCP сокетов между узлами и распространении управляющей информации по всему дереву. С помощью иерархической системы управления, gexec распределяет как и вычислительные задания, так и ресурсы. Это позволяет устранить проблемы, связанные с ограничениями каждого из узлов, например, ограничение на количество открытых дескрипторов файлов.[12]
Для получения списка хостов в кластере gexec опрашивает узел на котором установлен модуль gmond:
# export LD_ASSUME_KERNEL="2.2.5" # export GEXEC_GMOND_SVRS="host1 host2" # gexec -n 0 hostname 1 host1 4 host4 3 host3 0 host0 2 host2
Если узлы на которых запущен gmond недоступны, то список входящих в кластер узлов берется из переменой окружения GEXEC_SVRS
.
В gexec интегрирована возможность распределения нагрузки в кластере. Информация о степени загружености узлов запрашивается у gmond. Для балансировки нагрузки задание запускается на наименее загруженных узлах:
gexec -n 5 program
т.е. вышеописанная команда запустит на исполнение программу program на пяти наименее загруженных узлах кластера.[9]
Для включения поддержки gexec в Ganglia необходимо установить соответствующую переменную в конфигурационном файле gmond.conf:
globals{ ••• gexec = yes ••• }
этот параметр означает, что каждая машина на которой запущен демон gmond будет рассылать специальное сообщение о том, что на машине установлена gexec.
Если вы компилируете Ganglia из исходных кодов, то необходимо явно включить поддержку gexec на стадии конфигурирования:
% ./configure—enable-gexec
gexec можно использовать для выполнения параллельных задач:[13]
gexec -n 12 parprog -in indata.${GEXEC_MY_VNN} -out outdata.${GEXEC_MY_VNN}
каждая из программ parprog получит свою часть данных и сформирует свой результат.
Хранение и визуализация данных (графики) осуществляется в Ganglia с помощью инструментария RRDtool.
|
|
Ganglia.