Во всю историю вычислительной техники не было момента, чтобы уровня развития вычислительной техники было достаточно для решения всех стоящих перед человечеством задач. Постоянно ставятся новые, все более сложные задачи, требующие все более мощных вычислительных ресурсов для своего решения. И современные технологии создания вычислительной техники подошли к рубежу, когда дальнейшее наращивание скорости работы индивидуальных устройств становится практически невозможным. В связи с этим развитие вычислительной техники пошло по экстенсивному пути, основанному на дублировании вычислительных устройств, которые в параллели могут работать над общей задачей. Вместе с этим родилось параллельное программирование, призванное дать возможность эффективно использовать параллельные архитектуры. И сегодня разработчики программных систем используют параллелизм на всех уровнях, начиная от нескольких конвейеров суперскалярных процессоров, и заканчивая параллельно работающими вычислительными узлами в GRID.
Отдельный класс параллельных архитектур представляют кластерные системы. Кластер - это совокупность вычислительных узлов, объединенных сетью. Параллельное приложение для кластерной системы представляет собой несколько процессов, которые общаются друг с другом по сети. Таким образом, если пользователь сумеет эффективно распределить свою задачу между несколькими процессорами на узлах кластера, то он может получить выигрыш в скорости работы, пропорциональный числу процессоров.
Как правило, кластерные системы крайне интенсивно используются для проведения вычислений. Предприятия и организации чаще всего приобретают кластеры для решения потока задач. И зачастую потребности желающих воспользоваться вычислительными ресурсами превосходят доступный объем ресурсов, поэтому к кластерам можно наблюдать очереди. Ситуация очень похожа на ту, что существовала с мэйнфреймами на заре компьютерной эпохи. В то время для эффективного управления потоками задач создавались так называемые системы пакетной обработки. Пользователи помещали свои задачи в очередь этих систем, а за результатом приходили через нескольких часов, а иногда и дней.
Примерно то же самое происходит сейчас на кластерах, поэтому правильное распределение нагрузки по вычислительным узлам кластера имеет очень большое значение. Этот вопрос приобретает еще большую важность в случае, если кластер имеет неоднородную структуру: различается мощность центральных процессоров, объем оперативной памяти, скорость участков локальной сети. Если не учитывать особенности аппаратуры, то можно наблюдать, как параллельное приложение простаивает, дожидаясь процесса, который был распределен на самый медленный вычислительный узел.
Помимо эффективного планирования запуска задач на кластере, необходимо также автоматизировать процессы приема пользовательских задач, постановки их в очередь, запуска и сбора результатов. Важно обеспечить безопасность использования кластера, его отказоустойчивость, сделав при этом работу с кластером максимально простой, избавляя пользователей от лишних технических подробностей. Все эти факторы приводят к необходимости создания специализированных систем управления кластерами, основная цель которых - предоставить удобные средства эффективного использования кластера.
Долгое время среди операционных систем для кластеров лидировали UNIX-подобные системы. Прежде всего, это объясняется тем, что кластеры функционировали в основном в исследовательских организациях, большинство из которых по историческим причинам ориентированы на использование UNIX. Еще одним сдерживающим фактором распространения Windows на кластерах было отсутствие хорошей системы управления. Впоследствии, однако, многие системы управления были перенесены с UNIX на Windows (Condor, PBS, Platform LSF), но при этом остались трудны в эксплуатации для рядового пользователя Windows.
Отсутствие надежной и удобной системы управления причиняло многочисленные неудобства пользователям Windows-кластеров. В настоящее время многие организации для ведения своего бизнеса приобретают огромные парки вычислительных машин, и довольно часто выбор операционной системы решается в пользу Windows из соображений простоты и удобства использования. Если этой же организации необходимо было проводить массовые параллельные вычисления, то еще совсем недавно у нее практически не оставалось иного выбора, как приобретать Linux-кластер, поскольку стабильного и эффективного решения для Windows не существовало. Отсюда возникали различные сложности, связанные с интеграцией Linux-кластера в Windows-окружение, разработкой программного обеспечения под Linux и так далее. Фактически информационная инфраструктура организаций разделялась на Windows и Linux составляющие, поэтому много усилий уходило на то, чтобы организовать взаимодействие между ними.
9 июня 2006 года Microsoft объявила о выходе собственной системы управления Microsoft Compute Cluster Server 2003 (CCS). Система получила хорошую оценку и была признана очень удобной для небольших и средних Windows-кластеров. Крупные поставщики аппаратного обеспечения, такие как Hewlett Packard и IBM, практически сразу после появления CCS стали предлагать на ее основе интегрированные решения для HPC.
Появление CCS позволило снять целый ряд проблем. Существенно упростились процедуры разворачивания вычислительного кластера, его настройки и включения в информационную инфраструктуру организаций. Что особенно важно, вместе с CCS поставляется набор утилит для разработки параллельных приложений (реализация стандарта MPI2). Разработчики получили возможность разрабатывать и отлаживать параллельные программы в интегрированной среде Microsoft Visual Studio, а затем отправлять свои задания на кластер через дружественный графический интерфейс. Тем самым Microsoft обеспечил максимально простой переход разработчиков от последовательного программирования к параллельному, что раньше требовало приобретения массы дополнительных знаний, в том числе и об устройстве операционной системы Linux. Администратор Windows, даже без опыта в параллельных вычислениях, в состоянии развернуть CCS-кластер буквально за пару часов. Кластеры же на основе Linux при настройке обычно требуют значительных усилий и существенных знаний операци онной системы Linux.
В сентябре 2008 года вышел Microsoft High Performance Computing Server (HPC Server 2008 или HPC 2008) - новая версия системы управления кластером от Microsoft. HPC 2008 является логическим продолжением и наследует все лучшие черты CCS: простоту в использовании, развертывании и администрировании. При этом в HPC 2008 реализовано множество новых возможностей, которые могут существенно повысить отдачу от использования вычислительных ресурсов. Среди новых реализованных возможностей можно отметить следующее:
Microsoft High Performance Computing Server 2008 тесно интегрируется с другими новейшими продуктами и технологиями Microsoft, такими как Microsoft Office SharePoint Server 2007, Windows Workflow Foundation и др., позволяет использовать информацию из Active Directory, что дает возможность встроить высокопроизводительный кластер в имеющуюся Windows - инфраструктуру без привлечения дополнительных специалистов и/или крупных расходов на переобучение сотрудников.
В качестве вычислительных узлов кластера могут быть использованы x64 процессоры семейства Intel Pentium или Xeon c технологией EM64T, 64 битные процессоры семейства AMD Opteron, AMD Phenom, AMD Athlon и совместимые. Минимальный размер оперативной памяти - 512 Мб, минимальный размер свободного дискового пространства - 50 Гб.
На вычислительных узлах кластера должна быть установлена операционная система Microsoft Windows Server 2008 x64 (Standard или Enterprise).
На рис.2.1 условно представлена архитектура вычислительного кластера, функционирующего под управлением HPC 2008:
Дадим определение важнейшим понятиям, используемым в HPC 2008:
Message Passing Interface (MPI, интерфейс передачи сообщений) - открытый стандарт, описывающий интерфейс обмена сообщениями между процессами параллельной программы. MPI объединяет узлы кластера вместе, предоставляя программисту функции, существенно упрощающие сложности, возникающие при программировании обмена данными между сотнями или тысячами узлов. В настоящее время MPI является наиболее часто используемым интерфейсом передачи сообщений на кластерных системах. Наиболее популярной реализации стандарта MPI является MPICH2, созданной в Argonne National Laboratory - организации, разработавшей и сам стандарт MPI.
MS MPI - реализация стандарта MPI (версии 2) от Microsoft. MS MPI основан на MPICH2 и продолжает разрабатываться так, чтобы остаться максимально совместимым с MPICH2. MS MPI включает всю функциональность, описанную в стандарте, за исключением динамического создания процессов.
При работе с HPC 2008 у пользователей остается возможность использовать реализации MPI сторонних компаний (например, MPICH2), но в этом случае часть функций HPC 2008 будет недоступна. Так, корректное освобождение всех ресурсов задания при его принудительной остановке гарантируется только при использовании MS MPI. Кроме того, использование MPI сторонних производителей, возможно, повлечет за собой необходимость ручного выполнения дополнительных административных операций.
HPC 2008 может работать с различными сетевыми интерфейсами, среди которых наиболее популярные кластерные интерфейсы: Gigabit Ethernet, 10 Gigabit Ethernet, Infiniband и Myrinet. Для достижения наибольшей производительности рекомендуется использовать сетевое оборудование тех производителей, которые предоставляют NetworkDirect интерфейс, позволяющий максимально использовать сетевые ресурсы и при этом не загружать центральный процессор вспомогательной работой. Выигрыш от NetworkDirect интерфейса достигается за счет использования более короткой цепочки до сетевого оборудования, без промежуточного копирования пересылаемых данных, возникающего при использовании стандартного механизма сокетов.
Использование нескольких сетевых интерфейсов одновременно может повысить производительность системы за счет разделения служебного трафика и MPI трафика. HPC 2008 поддерживает 5 вариантов сетевых топологий (см. рис. 2.2 ).
Правильный выбор топологии позволяет оптимизировать работу Ваших MPI-программ и системы в целом. При описании топологий используются следующие понятия:
Ниже приведено описание сетевых топологий, используемых в HPC 2008:
Кластера обычно используются несколькими десятками или даже сотнями пользователей одновременно. При этом пользователи могут не иметь глубоких знаний в системном программировании и администрировании кластеров. Поэтому вопрос безопасности при использовании кластеров является очень важным. Пользователь кластера не должен иметь возможность нарушить правила использования вычислительного ресурса, нарушить ход выполнения задач других пользователей, посмотреть чужие результаты работы или изменить настройки системы. HPC Server 2008 использует Active Directory для выполнения всех пользовательских задач и команд администратора в контексте и именно с теми правами, которые имеет запускающий пользователь. Все права закодированы и хранятся вместе с заданием до окончания его выполнения. Административный трафик HPC 2008 пересылается с использованием закодированных каналов, что предотвращает несанкционированный перехват трафика и выполнение административных команд пользователями , не имеющими соответствующих прав. Механизмы безопасности, реализованные в MS MPI, не являются частью стандарта MPI, поэтому при использовании сторонних реализаций MPI информационная безопасность кластера может оказаться под угрозой.