ЖУРНАЛ «СТА» №3/2004

можете добавлять или убирать хосты «на ходу», но кластер будет распреде- лять работы только среди тех из них, которые ему реально сейчас доступ- ны. Далее master выполняет команду on для каждого имени хоста в его связном списке с целью запустить менеджер ресурса agent на соответст- вующем хосте. Здесь есть одна тон- кость: первоначально я хотел «заста- вить» master выполнить «дословно» команду on f<host> agent . Однако, как выяснилось, эта команда благо- получно выполняется на всех хостах, кроме… собственного, локального (в нашем случае – alpha). Достаточ- но продолжительные эксперименты меня ни к чему не привели, и эту особенность команды on я пока могу относить только к «артефактам»… Поэтому, перебирая хосты, master анализирует их «локальность» и для своего хоста выполняет команду on –n<host> agent (ключиком отлича- ется). Конечно, я мог бы для локаль- ного хоста выполнять просто ./agent , но меня всегда привлекает симметричность – она обязательно потом гдето скажется. В своей программе master я действи- тельно использую операторы типа sytem “on –nalpha agent” , а не spawn() . Это вы- глядит грубо, но сознательно сделано для простоты и наглядности. Как от system “on …” перейти к spawn() , прекрасно опи- сано в статье Д. Алексеева [1]. После выполнения команды on на каждом хосте в списке master появляет- ся «драйвер» /dev/agent . Программа master выполняет опера- цию open() поочерёдно приме- нительно ко всем именам /net/<host>/dev/agent и сохраняет файловые дескрипторы в соответст- вующих элементах Sutelite . Всё! Связь установлена, и я могу делать с хостами всё, что вздумается! Программа master по «списку» devctl( DCMD_CLUST_GTF, …) запраши- вает тактовую частоту процессоров, на которых работают хосты, програм- мы agent отвечают ей, выполнив на своих процессорах SYSPAGE_ENTRY ( qtime )->cycles_per_sec … Master выполняет для всех по- очерёдно devctl( DCMD_CLUST_STS, …) и devctl( DCMD_CLUST_STK, …) , сооб- щая всем хостам: обрабатываем файл такойто, с такойто длиной ключа. После этого в цикле запускаются по- токи (thread), для каждого из хостов выполняющие операцию write() (диа- пазон ключей поиска устанавливается согласно производительности хоста), и каждый поток ожидает результатов этого поиска на операции read() . После синхронизации на барьере (barrier) с завершением работы всех хостов программа master собирает ре- зультаты и представляет их на вывод. Всё. Схематично хронологию распре- делённого вычислительного процесса иллюстрирует рис. 3. Весь текст программного обеспече- ния многомашинного кластера — по- рядка 300 (!) строк кода ( agefun.cpp + master.cpp ). Всё остальное — либо целе- вая задача coder.h , либо типовой менед- жер ресурса agent.cpp из HELP, но даже с учётом этих компонентов полный объём — всего около 690 строк. К ЛАСТЕР И ЖИВУЧЕСТЬ СИСТЕМЫ Работая над данным проектом, я отчётливо понял, что чуть ли не тексту- ально тот же кластер может быть ис- пользован в качестве основы для по- 60 СТА 3/2004 П Р О Г РАММНО Е ОБ Е С П Е Ч Е НИ Е / СИС Т ЕМЫ Р Е АЛ Ь НО ГО В Р ЕМЕ НИ www.cta.ru МОСКВА Телефон: (095) 234-0636 • Факс: (095) 234-0640 • E-mail: info@prosoft.ru • Web: www.prosoft.ru С.-ПЕТЕРБУРГ Телефон: (812) 325-3790 • Факс: (812) 325-3791 • E-mail: root@spb.prosoft.ru • Web: www.prosoft.ru ЕКАТЕРИНБУРГ Телефон/факс: (343) 376-2820/2830 • E-mail: info@prosoft.ural.ru • Web: www.prosoft.ural.ru Начните с простого: начните с LOGO! • Поставка со склада • Образцы для тестирования • Техническая поддержка по всей стране ДИЛЕРЫ ПРОСОФТ: ВОЛГОГРАД : Сервисный центр АИР (8443) 39-38-12/71 http://www.vlz.ru/~air • ВОРОНЕЖ : Воронежпромавтоматика (0732) 53-8692/5968 • ИРКУТСК : Инэкс-Групп-Сервис (3952) 25-8037, 20-0550/0660 • КАЗАНЬ : Шатл (8432) 38-1600 • КЕМЕРОВО : Конкорд-Про (3842) 35-7888/6387 • КРАСНОДАР : ТелеСофт (8612) 69-3883 www.telescada.ru • КРАСНОЯРСК : ТоксСофт-Сибирь (3912) 65-3008 www.toxsoft.ru • МОСКВА : Антрел (095) 775-1721, 269-3321 www.antrel.ru • Н.НОВГОРОД : СКАДА (8312) 36-6644 www.scada-nn.ru • НОВОСИБИРСК : Индустриальные технологии (3832) 34-1556, 34-4665 www.i-techno.ru • ОЗЕРСК : Лидер (35171) 28-825, 23-906 • ПЕНЗА : Технолинк (8412) 55-9001/9813 www.tl.ru • ПЕРМЬ : Пром-А (3422) 19-5566 www.prom-a.ru • РЯЗАНЬ : Системы и комплексы (0912) 24-1182, 27-3181 www.sys-com.ru • САМАРА : Бинар (8462) 66-2214, 70-5045 • САРАТОВ : Трайтек (8452) 52-0101, (095) 733-9332 www.tritec.ru • ТАГАНРОГ : Квинт (8634) 31-5672/0629 • ТУЛА : АТМ (0872) 30-7193, 38-0692 http://atm.tula.net • УЛЬЯНОВСК : Поиск (8422) 37-6567 www.poisk.mv.ru • УФА : Интек (3472) 90-8844, 90-8822 www.intekufa.ru • ЧЕЛЯБИНСК : ИСК (3512) 90-8608, 35-5440 • ЯРОСЛАВЛЬ : Спектр-Трейд (0852) 21-4914/0363 http://spectrtrade.yaroslavl.ru #150 О Б РАТ И Т Е С Ь К Д И Л Е Р У П Р О С ОФ Т В В АШЕ М Г О Р О Д Е !

RkJQdWJsaXNoZXIy MTQ4NjUy