Динамическая отправка заданий Qsub в кластере SGE в зависимости от нагрузки кластера
-
21-12-2019 - |
Вопрос
Я пытаюсь запустить задания qsub в кластере SGE (Sun Grid Engine), который поддерживает максимум 688 заданий.Я хотел бы знать, есть ли способ узнать общее количество заданий, которые в настоящее время выполняются в кластере, чтобы я мог отправлять задания на основе текущей нагрузки кластера.
Я планирую сделать что-то вроде:подождите 1 минуту и снова проверьте, не превышает ли количество заданий в кластере <688, а затем отправьте задания дальше.
И просто чтобы уточнить, мой вопрос касается знания общего количества вакансий, представленных в кластере, а не только тех вакансий, которые я отправил в настоящее время.
Заранее спасибо.
Решение
Вы можете использовать qstat
, чтобы перечислить задания всех пользователей; Это с awk
и wc
можно использовать для выявления общего количества заданий в кластере:
qstat -u "*" | awk '{if ($5 == "r" || $5 == "qw") print $0;}' | wc -l
.
Вышеуказанная команда также учитывает задания, которые очередят в очереди и ожидают, что должны быть запланированы на вычисленном узле.
Однако кластерные Sysadmins могут запретить пользователям проверить работу, которые не принадлежат им. Вы можете проверить, можете ли вы увидеть работу других пользователей, запустив:
qstat -u "*"
.
Если вы точно знаете, что другой пользователь работает на задании, и все же вы не можете видеть его во время работы вышеуказанной команды, наиболее вероятно, что SYS Admins отключится на эту опцию.
Поспомина: от моего понимания, вы просто обычный пользователь кластера - почему вы даже беспокоитесь о том, чтобы отправить работу таким образом. Почему бы вам не представить все хочее задание, и если кластер не может запланировать работу, она просто поставит их в состояние qw
и расплатит их, когда SGES SELE SEES является наиболее подходящим временем.
Другие советы
В зависимости от того, как настроен кластер, использование массива заданий (-t
вариант для qsub
) обойдет этот предел.
У меня установлены аналогичные ограничения на максимальное количество заданий, которые может отправить один пользователь.Это ограничение относится к отдельным экземплярам qsub
и ни один массив заданий не отправляет потенциально много задач (этот предел устанавливается через другую переменную конфигурации, max_aj_tasks
).