СПОСОБ КОНТРОЛЯ ХОДА ВЫПОЛНЕНИЯ ПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ, ИСПОЛНЯЮЩЕЙСЯ НА ВЫЧИСЛИТЕЛЬНЫХ УЗЛАХ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ
METHOD OF MONITORING USER PROGRAM PROGRESS, RUNNING ON COMPUTATIONAL NODES OF COMPUTER SYSTEM

Изобретение относится к области вычислительной техники, в частности к обеспечению контроля хода выполнения программы пользователя, исполняющейся на вычислительной системе или вычислительном кластере.
Моделирование сложных физических, химических или других процессов производится посредством выполнения параллельной программы на высокопроизводительной вычислительной системе (ВС) или вычислительном кластере. Исполняемый файл (двоичный файл) параллельной программы запускается на компьютерах ВС (вычислительных элементах, вычислительных узлах) программной компонентой системы управления заданиями и вычислительными ресурсами (далее просто системой управления заданиями). При выполнении программы возникают сбои/отказы аппаратных или программных компонентов ВС, поэтому пользователю необходимо контролировать ход выполнения программы по информации стандартной выдачи и диагностики.
Известны способы контроля хода выполнения программы пользователя на ВС, реализованные в программных системах управления заданиями SLURM (simple linux utility for resource management) (https://www.computing.llnl.gov/linux/slurm/download.html) и Torque, (http://www.adaptivecomputing.com/support/download-center/torque-download), заключающиеся в том, что предварительно в каждый вычислительный узел устанавливают программную компоненту системы управления заданиями, посредством которой сохраняют в определенном порядке информацию о ходе выполнения программы в каждом вычислительном узле (информация стандартной выдачи и диагностики), на котором выполняется программа пользователя, затем с помощью системы управления заданиями информацию о ходе выполнения программы записывают в файлы стандартной выдачи и диагностики, расположенные в устройстве хранения файловой системы общего назначения вычислительной системы (сетевой файловой системе или параллельной файловой системе, в которой размещаются исполняемые файлы, файлы с промежуточными данными, исходными текстами программ и т.д.).
В общем случае перед запуском программы на ВС пользователь размещает ее файлы в файловой системе общего назначения, которая подключена к каждому вычислительному узлу ВС. Затем пользователь формирует текстовый файл задания, в котором указывает характерные для задания атрибуты: необходимое для выполнения программы время, название исполняемого файла программы, который должен быть запущен на вычислительных узлах, количество вычислительных узлов, а также названия файлов стандартной выдачи и диагностики. В файлы стандартной выдачи и диагностики после запуска на вычислительных узлах исполняемого файла пользовательской программы система управления заданиями должна записать информацию, которую выполняющаяся программа записывает в стандартную выдачу и диагностику. Эта информация отражает ход выполнения программы.
Поскольку у каждого запущенного на ВС исполняемого файла программы собственные потоки стандартной выдачи и диагностики, то задача системы управления заданиями - считать информацию из всех потоков стандартной выдачи и диагностики и записать ее целиком в файлы стандартной выдачи и диагностики в том же порядке, в котором они были считаны. С помощью служебной утилиты пользователь передает файл задания системе управления заданиями, которая выполняет обработку файла и назначает заданию уникальный идентификатор. Идентификатор задания используется как пользователем, так и системой управления заданиями для контроля и управления заданием. Система управления заданиями выделяет для выполнения программы пользователя указанное в задании количество вычислительных узлов и запускает на них исполняемый файл программы.
В SLURM и Torque одновременно со стартом исполняемого файла пользовательской программы на первом, выделенном для выполнения программы пользователя, вычислительном узле запускается программная компонента системы управления заданиями, которая осуществляет обработку (сбор, буферизацию и запись) информации стандартной выдачи и диагностики. Поскольку процесс обработки информации осуществляется одновременно с выполнением программы, то он мешает расчетам, так как им используются аппаратные ресурсы вычислительного узла, которые должны полностью принадлежать программе. Кроме этого, сбой программных компонентов на данном вычислительном узле приводит к потере необработанной информации.
Для повышения отказоустойчивости процесса обработки информации стандартного выдачи и диагностики в Torque реализован способ, когда система управления заданиями записывает информацию во временные файлы на одном вычислительном узле. Временные файлы система управления заданиями размещает на устройстве хранения информации, которое подключено только к данному вычислительному узлу. Однако такой способ неудобен для пользователя, поскольку файлы становятся доступны для анализа информации лишь после завершения работы программы. Способ в Torque повышает устойчивость к сбоям файловой системы, однако не позволяет пользователю контролировать ход программы в процессе ее выполнения. Кроме этого, в случае вычислительных узлов, которые загружают операционную систему по сети, данный способ неприемлем из-за ограниченного размера электронного диска, размещаемого в оперативной памяти вычислительного узла.
Таким образом, способы контроля хода выполнения программы пользователя, обеспечиваемые такими системами, как SLURM, Torque, наиболее близки к заявляемому способу по технической сущности, и способ контроля хода выполнения программы пользователя, реализованный в SLURM, выбран в качестве наиболее близкого аналога.
Недостатками способа являются:
- влияние на пользовательскую программу:
- использование процессорных ядер, предназначенных для выполнения программы пользователя;
- расход оперативной памяти вычислительного узла для буферизации информации;
- зависимость от сбоев файловой системы общего назначения;
- отсутствие возможности сохранить последние диагностические сообщения, с помощью которых можно отыскать причину сбоя программы пользователя на вычислительных узлах ВС;
- отсутствие возможности определить сбой/отказ пользовательской программы.
Технические результаты, на достижение которых направлено заявленное изобретение, заключаются в повышении эффективности выполнения программы пользователя, отказоустойчивости (сбоеустойчивости) процесса контроля хода выполнения пользовательской программы, расширение функциональных возможностей.
Данный технический результат достигается тем, что в способе контроля выполнения программы пользователя, исполняющейся на вычислительных узлах вычислительной системы, заключающемся в том, что предварительно в каждый вычислительный узел устанавливают программную компоненту системы управления заданиями, посредством которой сохраняют в определенном порядке информацию о ходе выполнения программы в каждом вычислительном узле, выделенном для выполнения программы пользователя, затем с помощью установленной программной компоненты информацию о ходе выполнения программы записывают в файлы стандартной выдачи и диагностики, размещенные в устройстве хранения файловой системы общего назначения вычислительной системы, обрабатывают записанную информацию, новым является то, что дополнительно программную компоненту системы управления заданиями устанавливают на служебном сервере, на котором обрабатывают полученное задание пользователя, присваивают ему идентификатор и передают на соответствующий вычислительный узел команду запуска исполняемого файла программы, одновременно с этим на служебном сервере запускают программную компоненту «контроль и формирование файлов стандартной выдачи и диагностики», информацию о ходе выполнения программы на вычислительных узлах сохраняют в распределенный программный буфер, обеспечивающий временное хранение информации; затем данную информацию записывают во временные файлы стандартной выдачи и диагностики дополнительного устройства хранения информации с присвоением названия каждому файлу и формируют ссылки на созданные временные файлы на устройстве хранения файловой системы общего назначения вычислительной системы для осуществления текущего контроля хода выполнения программы пользователя, после выполнения программы пользователя удаляют ссылки на временные файлы и на их место сохраняют временные файлы стандартной выдачи и диагностики, при этом определенную часть информации о ходе выполнения программы сохраняют в базу данных системы управления заданиями на служебном сервере.
Выполнение обработки и промежуточного хранения информации о ходе выполнения программы пользователя вне файловой системы общего назначения и вне вычислительных узлов позволяет выполняющейся программе монопольно использовать ресурсы вычислительных узлов, а также снизить зависимость процесса обработки от сбоя/отказа устройства хранения файловой системы общего назначения. Кроме этого, обеспечивается возможность одновременно с выполнением программы пользователя анализировать и контролировать ход выполнения пользовательской программы, своевременно найти причину сбоя/отказа выполнения программы, прекратить выполнение программы из-за неправильных промежуточных результатов или ее зависания. В случае зависания программы описываемый способ позволяет освободить вычислительные ресурсы для выполнения других заданий (программ) пользователей. Хранение после завершения программы пользователя определенной части информации о ходе ее выполнения в базе данных системы управления заданиями гарантирует наличие информации о последнем этапе выполнения программы, в том числе информации о сбоях системных программ, завершении пользовательской программы при определении ее зависания даже в случае удаления файлов стандартной выдачи и диагностики. В совокупности все это повышает эффективность выполнения программы пользователя, эффективность использования вычислительных ресурсов вычислительной системы, сбоеустойчивость/отказоустойчивость процесса контроля хода выполнения программы пользователя, расширяет функциональные возможности системы управления заданиями в целом.
На фигуре представлена структурная схема вычислительной системы, в которой реализован заявляемый способ контроля хода выполнения программы пользователя, исполняющейся на ее вычислительных узлах (далее способ контроля хода выполнения программы пользователя).
Вычислительная система содержит блок 1 вычислительных узлов, распределенный программный буфер 2, служебный сервер 3, дополнительное устройство 4 хранения информации, устройство 5 хранения файловой системы общего назначения вычислительной системы.
Группа входов-выходов блока 1 вычислительных узлов соединена с группой входов-выходов устройства 5 хранения файловой системы общего назначения вычислительной системы посредством коммуникационной сети, например, Ethernet. Группа выходов блока 1 вычислительных узлов соединена с первой группой входов распределенного программного буфера 2. Вторая группа входов распределенного программного буфера 2 соединена с первой группой выходов служебного сервера 3. Вторая и третья группы выходов служебного сервера 3 соединены соответственно с первыми группами входов устройства 5 хранения файловой системы общего назначения вычислительной системы и дополнительного устройства 4 хранения информации. Группа выходов распределенного программного буфера 2 соединена со второй группой входов дополнительного устройства 4 хранения информации. Четвертая группа выходов служебного сервера 3 соединена с группой входов блока 1 вычислительных узлов. Группа выходов дополнительного устройства 4 хранения информации соединена со второй группой входов устройства 5 хранения файловой системы общего назначения вычислительной системы. Группа входов служебного сервера 3 является группой входов файлов заданий пользователей.
1
m
1
m
1
2
m
Блок 1 вычислительных узлов содержит вычислительные узлы ВУ, …, ВУ, где m=1, 2, …, соединенные между собой, например, по топологии «звезда». Вычислительные узлы ВУ, …, ВУ предназначены для выполнения пользовательских программ. В каждый вычислительный узел ВУ (ВУ, …, ВУ) установлено и выполняется специализированное программное обеспечение, включающее программную компоненту системы управления заданиями.
Распределенный программный буфер 2 может быть реализован на отдельных служебных компьютерах Б1, …, Бk, где k=1, 2, …. Распределенный программный буфер 2 предназначен для временного хранения информации о ходе выполнения программ пользователей. Буферизацию информации обеспечивает специализированная распределенная по служебным компьютерам Б1, …, Бk, программа, которая использует для временного хранения информации оперативную память компьютеров.
1
2
m
В служебный сервер 3 установлено и выполняется программное обеспечение системы управления заданиями, включающее программу «контроль и формирование файлов стандартной выдачи и диагностики». Данная программа контролирует зависание/сбой программы пользователя и формирует временные файлы стандартной выдачи и диагностики. Также в служебном сервере 3 размещена база данных (на фигуре не показана) системы управления заданиями. Система управления заданиями, функционирующая на служебном сервере 3, формирует и посылает на ВУ (ВУ, …, ВУ) команды запуска на них исполняемого файла программы пользователя (название файла предварительно указывается пользователем в задании), а также считывает из распределенного программного буфера 2 и записывает во временные файлы, размещаемые в дополнительном устройстве 4 хранения информации, информацию о ходе выполнения программы пользователя (информацию стандартной выдачи и диагностики программ).
Дополнительное устройство 4 хранения информации во временных файлах стандартной выдачи и диагностики о выполняющихся на ВС программ пользователей, предназначено для хранения файлов стандартной выдачи и диагностики на время выполнения на ВС пользовательских программ. Устройство может быть выполнено в виде жесткого диска или дискового массива.
1
2
m
1
2
m
Устройство 5 хранения файловой системы общего назначения вычислительной системы предназначено для хранения исполняемых файлов пользовательских программ, файлов с их входными данными, файлов с исходными текстами программ и т.д., в общем случае оно представляет собой несколько дисковых массивов. Запуск исполняемого файла на ВУ (ВУ, …, ВУ) пользовательской программы осуществляется путем его считывания из устройства 5 и передачи по коммуникационной сети на ВУ (ВУ, …, ВУ).
Способ контроля хода выполнения программы пользователя, исполняющейся на вычислительных узлах вычислительной системы, реализуется следующим образом.
1
m
1
m
Для запуска программы на ВУ, …, ВУ вычислительной системы пользователь предварительно формирует файл задания, в котором указывает время, которое должна потратить на расчет программа, название исполняемого файла программы, который система управления заданиями должна запустить на вычислительных узлах ВУ, …, ВУ, а также названия файлов стандартной выдачи и диагностики. Далее пользователь с помощью соответствующей утилиты передает файл задания управляющей программе системы управления заданиями, которая функционирует на служебном сервере 3.
Управляющая программа системы управления заданиями на служебном сервере 3 обрабатывает указанные в задании атрибуты, присваивает заданию идентификатор и по коммуникационной сети посылает программным компонентам системы управления заданиями на вычислительных узлах, например, ВУn, …, BУm, где n<m, служебные сообщения «запустить исполняемый файл программы пользователя». Одновременно с этим для данного задания на служебном сервере 3 запускается экземпляр программы «контроль и формирование файлов стандартной выдачи и диагностики».
На дополнительном устройстве 4 хранения информации посредством данной программы создают временные файлы выдачи и диагностики с соответствующими названиями, а на устройстве 5 хранения файловой системы общего назначения вычислительной системы на созданные временные файлы формируют ссылки с названиями, которые указал пользователь в задании. Используя данные ссылки, пользователь может контролировать ход (этапы) выполнения своей программы, как если бы файлы реально размещались бы в устройстве 5 хранения файловой системы общего назначения вычислительной системы. Выполнив перечисленные действия, программа «контроль и формирование файлов стандартного вывода и диагностики» начинает циклически обращаться к распределенному программному буферу 2, осуществляя поиск информации по идентификатору задания.
1
2
m
1
2
m
После запуска и в процессе выполнения на ВУ (ВУ, …, ВУ) программа пользователя записывает информацию в стандартную выдачу или стандартную диагностику, которую программная компонента системы управления заданиями на ВУ (ВУ, …, ВУ) считывает и записывает в распределенный программный буфер 2. Чтобы облегчить поиск/считывание информации программе «контроль и формирование файлов стандартного вывода и диагностики», информация сопровождается идентификатором задания и отдельными метками (флажками), которыми помечается информация, относящаяся к стандартному выводу или диагностике.
Найдя информацию с требуемым идентификатором задания, программа «контроль и формирование файлов стандартной выдачи и диагностики» считывает ее из распределенного программного буфера 2 и обрабатывает: стандартная выдача и диагностика записываются в отдельные временные файлы в дополнительном устройстве 4 хранения информации. Если пользователь не уверен в том, что программа может успешно завершиться, то он посредством директивы в файле задания дает указание системе управления заданиями контролировать зависание программы.
Способ контроля зависания программы состоит в том, что если в течение некоторого указанного пользователем периода времени нет новой информации из стандартного вывода программы, то она считается зависшей. В этом случае система управления заданиями завершает выполнение программы на вычислительных узлах. После завершения программы система управления заданиями записывает определенную последнюю часть информации о ходе выполнения программы пользователя из временных файлов стандартной выдачи и диагностики в собственную базу данных, которая также находится на служебном сервере 3. Затем ссылки на временные файлы стандартной выдачи и диагностики задания на устройстве 5 хранения файловой системы общего назначения вычислительной системы удаляются. На их место записываются временные файлы из дополнительного устройства 4 хранения информации. Даже если в процессе выполнения программы пользователь намеренно стер ссылки на временные файлы стандартной выдачи и диагностики задания, то система управления заданиями продолжает записывать информацию во временные файлы на дополнительном устройстве 4 хранения информации. После завершения каждого задания определенная последняя часть информации из временных файлов стандартной выдачи и диагностики сохраняется в базу данных, размещенной на служебном сервере 3. Если пользователь удалит перенесенные на устройство 5 файлы, то записанная в базу данных информация даст возможность разобраться в причине, например, нештатного завершения программы.