Отмена заданий, отправленных до даты или с идентификатором задания ниже заданного целого числа

#slurm

#slurm

Вопрос:

Я понял, что задания, отправленные с предыдущей версией моего программного обеспечения, бесполезны из-за ошибки, поэтому я хочу отменить их. Однако у меня также есть новые задания, которые я хотел бы продолжать выполнять. Все задания имеют одинаковое имя задания и выполняются в одном разделе.

Я написал следующий скрипт для отмены заданий с идентификатором ниже заданного.

 #!binbash

if [ $1 ]
then
    MAX_JOBID=$1
else
    echo "An integer value is needed"
    exit
fi

JOBIDLIST=$(squeue -u $USER -o "%F")

for JOBID in $JOBIDLIST
do
    if [ "$JOBID" -lt "$MAX_JOBID" ]
    then
        echo "Cancelling job "$JOBID
        scancel $JOBID
    fi
done
  

Я бы сказал, что это повторяющаяся ситуация для кого-то, кто разрабатывает программное обеспечение, и мне интересно, есть ли прямой способ сделать это с помощью команд slurm. В качестве альтернативы, используете ли вы некоторые приемы, такие как добавление идентификатора программного обеспечения к имени задания, чтобы преодолеть подобные ситуации?

Ответ №1:

К сожалению, в таких сценариях нет прямого способа отменить задание.

В качестве альтернативы, как вы указали, полезно присвоить заданию имя задания, добавив версию / фиксацию программного обеспечения вместе с именем задания. В этом случае вы можете использовать, scancel --name=JOB_NAME_VERSION чтобы отменить все задания с этим именем задания.

Кроме того, если могут использоваться вновь отправленные задания hold scontrol hold <jobid> , а затем все PENDING задания могут быть отменены с помощью scancel --state=PENDING

В моем случае я использовал аналогичный подход (например, ваш), squeue передав вывод awk и отменив первые N заданий, которые я хотел удалить. Это однострочный скрипт.

Что-то вроде этого:

например: squeue arguments | awk 'NR>=2 amp;amp; NR<=N{print $1}' | xargs /usr/bin/scancel

Комментарии:

1. Хороший подход! Я уверен, что это полезно во многих случаях.

Ответ №2:

В дополнение к предложениям @j23, вы можете организовать свои задания с

  • массивы заданий ; если все ваши задания похожи с точки зрения сценария отправки, сделайте их массивом заданий и отправляйте по одному массиву заданий для каждой версии вашего программного обеспечения. Затем вы можете отменить весь массив заданий всего одной scancel командой

  • система управления рабочими процессами; они позволяют легко отправлять и управлять наборами заданий (возможно, в разных кластерах)

Комментарии:

1. Я использую массивы заданий для группировки конфигураций параметров, но, как вы сказали, это первый подход, который следует рассмотреть.

2. Я не знал о системах управления рабочими процессами, которые вы упоминаете. Спасибо за предложение. Я всегда использовал slurm непосредственно из командной строки. Нужны ли им права администратора в кластере для установки? На первый взгляд кажется, что Firework и Lugi нуждаются в привилегиях администратора, slurm-pipelines не нужны, и я не уверен, действительно ли Bosco нужны привилегии в slurm sever. Это правильно?

3. Для установки некоторых из них могут потребоваться права администратора, но в большинстве случаев их не нужно устанавливать в кластере. Они устанавливаются либо на ваш персональный компьютер, либо на выделенный сервер. Fireworks лучше всего подходит для командной работы на выделенном сервере, в то время как Bosco больше подходит для личного использования на вашем ноутбуке. О других я знаю меньше.